在K8S中,每个kube-proxy(在每个节点上运行)是否都具有相同的实现?

时间:2019-12-28 18:49:11

标签: kubernetes kube-proxy

我是K8S的新手,我试图了解在集群中每个节点上运行的kube-proxy的确切作用。该文档提到“ kube-proxy反映了每个节点上的Kubernetes API中定义的服务,并且可以在一组后端上执行简单的TCP,UDP和SCTP流转发或循环TCP,UDP和SCTP转发”。为做到这一点,每个kube-proxy将需要具有有关集群中运行的所有服务的完整信息,因为kube-proxy的责任是提供对在Pod上运行的应用程序所需的任何服务的访问权限(在相应节点上)​​。那么这是否意味着K8S集群(在每个节点上运行)中的所有kube代理都是镜像?如果是这样,为什么在每个节点上都存在一个kube-proxy而不是整个集群的集中式代理?

链接到有关代理的K8S文档:https://kubernetes.io/docs/concepts/cluster-administration/proxies/

1 个答案:

答案 0 :(得分:1)

  

那么这是否意味着K8S集群(在每个节点上运行)中的所有kube代理都是镜像?

是的,它们是同一张图片的实例。

  

如果是这样,为什么在每个节点上都存在一个kube-proxy,而不是整个集群的集中式节点?

kube-proxy使用操作系统数据包过滤层(如果有的话),例如IPtable,IPVS。否则,kube-proxy会转发流量本身。 kube-proxy

Kube-Proxy本身是一个 k8s控制器,它监视群集的所需状态(服务和端点)并在节点上进行更改,因为它管理IPtabels(使用iptable模式)< / p>

  

要做到这一点,每个kube-proxy将需要具有有关集群中运行的所有服务的完整信息.....

以下标志用于设置kube-proxy的行为

--iptables-min-sync-period duration
The minimum interval of how often the iptables rules can be refreshed as endpoints and services change (e.g. '5s', '1m', '2h22m').
--iptables-sync-period duration     Default: 30s
The maximum interval of how often iptables rules are refreshed (e.g. '5s', '1m', '2h22m'). Must be greater than 0.

IMO,确定节点上Pod之间的连接(转发,接受)应由节点组件而不是中央平面组件决定。此外,K8的控制平面(API服务器等)保持集群的所需状态和当前状态,因此所有控制器都可以根据其设置的行为进行协调。