k8s容器变量的定义和使用
一、启动命令参数使用变量
使用args数组设置多个参数,值得注意的是变量需要加上括号 $(VAR),否则不会生效
spec:
containers:
- name: command-demo-container
image: debian
command: ["printenv"]
args: ["HOSTNAME", "$(PATH)"]
二、pod设置环境变量
创建 Pod 时,可以为其下的容器设置环境变量。通过配置文件的 env 或者 envFrom 字段来设置环境变量。
有5种方式设置环境变量
直接定义
spec:
containers:
- name: envar-demo-container
image: gcr.io/google-samples/node-hello:1.0
env:
- name: DEMO_GREETING
value: "Hello from the environment"
通过configmap定义
configmap定义
apiVersion: v1
kind: ConfigMap
metadata:
name: env-config
namespace: default
data:
log_level: INFO
pod使用
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: env-config
key: log_level
通过secrets定义
sceret定义
apiVersion: v1
kind: Secret
metadata:
name: test-secret
data:
username: bXktYXBw
password: Mzk1MjgkdmRnN0pi
pod使用
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: test-secret
key: username
通过pod信息定义
包括pod的固定信息spec,metadata,和实时状态 status 信息 定义方式 valueFrom.fieldRef.fieldPath
env:
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
通过pod资源定义
定义方式 valueFrom.resourceFieldRef.resource
env:
- name: MY_CPU_REQUEST
valueFrom:
resourceFieldRef:
containerName: test-container
resource: requests.cpu