k8s-深入理解Service(为Pod提供负载均衡和发现)

一、Service存在的意义

k8s-深入理解Service(为Pod提供负载均衡和发现)_第1张图片

二、Service的定义和创建

Pod与Service的关系

k8s-深入理解Service(为Pod提供负载均衡和发现)_第2张图片

Service的定义和创建

k8s-深入理解Service(为Pod提供负载均衡和发现)_第3张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第4张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第5张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第6张图片

三、Service使用NodePort对外暴露应用

四种类型,常用的三种:

k8s-深入理解Service(为Pod提供负载均衡和发现)_第7张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第8张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第9张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第10张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第11张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第12张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第13张图片

指定Service的NodePort端口

k8s-深入理解Service(为Pod提供负载均衡和发现)_第14张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第15张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第16张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第17张图片

在实际生产中,k8s的集群不会直接暴露在公网中,一般会在k8s集群前加一个负载均衡器,这个负载均衡器暴漏在公网。

k8s-深入理解Service(为Pod提供负载均衡和发现)_第18张图片

四、Service负载均衡实现之iptables

Service代理模式

k8s-深入理解Service(为Pod提供负载均衡和发现)_第19张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第20张图片

k8s默认使用iptables模式,如果要使用IPVS模式,需要单独启用IPVS模式,见下一小节。

k8s-深入理解Service(为Pod提供负载均衡和发现)_第21张图片

查看iptables关于指定Service的负载均衡规则:

k8s-深入理解Service(为Pod提供负载均衡和发现)_第22张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第23张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第24张图片

五、Service负载均衡实现之iptables

k8s-深入理解Service(为Pod提供负载均衡和发现)_第25张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第26张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第27张图片

修改后,需要重新加载ConfigMap,有一个简k8s-深入理解Service(为Pod提供负载均衡和发现)_第28张图片单粗暴的方式,删除任一一个Pod,会自动重新加载ConfigMap。

k8s-深入理解Service(为Pod提供负载均衡和发现)_第29张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第30张图片

查看ipvs规则,需要安装一个辅助工具

k8s-深入理解Service(为Pod提供负载均衡和发现)_第31张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第32张图片

下面就是当前这个Pod设置Service暴露后,在IPVS的实际规则

k8s-深入理解Service(为Pod提供负载均衡和发现)_第33张图片

rr - 轮询

实际上在宿主机上创建了一个虚拟网卡,用来接收内部流量请求

k8s-深入理解Service(为Pod提供负载均衡和发现)_第34张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第35张图片

六、Service的DNS名称解析

创建一个临时的Pod,验证通过ServiceName访问Pod

k8s-深入理解Service(为Pod提供负载均衡和发现)_第36张图片

k8s-深入理解Service(为Pod提供负载均衡和发现)_第37张图片

正常解析到了,在程序代理里,可以使用ServiceName替换以前写的IP。

k8s-深入理解Service(为Pod提供负载均衡和发现)_第38张图片

可以看到你请求的ServiceName,本质请求的是CoreDNS,CoreDNS保存有从K8s获得的A记录,然后返回真实服务IP。

k8s-深入理解Service(为Pod提供负载均衡和发现)_第39张图片

七、iptables与ipvs对比

k8s-深入理解Service(为Pod提供负载均衡和发现)_第40张图片

Iptables有性能衰减,k8s已将IPVS加入,IPVS性能非常稳定,建议使用IPVS。

你可能感兴趣的:(k8s,kubernetes,容器,云原生)