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

时间:2017-08-29 15:18:16

标签: kubernetes kubectl

问题

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

似乎也不能 获取 其资源(https://github.com/kubernetes/kubernetes/issues/20572)。

(为什么他们删除UID删除,那么UID的用途是什么?)

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

因为我需要像 replicas 这样的东西,而且没有任何控制器(如Job,Deployment等)适合我的情况。
关于UID的好处是kubernetes生成它们 - 我不必担心区分pod然后,我只保存返回的UID。因此,如果我以后可以使用它来删除特定的pod(" replica"),那将会很棒。

问题

是否真的无法使用UID 获取 / 删除

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

2 个答案:

答案 0 :(得分:0)

这可以作为 UID 的 get

<块引用>

使用 kubectl custom-columns

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

$ kubectl get pods -n <namespace> -o custom-columns=PodName:.metadata.name,PodUID:.metadata.uid

来源:How do I get the pod ID in Kubernetes?

使用 awkxargs,您也可以使用 custom-columns 删除。

答案 1 :(得分:-1)

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

简短的回答是,您不应该按照UID或名称跟踪pod,而是使用selector来跟踪Deployments / ReplicaSets / Services。如果pod与该选择器匹配,则可以检查Pod的元数据或Pod规范以查看是否需要 因某种原因删除了。