如何将AKS集群中的Linkerd切换为IPVS模式?
如何在AKS集群中将Linkerd切换为IPVS模式
前置确认
确保你的AKS集群已稳定运行在IPVS模式,且Linkerd控制平面、数据平面状态正常(可通过linkerd check验证)。
步骤1:备份现有Linkerd配置
先导出并备份当前的linkerd-config ConfigMap,避免配置丢失:
kubectl get configmap linkerd-config -n linkerd -o yaml > linkerd-config-backup.yaml
步骤2:修改Linkerd配置为IPVS模式
编辑linkerd-config ConfigMap,将proxy段下的iptablesMode从legacy改为ipvs,还可按需设置IPVS调度算法(默认是轮询rr):
kubectl edit configmap linkerd-config -n linkerd
找到proxy配置块,修改后示例如下:
proxy: | iptablesMode: ipvs # 可选:指定IPVS调度算法,支持rr、lc、dh、sh、sed、nq等 ipvsScheduler: rr
保存并退出编辑器。
步骤3:滚动重启Linkerd控制平面组件
修改ConfigMap后,需重启控制平面Pod以加载新配置:
kubectl rollout restart deployment linkerd-controller -n linkerd kubectl rollout restart deployment linkerd-destination -n linkerd kubectl rollout restart deployment linkerd-identity -n linkerd
等待所有控制平面Pod重启完成(可通过kubectl get pods -n linkerd查看状态)。
步骤4:更新数据平面Pod的IPVS规则
Linkerd的proxy-init容器仅在Pod启动时配置网络规则,因此需要滚动重启所有已注入Linkerd proxy的业务Pod,让proxy-init重新配置IPVS规则:
# 替换为你的业务命名空间 kubectl rollout restart deployment -n <your-app-namespace>
若有其他类型的工作负载(如StatefulSet),需对应执行滚动重启命令:
kubectl rollout restart statefulset -n <your-app-namespace>
步骤5:验证切换结果
- 检查Linkerd proxy日志,确认IPVS模式已启用:
kubectl logs -n <your-app-namespace> <app-pod-name> linkerd-proxy | grep "ipvs"
你应该能看到类似Using ipvs iptables mode的日志输出。
- 在集群节点上执行IPVS规则检查(需先在节点安装
ipvsadm工具):
# 在AKS节点上执行 ipvsadm -ln
可看到Linkerd相关的虚拟服务和真实服务器规则。
- 运行
linkerd check验证整个集群状态,确保所有检查项通过。
注意事项
- 切换操作建议在业务低峰期进行,避免短暂的流量波动影响业务。
- 若切换后出现异常,可通过备份的配置文件恢复:
kubectl apply -f linkerd-config-backup.yaml -n linkerd
然后重新滚动重启相关组件。
内容的提问来源于stack exchange,提问作者Michał Picheta
相关产品推荐
相关产品推荐

