0

Ich bin ein Container-Engine-Cluster mit API-Python-Client für Google Cloud-Plattform.Ich habe mit Container-Erstellung erfolgreich erstellt, jetzt muss ich einige Yaml-Konfigurationen aber anwenden Vor dem Anwenden jeglicher kubernetes-yaml-Konfigurationen sollte der Cluster bereitgestellt werden, andernfalls ist die kubernetes-API nicht verfügbar. Ich muss beides (Container erstellen & Apply yaml configs) Dinge in einer einzigen Anfrage. Wie kann ich den Bereitstellungsstatus eines Clusters mit API erhalten?Erhalten Sie den Status der Google Cloud Container-Cluster-Bereitstellung mit API-Python-Client

Hier ist, was ich versucht habe:

Nach Cluster-Erstellung: Von 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) 

mir Hilfe, bitte!

Vielen Dank im Voraus!

Antwort

1

ist, wie ich in meinem Code tun:

""" 
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

Hallo @ Anthony! Vielen Dank für Ihre Antwort. Können Sie mir helfen, die IP-Adresse für den erstellten Cluster zu erhalten? –

2

Sie suchen nach dem Status des Vorgangs, dessen ID von create cluster call zurückgegeben wird. Sie müssen dann die Operation abrufen (über die Container-API, nicht über die Compute-API) und den Status der Operation prüfen, um festzustellen, ob sie FERTIG ist. Sobald Sie fertig sind, können Sie feststellen, ob ein Fehler aufgetreten ist, indem Sie sich die Statusmeldung in der Operation ansehen. Wenn es leer ist, ist der Aufruf der Cluster-API erfolgreich. Wenn es nicht leer ist, ist der Anruf fehlgeschlagen und die Statusmeldung zeigt Ihnen warum. Sobald der Vorgang zum Erstellen des Clusters abgeschlossen ist, ist der Aufruf von get-credentials erfolgreich. Diese

+0

, wie kann ich den Status von Antwort Cluster-Objekt abzurufen, habe ich versucht: 'Antwort [‚status‘]' aber es wird nicht den aktuellen Status der Rückkehr, es gibt so etwas zurück wie '{'name': 'newyear', 'initialNodeCount': 8, 'status': 'PROVISIONING',} bedeutet vollständiges Cluster-Objekt! –

+0

Der [Cluster-Status] (https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.zones.clusters#Status) kann PROVISIONIEREN, AUSFÜHREN, RECONCILING, STOPPING oder ERROR sein. Der Clusterstatus sollte von PROVISIONING in RUNNING zu der Zeit wechseln, zu der der Vorgang zum Erstellen des Clusters beendet ist. –

+0

Können Sie bitte ein Codebeispiel dafür schreiben? –

Verwandte Themen