簡體   English   中英

使用api python客戶端獲取Google雲容器集群置備的狀態

[英]Get the status of google cloud container cluster provisioning using api python client

我正在使用API​​ python客戶端為Google Cloud Platform創建容器引擎集群。我已經成功完成了容器創建,現在我需要應用一些yaml配置,但是在應用任何kubernetes yaml配置之前,應該先配置該集群,否則kubernetes API不可用。 我需要在單個請求中同時執行兩個操作(容器創建和應用yaml配置)。 如何使用api獲取群集的配置狀態?

這是我嘗試過的:

創建集群后: 從views.py:

print('Fetching Cluster configs ....')
cc = subprocess.call(
                'gcloud container clusters get-credentials ' + deployment.deploymentName.lower() + ' --zone ' + deployment.region + ' --project ' + deployment.project,
                shell=True)
print(cc)
while cc == 1:
     cc = subprocess.call(
                    'gcloud container clusters get-credentials ' + deployment.deploymentName.lower() + ' --zone ' + deployment.region + ' --project ' + deployment.project,
                    shell=True)
     print(cc)

請幫幫我!

提前致謝!

您要查找的是操作的狀態,該操作的ID是從創建集群調用返回的。 然后,您需要獲取操作(通過容器API而非計算API),並檢查操作的狀態以查看其是否完成。 完成后,您可以通過查看操作中的狀態消息來確定是否存在錯誤。 如果為空,則創建集群API調用成功。 如果非空,則呼叫失敗,並且狀態消息將告訴您原因。 創建集群的操作完成后,get-credentials調用將成功。

這是我在代碼中的工作方式:

"""
If you have a credentials issue, run:

gcloud beta auth application-default login

"""
import time

import googleapiclient.discovery

service = googleapiclient.discovery.build('container', 'v1')
clusters_resource = service.projects().zones().clusters()
operations_resource = service.projects().zones().operations()


def create_cluster(project_id, zone, config, async=False):
    req = clusters_resource.create(projectId=project_id, zone=zone, body=config)
    operation = req.execute()

    if async:
        return

    while operation['status'] == 'RUNNING':
        time.sleep(1)
        req = operations_resource.get(projectId=project_id, zone=zone, operationId=operation['name'])
        operation = req.execute()

    return operation['status'] == 'DONE'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM