是否有一个gcloud API检测计算引擎服务器完全启动?

我创build了一个VM实例。 我可以在SSH Daemon启动后立即连接到它。 但是这个还为时过早,因为内核启动只有大约一半。 30%。 内核启动完成后,是否有gcloud或其他API来获取VM状态?

 Nov 18 10:58:51 image-name google: No startup script found in metadata. Nov 18 10:58:53 image-name kernel: [ 27.491829] aufs au_opts_verify:1570:docker[2414]: dirperm1 breaks the protection by the permission bits on the lower branch Nov 18 10:58:53 image-name kernel: [ 27.703142] aufs au_opts_verify:1570:docker[2414]: dirperm1 breaks the protection by the permission bits on the lower branch Nov 18 10:58:53 image-name kernel: [ 27.735867] aufs au_opts_verify:1570:docker[2414]: dirperm1 breaks the protection by the permission bits on the lower branch Nov 18 10:58:53 image-name kernel: [ 27.771732] aufs au_opts_verify:1570:docker[2260]: dirperm1 breaks the protection by the permission bits on the lower branch Nov 18 10:58:53 image-name kernel: [ 27.797540] device vethfa3ab85 entered promiscuous mode Nov 18 10:58:53 image-name kernel: [ 27.804420] IPv6: ADDRCONF(NETDEV_UP): vethfa3ab85: link is not ready Nov 18 10:58:53 image-name kernel: [ 28.028306] IPv6: ADDRCONF(NETDEV_CHANGE): vethfa3ab85: link becomes ready Nov 18 10:58:53 image-name kernel: [ 28.035505] docker0: port 1(vethfa3ab85) entered forwarding state Nov 18 10:58:53 image-name kernel: [ 28.041963] docker0: port 1(vethfa3ab85) entered forwarding state Nov 18 10:58:53 image-name kernel: [ 28.048532] IPv6: ADDRCONF(NETDEV_CHANGE): docker0: link becomes ready Nov 18 10:58:54 image-name kernel: [ 28.980082] IPv6: eth0: IPv6 duplicate address fe80::42:acff:fe11:1 detected! ->>> about here I can SSH to the server Nov 18 10:59:08 image-name kernel: [ 43.068094] docker0: port 1(vethfa3ab85) entered forwarding state Nov 18 10:59:53 image-name kernel: [ 87.944452] aufs au_opts_verify:1570:docker[2864]: dirperm1 breaks the protection by the permission bits on the lower branch Nov 18 10:59:53 image-name kernel: [ 88.001012] aufs au_opts_verify:1570:docker[2864]: dirperm1 breaks the protection by the permission bits on the lower branch Nov 18 10:59:53 image-name kernel: [ 88.049510] aufs au_opts_verify:1570:docker[2815]: dirperm1 breaks the protection by the permission bits on the lower branch ->>> I want to know about this point in the startup process 

我的问题是,当内核进度低于30%,并且一些进程尚未启动时,我可以使用SSH连接到它。 我想检测如果服务器已完成启动。 还是有一个脚本,可以推送到服务器(通过GCE API)通知我什么时候服务器完全启动?

gcloud compute instances describe image-name在实例启动的时刻返回相同的输出,直到内核启动完成。

(在我的情况下,我使用Node.js GCE API,但这不应该有任何区别。)

目前我不知道有任何这样的谷歌本地API可以提供实例启动的进度。

但是这是一个快速的解决方法,如果这符合您的要求。

您可以使用Google启动脚本或本机linux rc.local。 这个概念是一样的,所以rc.local的情况下解释它[因为它是通用的,而不是绑定到谷歌]

我们知道在启动序列中运行的最后一个进程是rc.local。 在这个rc.local [它本身是一个sh或bash脚本]中的任何命令或脚本或调用将在引导过程结束时执行。

所以这个想法是在rc.local的情况下在谷歌图像,有一个脚本或一个调用发送您的通知或写入输出到中央系统,如KV或云存储启动全部完成的状态。

与Kamran类似,但是这是我如何完成这项工作。 这取决于使用谷歌启动脚本和gcloud默认安装的图像(尽pipe你可以重写这个只是使用curl和API调用)

在实例创build/configuration上,我设置了一个自定义元数据标志: serverready=False

在我的谷歌启动脚本的结尾,我有这样的:

sudo gcloud compute instances add-metadata $(hostname) \ --metadata serverready=True \ --zone $(curl \ "http://metadata.google.internal/computeMetadata/v1/instance/zone" \ -H "Metadata-Flavor: Google"|cut -d/ -f4)

当我运行实例创build时,我可以轮询元数据的serverready键,并设置我的应用程序等待,直到它看到serverready=True