我使用NodePort在Google Container Engine(GKE)上托管一个Web应用程序。它允许您直接将域指向节点IP地址,而不是昂贵的Google负载均衡器。不幸的是,创建示例时默认情况下会阻止HTTP端口,并且更新会手动锁定更改节点,因为它们现在是使用和Instance Group/和Immutable Instance Template创建的。
我需要在我的节点上打开端口443,如何使用Kubernetes或GCE来完成?最好是以更新抵抗的方式。
github相关问题:https://github.com/nginxinc/kubernetes-ingress/issues/502
3条答案
按热度按时间kgsdhlau1#
在Kubernetes节点上使用端口443不是标准做法。如果你查看文档,你会看到kubelet选项
--service-node-port-range
,默认为30000-32767
。你可以把它改成443-32767
或者别的什么。请注意,1024
下的每个端口都限制为root。总之,在端口
443
上运行Kubernetes服务不是一个好主意/实践。一个更典型的场景是一个外部的nginx/haproxy代理,它将流量发送到服务的NodePorts。您提到的另一种选择是使用云负载均衡器,但由于成本原因,您希望避免这种情况。rekjcdws2#
2023-06-23更新
在某些时候,Google增加了向节点池添加网络标签的功能...所以现在你可以直接添加https-server,https-server,它会像预期的那样工作。
更新:带有节点端口的deamonset可以为您处理端口打开。nginx/k8s-ingress在443上有一个节点端口,它被自定义防火墙规则暴露。GCEUI不会显示“允许HTTPS流量”,因为它没有使用默认规则。
您可以使用Cloud SDK在GUI Google Cloud Console上执行所有操作,最简单的方式是通过Google Cloud Shell。下面是将网络标记添加到正在运行的示例的命令。即使GUI禁用了这样做的功能,它也可以工作
这也适用于测试版,这意味着它应该继续工作一段时间。有关如何自动执行此操作的示例,请参见https://cloud.google.com/sdk/docs/scripting-gcloud。当检测到停机时,也许可以考虑在webhook上运行。显然,这些都不是理想的。
或者,您可以更改模板本身。使用此方法,您还可以向新节点添加启动,这允许您使用新的IP地址执行webhook,以实现循环调度低停机动态DNS。
来源(他有相反的问题,他的问题是我们的解决方案):https://stackoverflow.com/a/51866195/370238
byqmnocz3#
如果我的理解正确,如果节点可以被销毁和重新创建,那么您将如何确保端口后的某些服务在生产环境中可靠地可用,而不需要任何类型的负载平衡器来负责将端口流量转移到新节点的路由编排