0

我正在使用API​​ python客戶端爲Google雲平臺創建容器引擎集羣。我已成功完成容器創建,現在我需要應用一些yaml配置,但是在應用任何kubernetes yaml配置之前,應該提供集羣,否則kubernetes API不可用。 我需要在一個請求中同時執行兩個操作(容器創建&應用yaml配置)。 如何獲取使用api的集羣的供應狀態?使用api python客戶端獲取google雲容器集羣配置的狀態

這是我曾嘗試:

羣集創建後: 從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) 

請幫助我!

在此先感謝!

回答

1

這是我做在我的代碼:

""" 
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' 
+0

嗨@Anthony!感謝您的回答,請您幫助我爲創建的羣集獲取IP地址! –

2

您正在查找的是從create cluster call返回ID的操作狀態。然後您需要獲取操作(通過容器API,而不是計算API)並檢查操作的狀態以查看它是否完成。一旦完成,您可以通過查看操作中的狀態消息來確定是否有錯誤。如果爲空,則創建羣集API調用成功。如果它不是空的,則調用失敗,狀態消息會告訴你爲什麼。一旦完成創建集羣的操作,get-credentials調用將會成功。

+0

我怎麼能檢索響應組對象的狀態,我曾嘗試:'響應[「狀態」]',但它沒有返回的實際情況,它返回類似於'{'name':'newyear','initialNodeCount':8,'status':'PROVISIONING',}'表示完整的簇對象! –

+0

[羣集狀態](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.zones.clusters#Status)可以是配置,運行,重新配置,停止或錯誤。集羣狀態應在創建集羣的操作完成的同時從PROVISIONING轉換爲RUNNING。 –

+0

你能爲此寫一個代碼示例嗎! –

相關問題