一、创建 并启动 ConfigMap cm-qijing.yaml
文件
cat > cm-qijing.yaml <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
name: cm-qijing
data:
apploglevel: info
appdatadir: /var/data
EOF
kubectl create -f cm-qijing.yaml
- 部署 ConfigMap
二、创建 Pod test-cm-pod.yaml
将 ConfigMap “cm-qjing.yaml” 中的内容通过 envFrom
引入到 test-cm-pod.yaml
中。
cat > test-cm-pod <<EOF
apiVersion: v1
kind: Pod
metadata:
name: cm-test-pod
spec:
containers:
- name: cm-test
image: busybox
command: ["/bin/sh", "-c", "env"]
envFrom:
- configMapRef
name: cm-qijing
restartPolicy: Never
EOF
验证结果
[root@k8s0 test_config_map]# kubectl create -f test-cm-pod.yaml
pod/cm-test-pod created
[root@k8s0 test_config_map]# kubectl get po
NAME READY STATUS RESTARTS AGE
cm-test-pod 0/1 ContainerCreating 0 4s
[root@k8s0 test_config_map]# kubectl get po
NAME READY STATUS RESTARTS AGE
cm-test-pod 0/1 ContainerCreating 0 6s
[root@k8s0 test_config_map]# kubectl get po
NAME READY STATUS RESTARTS AGE
cm-test-pod 0/1 ContainerCreating 0 8s
[root@k8s0 test_config_map]# kubectl get po
NAME READY STATUS RESTARTS AGE
cm-test-pod 0/1 Completed 0 44s
[root@k8s0 test_config_map]# kubectl logs -f po/cm-test-pod
apploglevel=info
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://169.169.0.1:443
HOSTNAME=cm-test-pod
SHLVL=1
HOME=/root
KUBERNETES_PORT_443_TCP_ADDR=169.169.0.1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
appdatadir=/var/data
KUBERNETES_PORT_443_TCP=tcp://169.169.0.1:443
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_HOST=169.169.0.1
PWD=/
- 可以看到,在 pod 输出的日志中,咱们看到了 apploglevel 、appdatadir 这两个环境变量,还有对应的值,OK。
--
需要说明的是,环境变量的名称收 POSIX 命名规范([a-zA-Z_][a-zA-Z0-9])约束,不能以数字开头。如果包含非法字符,则系统将跳过该条环境变量的创建,并记录一个 Event 来提示环境变量无法生成,但并不阻止 Pod 的启动。*