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

你能为此写一个代码示例吗! –

相关问题