kubernetes - 从 pod 中获取创建 pod 的 Deployment 的 Kubernetes uid
问题描述
我希望能够从 pod 中知道创建 pod 的 Deployment 的 Kubernetes uid。
这样做的原因是 Pod 可以生成另一个 Deployment,并将该 DeploymentOwnerReference
的设置设置为原始 Deployment(因此在删除原始 Deployment 时它会收集垃圾)。
从这里获得灵感,我尝试过*:
- 使用字段引用作为环境变量:
containers:
- name: test-operator
env:
- name: DEPLOYMENT_UID
valueFrom:
fieldRef: {fieldPath: metadata.uid}
- 通过卷上的文件使用
downwardAPI
和公开:
containers:
volumeMounts:
- mountPath: /etc/deployment-info
name: deployment-info
volumes:
- name: deployment-info
downwardAPI:
items:
- path: "uid"
fieldRef: {fieldPath: metadata.uid}
*这两者都属于spec.template.spec
一种资源:部署。
然而,对于这两者,uid 是 Pod 的,而不是 Deployment 的。我正在尝试做的事情可能吗?
解决方案
我认为不可能获得 Deployment 本身的 UID,您可以runAsUser
在创建部署时设置任何范围。
尝试使用以下命令获取现有 pod 的 UID:
kubectl get pod -o jsonpath='{range .items[*]}{@.metadata.name}{" runAsUser: "}{@.spec.containers[*].securityContext.runAsUser}{" fsGroup: "}{@.spec.securityContext.fsGroup}{" seLinuxOptions: "}{@.spec.securityContext.seLinuxOptions.level}{"\n"}{end}'
这不是您想要得到的确切内容,但它可以为您提供提示。
要在创建时设置 UID Deployment
,请参见下面的示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: toolbox2
labels:
app: toolbox2
spec:
replicas: 3
selector:
matchLabels:
app: toolbox2
template:
metadata:
labels:
app: toolbox2
spec:
securityContext:
supplementalGroups: [1000620001]
seLinuxOptions:
level: s0:c25,c10
containers:
- name: net-toolbox
image: quay.io/wcaban/net-toolbox
ports:
- containerPort: 2000
securityContext:
runAsUser: 1000620001
推荐阅读
- c++ - 图像未在 OpenCV 4.xx 中加载
- visual-studio - 如何在 Visual Studio 寄存器面板中显示标志?
- javascript - 表单提交后如何重置表单并启用提交按钮(react-formio)?
- c# - 我需要注册 c# 表单的帮助
- user-interface - 不兼容的类型:void 不能转换为 String
- r - R:每月汇总行数
- r - 在 r 中使用 gtrends 循环下载多个关键字的 Google 搜索数据
- maven - 了解 Tycho 错误编译:缺少要求
- api - Instagram Api 错误代码 400 无效响应类型
- winapi - 如何检查相对路径是否存在