如何仅将 nginx 入口控制器部署到用户节点池

How to deploy nginx ingress controller only to user node pool

我正在为 AKS 集群部署 nginx 入口控制器,我有一个用户节点池和一个系统节点池。

helm install nginx-ingress ingress-nginx/ingress-nginx --namespace basic-ingress --set controller.replicaCount=2 --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

由于副本数 = 2,当我检查 pod 状态时,我可以看到系统节点池中有一个 pod 运行ning,而用户节点池中有 1 个 运行ning。

问题:

  1. 我应该在哪里 运行 我的 nginx ingress pod、系统池或用户池作为我在用户节点池中部署的所有工作负载?

  2. 我可以 运行 用户节点池中的两个入口副本吗?如果可以,怎么办?

  3. 如果我在系统池中的入口 运行 和在用户池中的工作负载(.net 应用程序)运行 是否有任何延迟?

这取决于你为什么决定首先创建多个节点池,用户池中的VM是否有更多资源?是不是因为你想保留系统节点池只为与kubernetes相关的资源?反正Ingress Controller可以部署在系统池里没有问题

话虽如此,如果您想 运行 用户节点池中的所有副本,则需要 set a label on the node of your node pool and then use a Node Selector 在您的 Nginx 部署上。如果您使用的是 Helm,则可以使用这些值来执行此操作。

通过将入口置于不同的节点池中,您实际上不会有更多的延迟,无论如何,您尝试访问的 pod 并不总是与入口控制器位于同一 VM 中,即使两者都位于同一节点池中。