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

Kubernetes HELM-如何为每个节点创建多个NGINX入口控制器,nginx,kubernetes,kubernetes-helm,kubernetes-ingress,nginx-ingress,Nginx,Kubernetes,Kubernetes Helm,Kubernetes Ingress,Nginx Ingress,我的集群有两个节点: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

我的集群有两个节点: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入口控制器应该以linuxpod为目标,这是可行的

现在,我想创建NGINX入口控制器来定位我的第二个节点,即Windows。 一旦我尝试创建它,它就会抛出我的
错误:等待条件超时
我尝试了这个命令(非常类似于Linux命令)

是否可以有2个NGINX入口控制器?为什么会超时?我做错什么了吗? 安装适用于Windows的NGINX Ingress Controller的正确命令应该是什么

谢谢

  • helm install在上下文的当前名称空间中创建kubernetes对象。 您应该使用--create namespace--namespace namespacename标志为nginx ingress win release使用单独的名称空间

  • 请使用--debug标志运行helm install命令以查看问题所在

最后命令:

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控制器的原因

您的nginx控制器的映像是否与windows兼容?我没有听说过这样的事情,但我(谢天谢地)没有在windows上运行kubernetes的经验。不管是哪种方式,您都希望增加
helm
的详细程度,以获得有关其失败位置的更多信息,和/或实际查看集群,以查看部署是否(如我所怀疑的)糟糕。谢谢您的回答。nginx入口在哪里创建?在主控制平面节点中还是在我的Linux节点上创建了第一个nginx?它住在哪里?谢谢,正如有人提到的,ngixn似乎不可能用于windows。那么,我可以使用为linux创建的同一个端口将流量路由到某个专用端口的Windows Pod服务吗?因为这个nginx入口引用了要创建的内部负载平衡器以及,入口控制器需要在Linux节点上调度。Windows服务器节点不应运行入口控制器。使用--set nodeSelector参数指定节点选择器,以告知Kubernetes调度程序在基于Linux的节点上运行NGINX入口控制器。根据,您可以使用服务进行跨操作系统连接。因此,在linux节点上运行的nginx ingress controller pod应该通过服务将请求转发到windows pod。基本上,nginx ingress controller pod是一个L7反向代理,它只将请求转发到Kubernetes中配置的服务clusterIP,如果您可以通过服务clusterIP向windows pod发送请求,那么nginx入口控制器吊舱也应该能够做到这一点。谢谢,这就澄清了!我只是害怕它是否可以在Linux节点上通过Windows节点上的ClusterIp转发。谢谢你能帮我解决第二个问题吗?
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