AKS Istio 插件中Gateway API状态异常的排查与解决方案
AKS Azure Kubernetes Service 项目地址: https://gitcode.com/gh_mirrors/ak/AKS
问题背景
在Azure Kubernetes Service(AKS)环境中使用Istio插件时,部分用户遇到了Kubernetes Gateway API状态显示为"Unknown"的问题。具体表现为Gateway资源的状态条件持续显示为"Pending",且事件日志中没有任何错误信息。这种情况主要出现在使用Istio asm-1-24版本和Gateway API 1.1.0标准通道的组合配置中。
现象分析
受影响用户的Gateway资源YAML配置看似正常,与在其他集群中正常工作的配置完全一致。典型的异常状态显示如下:
Status:
Conditions:
Last Transition Time: 1970-01-01T00:00:00Z
Message: Waiting for controller
Reason: Pending
Status: Unknown
Type: Accepted
Last Transition Time: 1970-01-01T00:00:00Z
Message: Waiting for controller
Reason: Pending
Status: Unknown
Type: Programmed
根本原因
经过Azure团队调查,发现这个问题与Istio 1.24版本引入的新要求有关。从1.24版本开始,Istio要求显式设置网关的修订标签istio.io/rev=asm-1-24
,或者创建一个默认的修订标签,以确保在灰度升级过程中有明确的修订控制。
解决方案
临时解决方案
对于急需解决问题的用户,可以暂时降级到asm-1-23版本。降级步骤包括:
- 禁用Istio插件(不勾选删除CRDs选项)
- 部署asm-1-23版本
- 更新命名空间的自动sidecar注入配置到正确版本
永久解决方案
Azure团队已经推出了修复程序,并已逐步部署到所有区域。用户无需采取特别操作,系统会自动恢复正常工作状态。
对于使用asm-1-24及以上版本的用户,需要特别注意以下配置要求:
- 为Gateway资源显式添加修订标签:
metadata:
labels:
istio.io/rev: asm-1-24
- 或者创建默认修订标签(推荐),以便在灰度升级期间更好地控制网关版本。
最佳实践建议
- 在使用Gateway API时,建议创建默认修订标签,这可以确保网关不会在升级过程中被遗漏
- 定期检查AKS文档中关于Istio插件的最新支持政策
- 在升级Istio版本前,先验证Gateway API的兼容性
- 为生产环境配置适当的维护窗口,确保集群能及时接收最新的更新
注意事项
目前AKS中Kubernetes Gateway API与Istio插件的组合使用仍属于"允许但不支持"的功能。这意味着虽然可以使用,但不在官方的支持范围内。用户应当注意未来Azure对此功能的支持政策变化。
对于仍然遇到问题的用户,建议检查集群是否已接收到最新的更新,并确认是否已正确配置修订标签。如果问题持续存在,可以考虑收集详细的诊断日志并与支持团队联系。
AKS Azure Kubernetes Service 项目地址: https://gitcode.com/gh_mirrors/ak/AKS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考