azure - 如何仅将 nginx 入口控制器部署到用户节点池
问题描述
我正在为 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 正在系统节点池中运行,而 1 正在用户节点池中运行。
问题:
作为部署在用户节点池中的所有工作负载,我应该在哪里运行我的 nginx 入口 pod、系统池或用户池?
我可以在用户节点池中运行两个入口副本吗,如果是,如何?
如果我的入口在系统池中运行并且工作负载(.net 应用程序)在用户池中运行,是否有任何延迟?
解决方案
这取决于您为什么决定首先创建多个节点池,用户池中的虚拟机是否拥有更多资源?是不是因为你想只为与 Kubernetes 相关的资源保留系统节点池?无论如何,Ingress Controller 可以毫无问题地部署在系统池中。
话虽如此,如果要运行用户节点池中的所有副本,则需要在节点池的节点上设置标签,然后在 Nginx 部署中使用节点选择器。如果您使用的是 Helm,则可以使用这些值来执行此操作。
通过将入口放在不同的节点池中,您实际上不会有更多的延迟,无论如何,您尝试访问的 pod 并不总是与入口控制器在同一个 VM 中,即使两者都在同一个节点池中。
推荐阅读
- facebook - 2018 版 - 在 FB 原生应用程序中打开链接,而不是在浏览器中
- mysql - 在Vue中更新Mysql数据时如何渲染图表?
- php - 如何使用 MySQL 修复虚假的 1292 'Incorrect date value' 错误?
- scheme - 在 Racket 中测量经过时间的最佳方法是什么?
- android - HighChart 库 Android:在 HIChartView 中找不到 HIOptions
- reactjs - 反应康瓦得到
子组件声明中的属性 - c# - 在 C# 中发送邮件在发布版本中不起作用
- robotframework - 如何使用机器人框架验证 SVG 图标
- javascript - 如何调用数据 setState 来响应渲染返回?
- html - 在 html 设计中不使用表格创建价格表