出于测试目的,我在同一台机器上部署了两个版本的应用程序。在生产环境中,只有一个应用程序示例在一个云Kubernetes集群中运行,并使用ingress-nginx控制器来公开其API。
我使用kind在本地运行Kubernetes集群,并将应用版本部署到两个不同的命名空间。我根据kind和ingress-nginx Multiple controllers文档配置入口控制器。我的应用的第一个示例按预期运行,但当我部署第二个示例时,控制器pod无法启动,并显示以下消息:
0/6 nodes are available: 1 node(s) didn't have free ports for the requested pod ports, 5 node(s) didn't match Pod's node affinity/selector
据我所知,两个入口控制器pod被安排在同一节点上,不能共享同一端口。请建议如何进一步处理。是否应将第二个控制器pod安排到不同的节点?由于kind将节点端口Map到主机,是否可以将多个节点的相同端口Map到主机?
1条答案
按热度按时间jw5wzhpr1#
不确定这是否能满足您的用例,但是您可以将nginx入口控制器的范围限定为一个名称空间:https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/values.yaml#L150
这样你就可以在不同的命名空间中有多个nginx控制器,它们不会冲突。看起来你也可以让它们通过选择器监视特定的命名空间,而不仅仅是它们自己的。