更改Kubernetes实例模板以打开HTTPS端口

时间:2019-03-05 23:04:52

标签: kubernetes google-compute-engine

我当时使用NodePort在Google Container Engine(GKE)上托管一个Webapp。它使您可以直接将域指向节点IP地址,而不必使用昂贵的Google负载均衡器。不幸的是,实例创建时默认情况下阻止了HTTP端口,并且更新锁定手动更改了节点,因为它们现在是使用实例组/和不可变实例模板创建的。

我需要在节点上打开端口443,如何使用Kubernetes或GCE做到这一点?最好采用抗更新的方式。

enter image description here

相关的github问题:https://github.com/nginxinc/kubernetes-ingress/issues/502

3 个答案:

答案 0 :(得分:1)

在Kubernetes节点上使用端口443不是标准做法。如果您查看docs,则会看到kubelet选项--service-node-port-range,其默认值为30000-32767。您可以将其更改为443-32767或其他名称。请注意,1024下的每个端口都限于root

总而言之,在端口443上运行Kubernetes服务不是一个好主意/做法。一个更典型的场景是将流量发送到服务的NodePort的外部nginx / haproxy代理。您提到的另一个选项是使用云负载均衡器,但是由于成本原因,您希望避免这种情况。

答案 1 :(得分:1)

您可以使用Cloud SDK在GUI Google Cloud Console上完成所有操作,最简单的方法就是通过Google Cloud Shell。这是用于将网络标签添加到正在运行的实例的命令。即使GUI禁用了此功能,此方法仍然有效

gcloud compute instances add-tags gke-clusty-pool-0-7696af58-52nf --zone=us-central1-b --tags https-server

这也适用于Beta版,这意味着它应该继续工作一段时间。 有关如何自动执行此操作的示例,请参见https://cloud.google.com/sdk/docs/scripting-gcloud。也许考虑在检测到停机时间时在Webhook上运行。显然,这都不是理想的。

或者,您可以自己更改模板。使用此方法,您还可以将启动添加到新节点,这允许您执行诸如使用新IP地址来启动Webhook的操作,以实现轮循低停机时间动态dns。

来源(他有相反的问题,他的问题是我们的解决方案):https://stackoverflow.com/a/51866195/370238

答案 2 :(得分:0)

如果我理解正确,如果节点可以自行销毁和重新创建,那么您将如何确保生产后端口上的某些服务可靠地可用,而无需任何负责路径编排的负载均衡器来转移端口流量到新节点