是否可以获取/订阅GCE自动缩放组中正在运行的实例列表。
通过gcloud工具,我们可以定期调用列表,但我想订阅列表更新。
我怀疑GCE中目前是否有这样的API实现(项目元数据除外),但是我需要在我的应用程序中具有这样的功能,以便我可以在上面编写逻辑。
也许有人有类似案件的经验,或者对此有任何“ hack”?
答案 0 :(得分:2)
据我所知,没有方法可以订阅托管实例组中的实例列表。
您将需要手动轮询托管实例组以确定当前实例的列表。
gcloud compute instance-groups managed list <NAME>
这是一项可以在Cloud Functions中轻松完成的任务。例如,以固定的时间间隔扫描组并通过电子邮件将列表中的列表发送给您。可能性是无限的。
答案 1 :(得分:0)
您可以使用(1)pubsub主题“ instance-group-changes”和(2)在启动和关闭脚本中向其推送事件来轻松构建此文件。
gcloud init
gcloud pubsub topics create instance-group-changes
注意:请确保在实例模板中添加“ 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"
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 │