当前位置: 首页 > 知识库问答 >
问题:

Google Cloud部署和库伯内特斯节点IP地址更改

东郭京
2023-03-14

我们已经让我们的数据库在谷歌云中的库伯内特斯集群(部署到我们的专用网络)上运行了几个月。上周我们注意到由于某种原因,所有底层节点(VM)的IP地址都发生了变化。这导致了中断。我们一直在使用库伯内特斯的NodePort配置为我们的服务访问我们的数据库(https://kubernetes.io/docs/concepts/services-networking/service/#nodeport)。我们了解VM内pod的IP地址是动态的,最终会发生变化,但是我们不知道实际节点(VM)的IP地址也可能发生变化。这正常吗?有人知道什么会导致库伯内特斯集群中的VM IP地址发生变化吗?

共有2个答案

滕鸿畴
2023-03-14

如果您使用的是托管Kubernetes引擎(GKE)集群,这是预料之中的,因为节点是致命的,例如,如果节点没有响应,可能会被替换或重新启动。因此,节点的IP将发生变化。目前无法将静态(固定)公共IP分配给节点。在这种情况下,您应该将DB服务公开为集群IP。它将具有不变的静态IP。下面是一个如何做到这一点的示例。

或者,如果您在计算引擎(GCE)中使用非托管kubernetes集群,那么您只需将节点IP升级为静态。

应翰飞
2023-03-14

从GCP上关于临时IP地址的留档中,

创建实例或转发规则而不指定IP地址时,会自动为资源分配临时外部IP地址。如果删除资源,将从资源中释放临时外部IP地址。对于VM实例,如果停止该实例,也会释放IP地址。重新启动实例后,将为其分配一个新的临时外部IP地址。

您可以将静态外部IP地址分配给实例,但正如@Notauser所提到的,不建议将其分配给Kubernetes节点。这是因为您可以为实例组配置autoscaler,并且可以最小化或最大化节点大小。此外,您需要为每个节点保留一个静态IP地址,这是不推荐的。此外,您将浪费静态IP地址资源,如果不使用保留的静态IP地址,您仍将为此收取费用。

否则,您可以使用入口配置HTTP负载平衡器,然后为负载平衡器保留静态IP地址。您应该使用ClusterIP类型的服务并创建一个入口规则,将流量转发给这些服务,而不是使用NodePort。

 类似资料:
  • 我确实部署了单吊舱,自定义docker映像如下: 在开发过程中,我希望推送新的最新版本并更新部署。如果不明确定义标记/版本并为每个构建增加它,就找不到如何做到这一点,并且

  • 我正在尝试在Kubernetes集群(Azure AKS)中部署Flink作业。作业群集在启动后立即中止,但任务管理器运行正常。 docker镜像创建成功,没有任何异常。我可以运行docker镜像,也可以SSHdocker镜像。 我已经按照以下链接中提到的步骤: https://github.com/apache/flink/tree/release-1.9/flink-container/kub

  • 我有以下代码: 我创建了一个包含上述Python代码的映像的部署。 当我使用my Python代码不会创建sig文件指示,也不会打印“完成”消息。 点击此链接:https://cloud.google.com/blog/products/containers-kubernetes/kubernetes-best-practices-terminating-with-grace我看到k8s发送SIG

  • 我在windows 10中创建了两个在我的minikube环境中运行的POD。一个POD带有Spring boot应用程序容器,另一个POD带有mysql容器。对于Spring boot应用程序,服务类型为nodePort,对于MYSQL pod,服务类型为club sterIP。这意味着Mysql pod只需要在集群内部进行通信。但是对于Spring boot应用程序,需要从浏览器访问,所以我配

  • 我正在使用库伯内特斯HPA来扩展我的集群。我已经设置了目标CPU利用率为50%。它正在正确扩展。但是,当负载减少并且它扩展得如此之快时。我想设置一个冷却期。例如,即使CPU util低于50%,它也应该在终止节点之前等待60秒。 我查看了这篇文章,但它并不是说我可以更改HPA中的默认值,https://kubernetes.io/docs/concepts/workloads/pods/pod/i

  • 我正在尝试运行集成minikube与Jenkins。我得到以下异常: 配置如下Kubernetes url所示:192.168.99.101:8443 Kubernetes 1 希望你的协助。