【发布时间】:2023-03-06 21:26:02
【问题描述】:
我有一个节点池(在 terraform 中创建),并且我的项目中保留了一个外部 IP。
我希望节点池中的一个节点始终被分配该特定 IP 地址。
有没有办法在 GCP 上做到这一点?
【问题讨论】:
我有一个节点池(在 terraform 中创建),并且我的项目中保留了一个外部 IP。
我希望节点池中的一个节点始终被分配该特定 IP 地址。
有没有办法在 GCP 上做到这一点?
【问题讨论】:
您可以为实例分配static external IP 地址,但对于 GKE 节点来说这是不可能的,因为节点本质上是致命的并且可以重新分配。在这里,您需要为每个节点保留一个静态 IP 地址,这是不可能的。如果不使用保留的静态 IP 地址,您可能会浪费静态 IP 地址资源。您仍然需要为此付费。
您还可以选择configure HTTP load balancer using ingress 并为负载均衡器保留一个静态 IP 地址。除了使用 NodePort,您还可以使用 ClusterIP 类型的服务并创建一个 ingress 规则将流量转发到这些服务。通过使用Cloud Nat,您可以通过静态 IP 路由出口流量。
【讨论】:
Kubernetes 的理念是您的节点(基础设施)是一次性的,应该没有任何意义。
任何节点都可能发生故障或随时被云服务器关闭(想想临时实例)。
大多数人只需要公开一些部署或 pod。
为了简单起见(不仅仅是 SRE,调度软件也是如此),我们通常每个节点有一个 pod。
我猜你认为你需要给一个节点一个特定的地址,因为它里面有一个 pod,出于某种原因必须有这个地址。
如果您需要为开发提供特定 IP 地址,则需要公开它(kubectl expose 使用 --external-ip 选项)。
我认为您可能需要将固定 IP 绑定到节点的唯一情况是,如果您需要在该节点中运行一些获得该 IP 地址许可的软件,但我不确定其用途案例。
【讨论】: