如何使用“controller.nodeSelector”选项将nginx入口控制器部署到kubernetes主节点?

如何使用“controller.nodeSelector”选项将nginx入口控制器部署到kubernetes主节点?,nginx,kubernetes,nginx-ingress,Nginx,Kubernetes,Nginx Ingress,我只需要使用Helm chart ingress nginx将nginx ingress controller部署到kubernetes主节点。它提供了一个选项controller.nodeSelector来选择k8s节点进行部署。因此,我想使用此选项选择标签节点role.kubernetes.io/master=的k8s主节点,但尝试了不同的格式,无法按预期工作 失败案例: helm install --set controller.hostNetwork=true --set control

我只需要使用Helm chart ingress nginx将nginx ingress controller部署到kubernetes主节点。它提供了一个选项controller.nodeSelector来选择k8s节点进行部署。因此,我想使用此选项选择标签节点role.kubernetes.io/master=的k8s主节点,但尝试了不同的格式,无法按预期工作

失败案例:

helm install --set controller.hostNetwork=true --set controller.hostPort.enabled=true --set controller.extraArgs.enable-ssl-passthrough="" --set controller.replicaCount=1 --set controller.nodeSelector."node-role\.kubernetes\.io/master"="" --namespace rwe ingress-nginx ingress-nginx/ingress-nginx

你能告诉我如何使这个选项生效吗?谢谢。

首先从主节点删除污点,使其可调度

kubectl taint node master node-role.kubernetes.io/master:NoSchedule-
将标签master=true添加到主节点

kubectl label nodes master master=true
然后使用舵下命令。注意-设置字符串而不是设置


您看到的错误是,在大多数情况下,主节点将被NoSchedule污染,因此我们无法将任何pod调度到主节点。您是正确的,首先需要删除NoSchedule污染。或者更好的做法是创建一个values.yaml文件,以摆脱设置的小型语言业务;不管怎样,我认为基鲁巴对图表的观察才是真正的答案
helm install --set controller.hostNetwork=true --set controller.hostPort.enabled=true --set controller.extraArgs.enable-ssl-passthrough="" --set controller.replicaCount=1 --set-string controller.nodeSelector.master=true --namespace rwe ingress-nginx ingress-nginx/ingress-nginx