kubernetes - 获取 Kubernetes 部署的 pod 的推荐方法是什么?
问题描述
特别是考虑到创建和更新部署所涉及的所有异步过程,我发现很难可靠地找到与给定部署的当前版本关联的当前 pod。
目前,我这样做:
- 向部署模板添加唯一标签。
- 获取部署的修订号。
- 获取所有带有标签的副本集。
- 进一步过滤它们以找到具有正确修订号的那个。
- 从副本集中提取 pod 模板哈希。
- 获取带有标签的所有 pod 以及 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
...
推荐阅读
- python - 类型错误:删除()缺少 1 个必需的位置参数:'indexPosition'
- windows - 如何在本地模拟 Travis CI 窗口构建?
- powershell - 正确编写 Powershell 逻辑表达式?
- javascript - fetch API 可以获取文件的文本吗?
- graphql - 在 DGraph 中定义一个 GraphQL 突变,在另一个节点中添加一个联合类型的节点
- docker - Keycloak Docker 部署
- python - 为什么我的宇宙飞船不指向地球?
- javascript - 单击时Jquery分页按钮滚动到顶部
- python - 下面的字符串匹配程序的时间复杂度是多少?
- node.js - 保存对象类nodejs的存储