特别是考虑到创建和更新部署所涉及的所有异步过程,我发现很难可靠地找到与给定部署的当前版本关联的当前 pod。
目前,我这样做:
- 向部署模板添加唯一标签。
- 获取部署的修订号。
- 获取所有带有标签的副本集。
- 进一步过滤它们以找到具有正确修订号的那个。
- 从副本集中提取 pod 模板哈希。
- 获取带有标签的所有 pod 以及 pod 模板哈希。
这是尴尬和复杂的。此外,我不确定(4)和(6)是否保证只产生想要的对象。但我不能按 ownerReferences 过滤,可以吗?
有没有更健壮更简单的方法?
特别是考虑到创建和更新部署所涉及的所有异步过程,我发现很难可靠地找到与给定部署的当前版本关联的当前 pod。
目前,我这样做:
这是尴尬和复杂的。此外,我不确定(4)和(6)是否保证只产生想要的对象。但我不能按 ownerReferences 过滤,可以吗?
有没有更健壮更简单的方法?
当您创建 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
...