正文
一、创建 并启动 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 的启动。*