[英]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.