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

Wah*_*001 0 nginx kubernetes nginx-ingress

我只需要使用 Helm 图表“ingress-nginx”将 nginx-ingress 控制器部署到 kubernetes 主节点。它提供了一个选项“controller.nodeSelector”来选择要部署的 k8s 节点。所以我想使用此选项来选择带有 label 的 k8s 主节点node-role.kubernetes.io/master=,但尝试了不同的格式,无法让它按预期工作。

失败案例:

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
Run Code Online (Sandbox Code Playgroud)

您能帮忙建议如何让这个选项生效吗?谢谢。

Arg*_*dhu 5

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

kubectl taint node master node-role.kubernetes.io/master:NoSchedule-
Run Code Online (Sandbox Code Playgroud)

master=true为主节点添加标签

kubectl label nodes master master=true
Run Code Online (Sandbox Code Playgroud)

然后使用下面的 helm 命令。注意--set-string而不是set

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
Run Code Online (Sandbox Code Playgroud)