Google cloud platform 将静态IP永久绑定到可抢占的google云VM
对于我们的项目,由于IP白名单,我们需要一个静态IP绑定到我们的Google云VM实例。 由于它是一个可抢占的托管组,VM将偶尔终止一次 但是,当它终止时,我会在操作日志中看到Google cloud platform 将静态IP永久绑定到可抢占的google云VM,google-cloud-platform,google-compute-engine,google-kubernetes-engine,Google Cloud Platform,Google Compute Engine,Google Kubernetes Engine,对于我们的项目,由于IP白名单,我们需要一个静态IP绑定到我们的Google云VM实例。 由于它是一个可抢占的托管组,VM将偶尔终止一次 但是,当它终止时,我会在操作日志中看到compute.instances.preempted后面紧跟着compute.instances.repair.recreateInstance,注意: 实例组管理器“xxx”已在实例上启动重新创建实例 “xxx”。 原因:实例的意图正在运行,但实例的状态为 停下来 然后执行delete和insert操作以恢复实例 文件
compute.instances.preempted
后面紧跟着compute.instances.repair.recreateInstance
,注意:
实例组管理器“xxx”已在实例上启动重新创建实例
“xxx”。
原因:实例的意图正在运行,但实例的状态为
停下来
然后执行delete
和insert
操作以恢复实例
文件:
您可以通过停止实例来模拟实例抢占
在这种情况下,当VM再次启动时,IP地址将保持连接状态
A) 因此,我的问题是,是否可以让实例组管理器在抢占事件中停止并启动VM,而不是重新创建?因为重新创建意味着静态IP将被分离,每次都需要手动连接
B) 如果选项A不可行,如何自动附加静态IP地址,以便在重新创建VM时不必手动附加它?我不希望有一个额外的NAT VM实例来解决这个问题
提前谢谢 一种解决方案是让实例动态选择临时IP,但将组设置为具有静态IP的负载平衡器的目标。这样,即使在创建或销毁实例时,LB也可以充当前端,使IP在一段时间内保持连续。回答您的问题: (A) 目前这是不可能的,我也不确定这是否可能。根据设计,可抢占虚拟机被删除,以便为普通虚拟机(如果给定区域中存在容量限制)留出空间,或定期将其与普通虚拟机区分开来。在后一种情况下,抢占可能看起来像一个启动/停止事件,但在前一种情况下,可能需要相当长的时间才能重新创建VM (B) 目前还没有很好的方法来实现这一目标
- 如果您的组只有一个实例,您可以在实例模板中对IP地址进行硬编码
- 否则,目前我能想到的唯一解决方案(除了使用负载平衡器)就是编写一个附加NAT IP的启动脚本
- 您可以在VM的接口上配置外部IP 如果在VM的接口上配置外部IP,则将VM的内部IP作为源IP的IP数据包将使用VM的 外部IP连接到Internet。NAT将不会在上执行 这样的包。但是,分配给接口的别名IP范围 仍然可以使用NAT,因为他们无法使用外部IP访问 互联网。使用此配置,您可以直接连接到 GKE虚拟机通过SSH,但GKE吊舱/容器使用云 NAT连接到互联网 请注意,通过负载平衡器外部IP访问虚拟机并不妨碍虚拟机使用NAT,只要虚拟机网络可用 接口本身没有外部IP地址
如果这对您来说没有问题,那么这就是解决方法。我找到了解决方法(特别是,在两次重新创建之间保留分配给可抢占VM实例的静态IP地址),但需要注意的是,托管实例组具有以下属性:
gcloud
(请参阅)创建从VM实例派生的新实例模板gcloud
命令如下所示:
gcloud compute instance-templates create vm-template-with-static-ip \
--source-instance=source-vm-id \
--source-instance-zone=us-east4-c
几乎不用说,这种设置只有在您想: