陈奇网络工作室

k8s集群中的服务

云计算

有两种方法可以发现k8s集群中的内部服务:

1、通过变量发现

您只能获取同一命名空间中的变量。

变量是按顺序获取的,必须先创建被引用的变量。

2.通过dns发现。

kube-system中有dns,可以自动发现所有名称空间中服务的clusterIP。

因此,在同一个命名空间中,当一个服务访问另一个服务时,可以通过服务名直接访问。

只要创建了一个服务(不管它是在哪个ns中创建的),它就会自动在kube-system中向DNS注册。

如果是不同的名称空间,可以通过服务名来访问。命名空间名称。

服务是一个抽象对象,它定义了一组逻辑单元和访问它们的策略。

服务主要实现集群内部通信和基于四层(如端口)的内外通信。

服务用于为pod提供固定统一的访问接口和负载均衡能力,借助新一代DNS的服务发现功能解决客户端发现和访问容器化应用的问题。

服务的地址不会改变,它通过标签选择器与后端的pod相关联。

k8s集群中的三种ip:

1.节点IP:节点IP:节点的IP地址。

2.Pod IP:Pod的IP地址。

3.群集IP:服务的IP地址,不允许ping。

k8s集群中的服务类型

$ kubectl解释svc.spec.type

默认为ClusterIP。有效选项包括ExternalName、ClusterIP、NodePort和LoadBalancer。

如果不使用type字段,默认为ClusterIP类型。

1.ClusterIP:服务通过集群的内部IP公开。如果选择该值,则只能在集群内访问服务,这也是默认的ServiceType。

k8s集群内部流量趋势:

内部客户端服务(集群ip:端口)端点(IP和端口列表)应用程序pod(端口)

2.NodePort:通过每个节点上的IP和静态端口公开服务。节点端口服务将被路由到自动创建的ClusterIP服务。通过请求:您可以从集群外部访问节点端口服务。

节点端口类型的业务数据流方向:

外部用户外部lb节点端口服务端点应用程序盒。

3.负载均衡器类型的服务应用在公共云环境中。

4.ExternalName类型的服务用于实现对集群外部服务的pod访问。

数据流方向:内部pod-服务-外部服务

这种类型的服务没有serviceIP,没有nodeport,没有标签选择器,并且需要CNAME来解析记录。

每个工作节点的kube-proxy完成内部流量转发。

代理有三种工作模式:

1.用户空间代理模式

2.iptables代理模式

3.ipvs代理模式

ipvs模式和iptables模式的唯一区别是请求流量的调度功能由ipvs完成,其他功能仍然由iptables完成。

创建服务有两种方式:

1.使用kubectl expose命令。

2.定义资源列表文件

$ kubectl解释svc.metadata

字段:

标签

名称# SVC的名称。

命名空间

$ kubectl解释svc.spec

字段:

集群Ip #svc的IP地址。

港口

选择器

类型

$ kubectl解释svc.spec.clusterIP

clusterIP是服务的IP地址,通常由主服务器随机分配。

有效值为“无”、空字符串(“”)或有效的IP地址。

不需要代理时,可以为无头服务指定“None”。

仅适用于ClusterIP、NodePort和LoadBalancer类型。如果类型为ExternalName,则忽略。

Clusterip表示svc的ip地址,通常自动获取,无需手动指定。如果不使用该字段或指定其值为空,则意味着自动获取ip地址。

如果您指定一个None值,这意味着svc是一个无头服务。

当svc的类型为ExternalName时,不能使用此字段。

$ kubectl解释svc.spec.ports

字段:

1、端口:

指服务公开的端口。当使用yaml文件创建svc时,它是一个必需选项,当使用命令创建SVC时,它可以不指定。如果未指定,将继承pod中的containerPort。

2、节点端口:

指节点NodePort(仅当类型为节点端口或负载平衡器时需要此参数,通常自动生成),用于外部通信。

3、目标端口:

指后端豆荚暴露的端口,就是豆荚中的集装箱港口。

如果既不指定港口又不指定目标港,那么港口和目标港都会继承豆荚中的集装箱港口。

如果指定了港口而没有指定目标港,那么目标港会继承港口值,所以此时必须指定目标港值为豆荚中的集装箱港口,不能随便指定端口号,除非港口值和豆荚中的集装箱港口相同(这种情况可以不指定目标港).

当类型为ClusterIP时,流量经过的端口走向是:

维修(服务)(服务的简写)端口(港口)——吊舱端口(目标港)容器端口(集装箱港口)

当类型为节点端口时,流量经过的端口走向是:

节点端口(节点端口)—-svc端口(港口)——吊舱端口(目标港)容器端口(集装箱港口)

使用命令创建集装箱港口是8080)

$ kubectl获得部署

$ ku bectl expose deploy deploy _ name 1

$ kubectl获取服务

$ kubectl删除服务服务名称

$ ku bectl expose deploy deploy _ name 2port=8080

$ ku bectl expose deploy deploy _ name 3port=80target-port=8080

$ ku bectl expose deploy deploy _ name 4port=80target-port=8080type=节点端口

$ kubectl get svc svc_name -o yaml

规格:

集群IP: 10.97.153.130

外部流量策略:群集

端口:

-节点端口:30693

端口:80

协议:TCP

目标港口:8080

卷曲http://10.97.153.130美元

美元卷曲http://192.168.1.243:30693 #243是掌握地址

$ kubectl删除服务服务名称

用yaml文件创建维修(服务)(服务的简写)

apiVersion: v1

种类:服务

元数据:

标签:

ame: mysvc

名称:mysvc

规格:

端口:

-端口:80

目标港口:8080

选择器:

app: mysvc #匹配标签为app: mysvc的后端豆荚

类型:节点端口

不在意的无头类型的服务:

该服务没有IP,客户端不经过服务,而是直接访问后端的豆荚

无头服务的类型不能是节点端口。

种类:服务

规格:

集群IP:无#(该参数设置为没有人即可成为无头服务)

查看某个服务下有哪些pod:

$ kubectl获取服务

$ kubectl get svc svc_name -o yaml

$ kubectl描述svc服务名称

选择器:run=nginx1

$ kubectl get pod -l run=nginx1

验证通过域名服务器(域名服务器)发现服务

$ ku bectl get pod-n kube-system | grep DNS

kube-dns集群IP 10.96无53/UDP,53/TCP

$ yum安装bind-utils -y

$ dig-t A SVC _ name。默认。SVC。集群。本地的。@ 10 .96 .0 .10

$ kubectl get svc svc_name -o yaml

在豆荚中验证十进位计数制服务发现

运行busyboxRM-itimage=busybox sh

/# cat /etc/resolv.conf

名称服务器

搜索默认。SVC。集群。本地SVC。集群。本地集群。当地example.com

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理商官网:www.chenqinet.cn

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3