我想知道库伯内特斯的部署的I,创造了吊舱,从荚。
这样做的原因是,Pod可以生成另一个部署,并将该部署的OwnerReference设置为原始部署(因此,当删除原始部署时,它会被垃圾收集)。
从here那里得到灵感,我试过*
使用字段引用作为env vars的
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的uid,而不是部署。我想做的事有可能吗?
发布于 2021-11-04 01:08:33
行为是正确的,Downward API用于pod而不是deployment/replicaset。
因此,我猜解决方案是在spec.template.metadata.labels中手动设置部署名称,然后采用Downward API将标签作为env变量注入。
发布于 2021-11-29 13:51:06
我认为不可能获得部署本身的UID,您可以在创建部署时设置任意范围的runAsUser。
尝试使用以下命令获取现有荚的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}'这不是你想要的,但它可以给你一个提示。
要在创建Deployment时设置UID,请参见下面的示例:
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: 1000620001https://stackoverflow.com/questions/69829939
复制相似问题