【问题标题】:How to deploy nginx-ingress controller to kubernetes master nodes by using "controller.nodeSelector" option?如何使用“controller.nodeSelector”选项将 nginx-ingress 控制器部署到 Kubernetes 主节点?
【发布时间】:2020-08-19 00:03:13
【问题描述】:

我只需要使用 Helm 图表“ingress-nginx”将 nginx-ingress 控制器部署到 Kubernetes 主节点。它提供了一个选项“controller.nodeSelector”来选择 k8s 节点进行部署。所以我想使用这个选项来选择标签为node-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

您能否帮助建议如何使此选项生效?谢谢。

【问题讨论】:

  • 您看到了什么错误,在大多数情况下,主节点会被 NoSchedule 污染,因此我们无法将任何 pod 调度到主节点。
  • 你是对的,首先需要删除NoSchedule taint。

标签: nginx kubernetes nginx-ingress


【解决方案1】:

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

kubectl taint node master node-role.kubernetes.io/master:NoSchedule-

给主节点添加标签master=true

kubectl label nodes master master=true

然后使用下面的 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

【讨论】:

  • 或者更好的是创建一个values.yaml 文件,以摆脱--set 迷你语言业务;无论哪种方式,我认为 Kiruba 对图表 needing a toleration 的观察是实际答案
猜你喜欢
  • 2022-11-04
  • 2021-06-17
  • 1970-01-01
  • 2021-06-13
  • 2019-07-19
  • 2020-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多