像kubernetes API中的选项之类的回调方法

时间:2018-03-28 16:33:08

标签: kubernetes minikube

我一直在使用kubernetes REST API调用来使用python客户端创建部署和服务。现在的情况是我必须创建部署,当pod准备就绪时,我必须使用一些回调方法告诉用户他们的部署已准备就绪。我可以使用像

这样的cli实现这一点
watch kubectl describe pod <pod-name>

并调查pod状态。 但是,我如何实现一个回调函数,当pod状态改变时调用该函数,例如从container creating -> ready。 任何帮助将不胜感激。

2 个答案:

答案 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

的所有活动