在 Azure Kubernetes 服务 (AKS) 中配置 kube-proxy
(预览版)
kube-proxy
是 Kubernetes 的一个组件,用于处理群集中服务的流量路由。 上游 kube-proxy
有两个后端可用于第 3/4 层负载均衡:iptables 和 IPVS。
- iptables 是大多数 Kubernetes 群集中使用的默认后端。 它简单且受到良好支持,但不如 IPVS 那么高效或智能。
- IPVS 使用 Linux 虚拟服务器,这是内置于 Linux 内核中的第 3/4 层负载均衡器。 与默认的 iptables 配置相比,IPVS 提供了许多优势,包括状态感知、连接跟踪和更智能的负载均衡。 IPVS 不支持 Azure 网络策略。
有关详细信息,请参阅 Kubernetes 关于 kube-proxy 的文档。
注意
如果需要,可以禁用 AKS 托管的 kube-proxy
DaemonSet 以支持自带 CNI。
重要
AKS 预览功能是可选择启用的自助功能。 预览功能是“按现状”和“按可用”提供的,不包括在服务级别协议和有限保证中。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:
准备阶段
- 如果使用 Azure CLI,则需要
aks-preview
扩展。 请参阅安装aks-preview
Azure CLI 扩展。 - 如果使用 ARM 或 REST API,则 AKS API 版本必须为 2022-08-02-preview 或更高版本。
- 需要使用注册
KubeProxyConfigurationPreview
功能标志。 请参阅注册KubeProxyConfigurationPreview
功能标志。
安装 Azure CLI aks-preview
扩展
使用
az extension add
命令安装aks-preview
扩展。az extension add --name aks-preview
使用
az extension update
命令更新到扩展的最新版本。az extension update --name aks-preview
注册 KubeProxyConfigurationPreview
功能标志
使用
az feature register
命令注册KubeProxyConfigurationPreview
功能标志。az feature register --namespace "Microsoft.ContainerService" --name "KubeProxyConfigurationPreview"
状态显示为“已注册”需要几分钟时间。
使用
az feature show
命令验证注册状态。az feature show --namespace "Microsoft.ContainerService" --name "KubeProxyConfigurationPreview"
当状态反映为已注册时,使用
az provider register
命令刷新 Microsoft.ContainerService 资源提供程序的注册。az provider register --namespace Microsoft.ContainerService
kube-proxy
配置选项
可在 AKS 群集架构中查看完整的 kube-proxy
配置结构。
enabled
:确定kube-proxy
DaemonSet 的部署。 默认为true
。mode
:可以设置为IPTABLES
或IPVS
。 默认为IPTABLES
。ipvsConfig
:如果mode
为IPVS
,则此对象包含特定于 IPVS 的配置属性。scheduler
:确定要使用哪个连接计划程序。 支持的值包括:LeastConnection
:向连接最少的后端 Pod 发送连接。RoundRobin
:在后端 Pod 之间平均分配连接。
tcpFinTimeoutSeconds
:设置 TCP 会话收到 FIN 后的超时长度值。tcpTimeoutSeconds
:设置空闲 TCP 会话的超时长度值。udpTimeoutSeconds
:设置空闲 UDP 会话的超时长度值。
注意
IPVS 负载均衡单独在每个节点中运行,并且只知道流经本地节点的连接。 这意味着,虽然 LeastConnection
在更高的连接数下会产生更均匀的负载,但当出现较低的连接数(连接数 < 2 * 节点计数)时,流量可能相对不均衡
在新的或现有的 AKS 群集中使用 kube-proxy
kube-proxy
配置是一个群集范围的设置。 无需更新你的服务。
警告
更改 kube-proxy 配置可能会导致群集服务流量流稍微中断。
使用所需的
kube-proxy
配置创建配置文件。 例如,以下配置使用LeastConnection
计划程序来启用 IPVS,并将 TCP 超时设置为 900 秒。{ "enabled": true, "mode": "IPVS", "ipvsConfig": { "scheduler": "LeastConnection", "TCPTimeoutSeconds": 900, "TCPFINTimeoutSeconds": 120, "UDPTimeoutSeconds": 300 } }
使用
az aks create
或az aks update
命令,通过配置文件创建新群集或更新现有群集,并将--kube-proxy-config
参数设置为该配置文件。# Create a new cluster az aks create -g <resourceGroup> -n <clusterName> --kube-proxy-config kube-proxy.json # Update an existing cluster az aks update -g <resourceGroup> -n <clusterName> --kube-proxy-config kube-proxy.json
后续步骤
本文介绍了如何在 Azure Kubernetes 服务 (AKS) 中配置 kube-proxy
。 若要详细了解 AKS 中的负载均衡,请参阅以下文章: