我可以通过 UID 获取或删除 pod/资源吗?

Blo*_*oke 11 kubernetes kubectl

问题

以前似乎可以通过 UID 删除 pod,但已被删除(https://github.com/kubernetes/kubernetes/issues/40121)。

似乎也无法通过其资源获取Pod(https://github.com/kubernetes/kubernetes/issues/20572)。

(为什么取消了按UID删除,那UID有什么用呢?)

为什么我首先要使用 UID,而不是名称?

因为我需要诸如副本之类的东西,但没有一个控制器(如作业、部署等)适合我的情况。
UID 的好处是 kubernetes 生成它们——这样我就不必担心区分 pod,我只需保存返回的 UID 即可。因此,如果我稍后可以使用它来删除该特定的 Pod(“副本”),那就太好了。

问题

难道真的不能使用UID来获取/删除吗?

那么我唯一的选择是自己负责区分 Pod(例如,保留一个计数器或自己生成一个唯一的 ID 并将其设置为名称或标签)?

小智 5

这相当于通过 UID获取

使用 kubectlcustom-columns

列出所有 PodName 及其命名空间的 UID:

$ kubectl get pods -n <namespace> -o custom-columns=PodName:.metadata.name,PodUID:.metadata.uid
Run Code Online (Sandbox Code Playgroud)

来源:如何在 Kubernetes 中获取 pod ID?

使用awkandxargs也可以删除 with custom-columns


Ian*_*wis -2

我假设您正在编写一个控制器来使用 TPR 或CRD管理一组副本

简而言之,您不应该通过 UID 或名称来跟踪 Pod,而应该使用像 Deployments/ReplicaSets/Services 那样的选择器。如果 Pod 与该选择器匹配,您可以检查 Pod 的元数据或 Pod 规范,以查看是否由于某种原因需要删除它。