kubernetes实践之五十一:kube-proxy运行机制分析

发布时间:2020-08-11 04:16:16 作者:百联达
来源:ITPUB博客 阅读:224
一: Service,Endpoints与Pod的关系
kubernetes实践之五十一:kube-proxy运行机制分析
Kube-proxy进程获取每个Service的Endpoints,实现Service的负载均衡功能

二:Service的负载均衡转发规则
kubernetes实践之五十一:kube-proxy运行机制分析
访问Service的请求,不论是Cluster IP+TargetPort的方式;还是用Node节点IP+NodePort的方式,都被Node节点的Iptables规则重定向到Kube-proxy监听Service服务代理端口。kube-proxy接收到Service的访问请求后,根据负载策略,转发到后端的Pod。

三:kube-proxy工作原理
kubernetes实践之五十一:kube-proxy运行机制分析

1.Service在很多情况下只是一个概念,而真正将Service的作用实现的是kube-proxy服务进程。

2.每个Node节点上都会运行一个kube-proxy服务进程。

3.对每一个TCP类型的Kubernetes Service,kube-proxy都会在本地Node节点上建立一个SocketServer来负责接收请求,然后均匀发送到后端某个Pod的端口上。这个过程默认采用Round Robin负载均衡算法。

4.kube-proxy在运行过程中动态创建与Service相关的Iptables规则,这些规则实现了ClusterIp及NodePort的请求流量重定向到kube-proxy进程上对应服务的代理端口功能。

5.kube-proxy通过查询和监听API Server 中Service与Endpoints的变化,为每个Service都建立一个“服务代理对象”,并自动同步。服务代理对象是kube-proxy程序内部的一种数据结构,它包括一个用于监听此服务请求的SockerServer,SocketServer的端口是随机选择一个本地空闲端口。此外,kube-proxy内部创建了一个负载均衡器-LoadBalancer.

6.针对发生变化的Service列表,kube-proxy会逐个处理:
a. 如果没有设置集群IP,则不做任何处理,否则,取该Service的所有端口定义列表。
b.为Service端口分配服务代理对象并为该Service创建相关的Iptables规则。
c.更新负载均衡器组件中对应Service的转发地址列表

7.kube-proxy在启动时和监听到Service或Endpoint的变化后,会在本机Iptables的NAT表中添加4条规则链。
a.KUBE-PORTALS-CONTAINER: 从容器中通过Cluster IP 和端口号访问service.
b.KUBE-PORTALS-HOST: 从主机中通过Cluster IP 和端口号访问service.
c.KUBE-NODEPORT-CONTAINER:从容器中通过NODE IP 和端口号访问service.
d. KUBE-NODEPORT-HOST:从主机中通过Node IP 和端口号访问service.
推荐阅读:
  1. Kubernetes网络组件之Calico策略实践(BGP、
  2. Kubernetes网络组件之Flannel策略实践(vxl

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kube-proxy kubernetes 五十一

上一篇:SQL Server 默认跟踪(Default Trace)

下一篇:轻松实现session的mysql处理 (转)

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》