【发布时间】:2022-11-10 19:46:30
【问题描述】:
我正在寻找使用 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
但是,我发现这有两个问题。
- 如果 pod 已经消失(或者如果其他进程在执行到达 watch 流之前删除了所有 pod),那么 watch 将找不到任何事件并且 for 循环将卡住,直到超时到期。如果没有事件,Watch 似乎不会产生活动。
- 在 pod 活动的事件流中看到事件后,如何知道所有 pod 都被删除了?数起来似乎很脆弱。
我基本上希望用 python 脚本替换
kubectl delete --wait功能。感谢您对此的任何见解。
【问题讨论】:
-
你有没有找到办法做到这一点? +1 你所说的问题。
标签: python kubernetes client kubernetes-python-client