首页 > 解决方案 > 获取 Kubernetes 部署的 pod 的推荐方法是什么?

问题描述

特别是考虑到创建和更新部署所涉及的所有异步过程,我发现很难可靠地找到与给定部署的当前版本关联的当前 pod。

目前,我这样做:

  1. 向部署模板添加唯一标签。
  2. 获取部署的修订号。
  3. 获取所有带有标签的副本集。
  4. 进一步过滤它们以找到具有正确修订号的那个。
  5. 从副本集中提取 pod 模板哈希。
  6. 获取带有标签的所有 pod 以及 pod 模板哈希。

这是尴尬和复杂的。此外,我不确定(4)和(6)是否保证只产生想要的对象。但我不能按 ownerReferences 过滤,可以吗?

有没有更健壮更简单的方法?

标签: kuberneteskubernetes-podkubernetes-deployment

解决方案


当您创建 Deployment 时,它会创建 ReplicaSet,后者会创建 Pod。

ReplicaSet 包含“ownerReferences”路径,其中包括父部署的名称和 UID。

Pod 包含与父 ReplicaSet 的链接相同的路径。

以下是 ReplicaSet 信息的示例:

# kubectl get rs nginx-deployment-569477d6d8 -o yaml
apiVersion: extensions/v1beta1
kind: ReplicaSet
...
name: nginx-deployment-569477d6d8
namespace: default
ownerReferences:
- apiVersion: extensions/v1beta1
  blockOwnerDeletion: true
  controller: true
  kind: Deployment
  name: nginx-deployment
  uid: acf5fe8a-5d0e-11e8-b14f-42010a8000fc

...


推荐阅读