单Master节点Kubernetes集群安装ingress-nginx因Master污点无法容忍调度失败
解决方案
报错核心原因是ingress-nginx的默认工作负载配置未添加Master节点专属污点的容忍规则,无需修改Master节点原有污点配置,通过Helm安装时为相关组件新增容忍规则即可,有两种常用实现方式:
方式一:安装时直接传入参数(适合一次性部署场景)
执行以下安装命令,直接为ingress-nginx控制器、准入Webhook的相关Job全部添加Master污点容忍:
helm install ingress-nginx ingress-nginx/ingress-nginx \ --set controller.tolerations[0].key=node-role.kubernetes.io/master \ --set controller.tolerations[0].operator=Exists \ --set controller.tolerations[0].effect=NoSchedule \ --set admissionWebhooks.patch.tolerations[0].key=node-role.kubernetes.io/master \ --set admissionWebhooks.patch.tolerations[0].operator=Exists \ --set admissionWebhooks.patch.tolerations[0].effect=NoSchedule \ --set admissionWebhooks.createJob.tolerations[0].key=node-role.kubernetes.io/master \ --set admissionWebhooks.createJob.tolerations[0].operator=Exists \ --set admissionWebhooks.createJob.tolerations[0].effect=NoSchedule
方式二:通过自定义配置文件安装(适合需要复用部署配置的场景)
- 新建
values.yaml配置文件,写入以下内容:
controller: tolerations: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule admissionWebhooks: patch: tolerations: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule createJob: tolerations: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule
- 执行安装命令调用自定义配置:
helm install ingress-nginx ingress-nginx/ingress-nginx -f values.yaml
验证安装结果
安装完成后执行以下命令查看Pod状态,所有Pod状态显示为Running即为部署成功:
kubectl get pods -n ingress-nginx
内容的提问来源于stack exchange,提问作者satadrubasu
相关产品推荐
相关产品推荐

