Estoy usando kubernetes-client/python y quiero escribir un método que bloquee el control hasta que un conjunto de Pods esté en estado Listo (estado En ejecución). Descubrí que kubernetes admite el comando wait --for para hacer lo mismo a través del comando. ¿Puede alguien ayudarme con la forma de lograr la misma funcionalidad usando el cliente Python de Kubernetes?
Para ser precisos, estoy principalmente interesado en el equivalente de-
kubectl wait --for condition=Ready pod -l 'app in (kafka,elasticsearch)'
Puede utilizar la funcionalidad de watch
disponible en la biblioteca del cliente.
from kubernetes import client, config, watch config.load_kube_config() w = watch.Watch() core_v1 = client.CoreV1Api() for event in w.stream(func=core_v1.list_namespaced_pod, namespace=namespace, label_selector=label, timeout_seconds=60): if event["object"].status.phase == "Running": w.stop() end_time = time.time() logger.info("%s started in %0.2f sec", full_name, end_time-start_time) return # event.type: ADDED, MODIFIED, DELETED if event["type"] == "DELETED": # Pod was deleted while we were waiting for it to start. logger.debug("%s deleted before it started", full_name) w.stop() return