我一直在使用kubernetes REST API调用来使用python客户端创建部署和服务。现在的情况是我必须创建部署,当pod准备就绪时,我必须使用一些回调方法告诉用户他们的部署已准备就绪。我可以使用像
这样的cli实现这一点watch kubectl describe pod <pod-name>
并调查pod状态。
但是,我如何实现一个回调函数,当pod状态改变时调用该函数,例如从container creating -> ready
。
任何帮助将不胜感激。
答案 0 :(得分:1)
有一个Python Kubernetes客户端库
pip install kubernetes
from kubernetes import client, config
def get_pods(name, exact=False, namespace='default'):
# TODO check if this could be created once in an object.
config.load_kube_config(os.path.join(os.environ["HOME"], '.kube/config'))
v1 = client.CoreV1Api()
pod_list = v1.list_namespaced_pod(namespace)
if exact:
relevant_pods = [pod for pod in pod_list.items if name == pod.metadata.name]
else:
relevant_pods = [pod for pod in pod_list.items if name in pod.metadata.name]
return relevant_pods
您可以在大多数用例中使用Airflow
https://kubernetes.io/blog/2018/06/28/airflow-on-kubernetes-part-1-a-different-kind-of-operator/
我写了一个库,它对kubernetes事件及其他事件做出反应。
它是反应式的,它直接与Helm的声明式风格相反,并且是可替换Helm的可调试python部署工具。
https://github.com/hamshif/Wielder
pip安装向导
使用开源示例
https://github.com/hamshif/wield-services
并与Apache Airflow串联
https://github.com/hamshif/dags/tree/6daf6313d35824b58efa7f61f90e30a169946532
答案 1 :(得分:0)
我想您可以在部署应用程序的命名空间上查看the events,并对此做出反应
您在
的所有活动kubectl describe pod
末尾看到的事件将保留在etcd中,并提供有关群集中发生情况的高级信息。要列出您可以使用kubectl get events