1

我正在寻找使用 Kubernetes python 客户端来删除部署,然后阻止并等待所有关联的 pod 也被删除。我发现的很多示例都推荐使用如下的 watch 函数。

try:
    # try to delete if exists
    AppsV1Api(api_client).delete_namespaced_deployment(namespace="default", name="mypod")
except Exception:
    # handle exception

# wait for all pods associated with deployment to be deleted. 
for e in w.stream(
    v1.list_namespaced_pod, namespace="default",
    label_selector='mylabel=my-value",
    timeout_seconds=300):

    pod_name = e['object'].metadata.name
    print("pod_name", pod_name)
    if e['type'] == 'DELETED':
        w.stop()
        break

但是,我发现这有两个问题。

  1. 如果 pod 已经消失(或者如果其他进程在执行到达 watch 流之前删除了所有 pod),那么 watch 将找不到任何事件并且 for 循环将卡住,直到超时到期。如果没有事件,Watch 似乎不会产生活动。
  2. 在看到 pod 活动的事件流中的事件后,如何知道所有 pod 都被删除了?数起来似乎很脆弱。

我基本上希望kubectl delete --wait用 python 脚本替换该功能。

感谢您对此的任何见解。

4

0 回答 0