【问题标题】:Change Kubernetes Instance Template to open HTTPS port更改 Kubernetes 实例模板以打开 HTTPS 端口
【发布时间】:2019-03-05 23:04:51
【问题描述】:

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

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

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

【问题讨论】:

    标签: kubernetes google-compute-engine


    【解决方案1】:

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

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

    【讨论】:

    • 这种情况现在更为常见,因为人们使用 AWS Route 53 作为外部负载均衡器,但将 K8s 机器托管在 GCP 或多云上。对于通过 Intranet LB 公开的部署也很有用
    【解决方案2】:

    更新:带有 nodeport 的 deamonset 可以为您处理端口开放。 nginx/k8s-ingress 在 443 上有一个节点端口,它被自定义防火墙规则公开。 GCE UI 不会显示「允许 HTTPS 流量」,因为它没有使用默认规则。


    您可以使用 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,http-server
    

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

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

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

    【讨论】:

    • 使用 1.14 集群和节点升级
    【解决方案3】:

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

    【讨论】:

    • nginx/kubernetes-ingress 可以安装在集群中进行编排。您可以将 DNS api 和 GCE api 与 gcloud 一起使用,以确保节点在 k8s 更新或自动缩放后具有良好的配置。
    猜你喜欢
    • 2019-02-28
    • 1970-01-01
    • 2011-04-15
    • 2018-09-02
    • 2020-01-15
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多