Kubernetes HELM - 如何为每个节点创建多个 NGINX Ingress 控制器

Kubernetes HELM - how to create multiple NGINX Ingress controllers one for each Node

我的集群有两个节点:Windows 和 Linux。我有一个主节点。 对于 Linux 我安装了 NGINX 控制器并且一切正常!!!

helm install nginx-ingress ingress-nginx/ingress-nginx \
    -f internal-ingress.yaml \
    --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
    --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \
    --set controller.admissionWebhooks.patch.nodeSelector."beta\.kubernetes\.io/os"=linux

因此 NGINX Ingress Controller 应该以 Linux Pod 为目标,这样就可以了!

现在我想创建 NGINX 入口控制器来定位我的第二个节点,即 Windows。 一旦我尝试创建它,它就让我震惊 Error: timed out waiting for the condition 我试过这个命令(非常类似于工作 Linux 命令)。

helm install nginx-ingress-win ingress-nginx/ingress-nginx -f internal-ingress.yaml 
--set controller.nodeSelector."beta\.kubernetes\.io/os"=windows 
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=windows 
--set controller.admissionWebhooks.patch.nodeSelector."beta\.kubernetes\.io/os"=windows

是否可以有 2 个 NGINX Ingress Controller?为什么会超时?难道我做错了什么? 为 Windows 安装 NGINX Ingress Controller 的正确命令应该是什么?

谢谢

  • helm install 在上下文的当前命名空间中创建 kubernetes 对象。 您应该使用 --create-namespace --namespace namespacename flags

    为 nginx-ingress-win 版本使用单独的命名空间
  • 请运行带--debug标志的helm安装命令看看是什么问题

最终命令:

helm install nginx-ingress-win ingress-nginx/ingress-nginx -f internal-ingress.yaml 
--set controller.nodeSelector."beta\.kubernetes\.io/os"=windows 
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=windows 
--set controller.admissionWebhooks.patch.nodeSelector."beta\.kubernetes\.io/os"=windows 
 --create-namespace --namespace namespacename --debug
  • 请提供为同一集群中的 linux 和 windows 节点设置单独的 nginx 控制器的原因。