我试图将pod定义中的第一个容器参数复制到环境变量中。这是我的pod模板文件。
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: test
image: nginx
command: [ "/bin/bash", "-c", "--" ]
args: ["sleep 30"]
env:
- name: "TEST_ENV"
valueFrom:
fieldRef:
fieldPath: spec.containers[0].args[0]
restartPolicy: Never
但是在执行kubectl apply
时,我得到以下错误。The Pod "myapp-pod" is invalid: spec.containers[0].env[0].valueFrom.fieldRef.fieldPath: Invalid value: "spec.containers[0].args[0]": error converting fieldPath: field label not supported: spec.containers[0].args[0]
引用这个论点的正确方法是什么?
1条答案
按热度按时间8yparm6h1#
使用
fieldRef
时,只有有限数量的字段可用。来自文档:
只有部分Kubernetes API字段可通过向下API使用。本节列出了您可以使用的字段。
通过fieldRef获取信息
metadata.name
metadata.namespace
metadata.uid
metadata.annotations['<KEY>']
metadata.labels['<KEY>']
以下信息可通过环境变量获得,但不能作为downwardAPI卷fieldRef获得:
spec.serviceAccountName
spec.nodeName
status.hostIP
status.podIP
以下信息可通过downwardAPI volume fieldRef获得,但不能作为环境变量:
metadata.labels
metadata.annotations
在任何情况下,由于容器参数可用于在容器内运行的任何服务,因此您应该能够从代码参数array/list/argv/etc中检索它们。