【问题标题】:Can I get or delete a pod/resource by UID?我可以通过 UID 获取或删除 pod/资源吗?
【发布时间】:2018-02-07 03:04:02
【问题描述】:

问题

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

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

(他们为什么要删除按UID删除,那么UID有什么用?)

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

因为我需要类似 replicas 的东西,并且没有一个控制器(如 Job、Deployment 等)适合我的情况。
UID 的好处是 kubernetes 会生成它们——那时我不必担心区分 pod,我只需保存返回的 UID。因此,如果我以后可以使用它来删除那个特定的 pod(“副本”),那就太好了。

问题

真的不能用UID获取/删除吗?

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

【问题讨论】:

    标签: kubernetes kubectl


    【解决方案1】:

    这可以作为 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 删除。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-21
        • 2019-06-21
        • 2020-07-19
        • 1970-01-01
        • 2020-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多