通过5张图了解K8S的Service网络

在介绍service这个api资源对象时,我们已经汇总过service的几种类型:clusterip、nodeport、loadebalancer,其实除了这三个外还有其它的类型,在本章节我们暂且不去讨论。
这三种类型的service,loadbalancer依赖nodeport,而nodeport通常要和clusterip一起使用,如果在service的yaml文件里定义type为loadbalancer,则它会自动创建nodeport,而nodeport也会自动创建clusterip。
下面,再来演绎一下从pod到service的网络变化情况:
1)单个pod之间通信
单个pod和pod之间通信只能通过pod的ip和port来通信,如下图
没有多余的描述,只要知道对方pod的ip以及服务的端口,直接去访问就行了,简单粗暴!
2)pod有多个
当引入deployment,并为pod设置多个副本时,那么提供某一个服务(如nginx服务)的pod就不止一个了,此时即使知道了这些pod的ip,那访问起来也并不方便。所以,这里需要有一个统一入口,其它pod通过这个统一入口去请求该服务(nginx)对应的所有pod。这时就有了service这个资源对象,它主要作用就是用来提供统一入口,也就是说只需要一个ip就能访问所有的pod,而这个入口ip就是clusterip,也就是service的ip。
3)外部资源访问内部pod
有了service,的确可以很方便为内部的pod提供入口,但是在集群外面访问这个内部的资源就没办法了。于是,就有了这个nodeport,使用service的nodeport类型,可以将service的clusterip对应的port映射到每一个node的ip上,映射出去的port范围为30000~32767
4)借助公有云的负载均衡器
使用这个nodeport并不方便,毕竟它带着一个长长的端口号,而且还有一个非常尴尬的问题,就是访问时还得带着node的ip,如果这个node挂掉,那么就无法访问此资源,虽然可以通过另外一个node去访问,但这样太麻烦在!所以,此时的解决方案是:借助三方的负载均衡器,将请求分发到所有的node上,其底层还是nodeport。
总结:service为内部pod的统一入口,内部资源之间可以通过最简单的clusterip进行通信,而外部资源访问需要借助nodeport的形式,但是带着长长端口不方便,于是又衍生了loadbalancer的形式,这种形式需要借助三方的负载均衡器,将请求分发到每一个nodeport上。


显同电子分享舞台LED租赁屏需注意的问题
泰克示波器常见故障及原因分析
乘用车电线束设计验证方法
在Virtuoso中认识PMOS管和NMOS管
半导体前端工艺:金属布线—为半导体注入生命的连接
通过5张图了解K8S的Service网络
氮化镓技术的壁垒是什么 氮化镓晶体管工作原理
小米MAX评测:大屏也有颜值 视频阅读的最佳利器
SGS授予开阳电子AEC-Q100认证证书,助力车规器件可靠性再升级
去黑头仪怎么样?要选用具有医疗标准的品牌
当年安卓旗舰机皇内部做工怎么样?三星S6拆解
电工仪器仪表行业重点发展领域及分类
雨量监测仪有什么作用
背后隐藏的小秘密:4G时代的信号问题
基于Transformer多模态先导性工作
启明信息助力中小企业数智化转型发展
Aiaiai更新AiaiaiPipe二代有线耳塞 售价约276人民币
空气开关有多少种?空气开关选哪个好?
芯片缺货问题已影响到汽车行业?
JAVA简单程序设计实验