启用Calico安装AKS遇部署超时、节点Not Ready问题求助
解决AKS配置Calico网络策略后部署超时、节点Not Ready的问题
我之前碰到过一模一样的情况,给你几个关键的排查和解决步骤:
首先确认配置时机是否正确
划重点:AKS的Calico网络策略只能在集群创建阶段指定,无法对已存在的集群修改
networkPolicy属性启用Calico。如果是在现有集群上修改这个配置,不仅不会生效,还可能导致集群部署异常、节点无法就绪。这种情况下只能重新创建集群并在创建时正确配置。验证networkProfile配置格式是否正确
创建集群时,networkProfile的正确配置示例如下:
用az cli创建的命令:az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --network-plugin azure \ --network-policy calico \ --node-count 2如果用ARM模板,对应的JSON片段:
"networkProfile": { "networkPlugin": "azure", "networkPolicy": "calico", "loadBalancerSku": "standard" }注意:
networkPlugin可以是azure或kubenet,但部分区域对kubenet+Calico的支持有限,优先推荐使用azure插件搭配Calico。排查节点Not Ready的具体原因
- 先查看集群的部署状态:
如果状态是az aks show --resource-group <你的资源组> --name <集群名称> --query provisioningStateFailed,可以查看详细的错误信息:az aks show --resource-group <你的资源组> --name <集群名称> --query provisioningErrors - 查看节点的系统日志,重点排查Calico组件的启动问题:
常见的问题包括Calico镜像拉取失败、节点网络配置错误、权限不足等。az aks node-logs --resource-group <你的资源组> --name <集群名称> --node-name <节点名称> --tail 100
- 先查看集群的部署状态:
检查Calico组件的运行状态
当集群创建完成后(如果部署成功的话),kube-system命名空间下的Calico相关Pod应该处于Running状态:kubectl get pods -n kube-system | grep calico如果有Pod处于
CrashLoopBackOff或Pending状态,查看Pod的日志定位问题:kubectl logs <calico-pod-name> -n kube-system比如常见的问题是节点无法访问Calico的镜像仓库,或者Calico的网络配置与现有VPC规则冲突。
确认区域和资源权限
- 确保你选择的Azure区域支持AKS的Calico网络策略(大部分主流区域都支持,但若使用较偏的区域可能存在限制)。
- 确认集群使用的服务主体或托管身份拥有
Network Contributor权限,以便Calico能正确配置节点网络规则。
内容的提问来源于stack exchange,提问作者4c74356b41
相关产品推荐
相关产品推荐

