是否有方法获取/订阅GCE自动缩放组中的/for-running实例列表
通过gcloud工具,我们可以定期调用列表,但我想订阅列表更新。我怀疑目前在GCE中是否有这样的API实现(除了项目元数据(,但我需要在我的应用程序中拥有这样的功能,这样我就可以为此编写逻辑
也许有人经历过类似的案件,或者知道这方面的"黑客"?
据我所知,没有任何方法可以订阅托管实例组中的实例列表。
您需要手动轮询托管实例组以确定当前实例的列表。
gcloud compute instance-groups managed list <NAME>
这是一项在云功能中可以非常容易地完成的任务。以固定的时间间隔扫描小组,并通过电子邮件向您发送Json中的列表。可能性是无穷的。
您可以使用(1(pubsub主题"实例组更改"和(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 │