当前位置: 首页 > news >正文

k8s网络服务

k8s 中向外界提供服务的几种方法port-forwardNodePort,以及 更加常用的提供服务的资源ingress。

1  kubectl port-forward service/redis 6379:6379  现在k8s中有一个pod运行在6379,本机访问映射到6379上,它可以针对部署,服务,pod类型,效果相同

启用后会占用当前终端的标准输出,可以在后面添加&来指定后台运行:

kubectl port-forward service/redis 6379:6379 &

如图在前台运行情况:它会监听虚拟机的127.0.0.1的6379端口转发到port中去从而能访问资源,但没有NodePoint使用的多

更改收听地址:

Kubectl 默认绑定127.0.0.1(IPv4) 和::1(IPv6) 地址上的本地端口。您可以通过在运行命令–address时提供标志来指定自己的 IP 集:port-forward2 NodePort 映射服务到节点端口。

kubectl port-forward deployment/mysql :3306 --address 127.0.0.1,192.168.0.1

该标志只接受 IP 地址和localhost关键字。后者被解释为包含127.0.0.1and ,当省略::1时匹配命令的默认值。–address、port-forward可以将 pod 临时映射出来,一般用于测试资源是否可用,在生产环境并不会大规模应用。

2 服务非代理模式NodePort

相对于上一种port-forward来说,这一种要正式的多,NodePort可以将其 转发到所有 k8s 节点的指定端口上,并且不会像port-forward一样在前台运行。

kubectl create deployment redis --image=redis 创建一个部署

kubectl expose deployment redis --type=NodePort --port=6379 暴露一个服务,并且它能实现负载均衡根据集群ip访问不同主机下的指定端口,可以查看服务详情minikube service 加服务名如

,其中url中的ip是pod所在的上层虚拟环境ip地址,虚拟机可以根据这个虚拟ip环境中的port进行资源访问,问题?现在虚拟机加pod所在的虚拟ip才能访问,现在我想虚拟机直接访问下层的虚拟ip的环境,这就用到上面的第一个,使用kubelctl将本地ip和pod资源直接绑定,假设虚拟机环境ip为192.168.56.2,kubectl在该环境下,连接的其他环境的pod,环境ip地址是192.168.67.2,现在使用nodepoint的映射单口加ip直接就能访问,要kubectl访问它所连接到的远程资源,就把它当成代理,监听本地请求然后转发响应,方式如上默认监听是127.0.01的地址如果ip想对外使用可以监听多个,如下:kubectl port-forward service/redis 6379:6379 --address 127.0.0.1,192.168.56.1

kubectl port-forward --address 0.0.0.0  service/redis 6379:6379 使更多虚拟机的ip地址,只要物理机对虚拟机ip能ping通就能访问到目标,前提是虚拟机的防火墙要关闭,本人之前就是没关闭物理机无法访问。systemctl status/stop firewalld 它是centos7以后的默认防火墙。

由于防火墙会被用来实现k8s的网络代理服务如kube-peoxy中就是以防火前模块实现所以这里关闭防火墙可以让物理机访问到虚拟机和minikube中的pod,当如果关闭防火墙就意味着minikube环境失去了对虚拟宿主机的依赖,就无法使用网络,更不可能拉取镜像。

这样你在虚拟机中就可以telnet +ip+端口 物理机也能访问该虚拟机

但是这里有个问题,假如我的 k8s 里运行了多个 web 应用服务器,我总不能让用户通过端口号http://domain:8081http://domain:8082来访问不同的 web 服务吧。能不能处理成http://domain/web1http://domain/web2 ...这种形式呢?当然可以,这个就是接下来要说的Ingress

4 使用ssh连接,密钥对或者使用密码连接,直接访问目标服务

ssh -f -N -L 35967:localhost:35967 vagrant@虚拟ip,输入密码会在前台阻塞运行,此时就能访问,它也不能能绕过防火墙,因为它需要kubectl在虚拟机暴露的端口,但可以直接连接minikube来绕过防火墙,直接物理机和目标连接者访问,不需要绕来绕去,转来转去。

3 通过 Ingress 暴露服务:nblogs.com/gaoyanbing/p/14031522✌ 


http://www.mrgr.cn/news/77954.html

相关文章:

  • Intern大模型训练营(十):评测 InternLM-1.8B 实践
  • 前端HTML
  • MyBatis-数据库连接池、属性文件config.properties、类名简化、MyBatis的整体架构
  • C 语言复习总结记录二
  • 大模型(LLMs)增量预训练篇
  • #Uniapp篇:支持纯血鸿蒙发布适配UIUI
  • C#设计模式——抽象工厂模式(重点)
  • Vue3响应式原理
  • Springboot项目搭建-Maven打包编译
  • 演示如何使用 `nn.CrossEntropyLoss` 来计算交叉熵损失,计算损失值的演示代码,和讲解 ,CrossEntropyLoss 损失数值等于零的原因
  • hugo文章支持数学公式
  • oracle 12c查看执行过的sql及当前正在执行的sql
  • 【计算机网络】多路转接之select
  • 新华三嵌入式面试题及参考答案
  • 海信Java后端开发面试题及参考答案
  • 第三十九篇 ShuffleNet V1、V2模型解析
  • Optional类
  • Leetcode 51 N Queens
  • 高频面试题(含笔试高频算法整理)基本总结回顾16
  • pinia的使用
  • 【c++篇】掌握动态内存的奥妙
  • Modern Effective C++ item 15:尽可能的使用constexpr
  • 活着就好20241125
  • 禁用达梦DEM的agent
  • 大数取模 详解
  • 【数据库原理】创建与维护表,DDL数据定义语言