暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OKE Kube-proxy ipvs模式修改方案

922

Kube-proxy是kubernetes工作节点上的一个网络代理组件,运行在每个节点上。Kube-proxy维护节点上的网络规则,实现了Kubernetes Service 的一部分。它的作用是将发往Service的流量(通过ClusterIP和端口)负载均衡到正确的后端Pod。

目前Kube-proxy中常使用的代理模式有:

  • userspace

  • iptables

  • ipvs

  • kernelspace(kernelspace专用于windows,userspace是早期版本的实现)


    在默认情况下,OCI上的OKE集群使用iptables模式进行代理,iptables是一种Linux内核功能,具有足够的灵活性来处理各种常见的数据包操作和过滤需求。它允许将灵活的规则序列附加到内核的数据包处理管道中的各种钩子上。


在iptables模式下,kube-proxy将规则附加到“NAT预路由”钩子上,以实现其NAT和负载均衡功能。

IPVS是专门用于负载均衡的Linux内核功能。IPVS旨在均衡许多服务的负载。它具有优化的API和优化的查找例程,而不是一系列顺序规则。在IPVS模式下Kube-proxy的连接处理的计算复杂度为O(1)。与iptables模式相比,IPVS模式下的Kube-proxy重定向通信的延迟要短,并且在同步代理规则时具有更好的性能。与其他代理模式相比,IPVS模式还支持更高的网络流量吞吐量。

(源自:https://www.tigera.io/blog/comparing-kube-proxy-modes-iptables-or-ipvs/)

在集群中不超过1000个服务的时候,iptables和ipvs并无太大的性能差异。但是在集群服务超过1000个时,而且服务之间链接大多没有开启keepalive,IPVS模式的性能会更好,推荐采用IPVS模式。

(源自:https://www.tigera.io/blog/comparing-kube-proxy-modes-iptables-or-ipvs/)

目前OKE支持修改Kube-proxy运行模式,可通过做直接修改configmap实现,其运行命令如下:
kubectl edit configmap kube-proxy -n kube-system

将Mode处的配置修改为ipvs
删除原有Kube-proxy的Pod,系统会重建Pod,并且检查Pod日志,已经切换为ipvs模式。



作者简介

巨晓兵,甲骨文云平台资深技术顾问,拥有 10 年以上 IT 相关工作经验。目前主要负责甲骨文云平台产品在解决方案中的设计和实施。在加入甲骨文公司前,主要供职于 亚信,Gemalto,负责产品研发和项目实施等工作。具有多年系统架构设计经验,熟悉架构设计的理念与设计方法,且具有多年IOT系统工作经验。您可以通过xiaobing.ju@oracle.com与他联系。


文章转载自甲骨文开发者社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论