订阅GCE自动缩放组中的实例列表更新

时间:2018-11-02 16:05:19

标签: google-compute-engine

是否可以获取/订阅GCE自动缩放组中正在运行的实例列表。
通过gcloud工具,我们可以定期调用列表,但我想订阅列表更新。 我怀疑GCE中目前是否有这样的API实现(项目元数据除外),但是我需要在我的应用程序中具有这样的功能,以便我可以在上面编写逻辑。
也许有人有类似案件的经验,或者对此有任何“ hack”?

2 个答案:

答案 0 :(得分:2)

据我所知,没有方法可以订阅托管实例组中的实例列表。

您将需要手动轮询托管实例组以确定当前实例的列表。

gcloud compute instance-groups managed list <NAME>

这是一项可以在Cloud Functions中轻松完成的任务。例如,以固定的时间间隔扫描组并通过电子邮件将列表中的列表发送给您。可能性是无限的。

答案 1 :(得分:0)

您可以使用(1)pubsub主题“ instance-group-changes”和(2)在启动和关闭脚本中向其推送事件来轻松构建此文件。

(1)创建“实例组更改”主题

gcloud init
gcloud pubsub topics create instance-group-changes

(2)修改实例组的启动脚本以发送addInstance事件

注意:请确保在实例模板中添加“ cloud pubsub api访问范围”

使用元数据服务获取实例ID,主机名等。

TOPIC=instance-group-changes
instance_id=`curl -s  http://metadata.google.internal/0.1/meta-data/instance-id`
gcloud pubsub topics publish "$TOPIC" \
   --attribute 'event=addInstance' \
   --message "instance_id=$instance_id"

(3)修改关闭脚本以发送removeInstance事件

TOPIC=instance-group-changes
instance_id=`curl -s http://metadata.google.internal/0.1/meta-data/instance-id`
gcloud pubsub topics publish "$TOPIC" \
   --attribute 'event=removeInstance' \
   --message "instance_id=$instance_id"

测试

创建订阅

gcloud pubsub subscriptions create sub-instance-group-changes --topic=instance-group-changes

从订阅中拉出

gcloud pubsub subscriptions pull --limit  5 sub-instance-group-changes
┌─────────────────────────────────┬─────────────────┬──────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│               DATA              │    MESSAGE_ID   │      ATTRIBUTES      │                                                                               ACK_ID                                                                               │
├─────────────────────────────────┼─────────────────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│
│ instance_id=5396233750823583338 │ 407816607936940 │ event=addInstance    │ XkASTD4HRElTK0MLKlgRTgQhIT4wPkVTRFAGFixdRkhRNxkIaFEOT14jPzUgKEUaC1MTUVx1Hk4Qb1gzdQdRDRlze2hxO1kaAFMTUHRdURsfWVx-SgNRChFze2d1bVMQBwtBU1b55f_L9q0zZhs9XBJLLD5-NTJFQQ │
│ instance_id=5396233750823583338 │ 407816742842477 │ event=removeInstance │ XkASTD4HRElTK0MLKlgRTgQhIT4wPkVTRFAGFixdRkhRNxkIaFEOT14jPzUgKEUaC1MTUVx1Hk4Qb1gzdQdRDRlze2hxO1kaAFMTUHRcURsfWVx-SgNRChFze2ZxaFIXAwZCVFb55f_L9q0zZhs9XBJLLD5-NTJFQQ │