将 cm 中的配置信息,设置到 Pod 的环境变量中,如果 cm 有修改,环境变量中的值并不会同步修改,除非重启。
[root@master ~]# kubectl create cm cm1 --from-literal=name=jiangbo --from-literal=age=44 configmap/cm1 created [root@master ~]# kubectl describe cm cm1 Name: cm1 Namespace: default Labels: <none> Annotations: <none> Data ==== age: ---- 44 name: ---- jiangbo Events: <none>
apiVersion: v1 kind: Pod metadata: name: spring-k8s spec: containers: - name: spring-k8s envFrom: - configMapRef: name: cm1 image: jiangbo920827/spring-k8s:liveness ports: - containerPort: 8080
[root@master ~]# kubectl exec spring-k8s -- sh -c 'printenv name age' jiangbo 44
apiVersion: v1 kind: Pod metadata: name: spring-k8s spec: containers: - name: spring-k8s envFrom: - prefix: ENV_ configMapRef: name: cm1 image: jiangbo920827/spring-k8s:liveness ports: - containerPort: 8080
[root@master ~]# kubectl exec spring-k8s -- sh -c 'env | grep ENV' ENV_name=jiangbo ENV_age=44
apiVersion: v1 kind: Pod metadata: name: spring-k8s spec: containers: - name: spring-k8s env: - name: CHINESE_NAME valueFrom: configMapKeyRef: name: cm1 key: name - name: ENV_AGE valueFrom: configMapKeyRef: name: cm1 key: age image: jiangbo920827/spring-k8s:liveness ports: - containerPort: 8080
[root@master ~]# kubectl exec spring-k8s -- env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin HOSTNAME=spring-k8s CHINESE_NAME=jiangbo ENV_AGE=44 KUBERNETES_SERVICE_HOST=10.96.0.1 KUBERNETES_SERVICE_PORT=443 KUBERNETES_SERVICE_PORT_HTTPS=443 KUBERNETES_PORT=tcp://10.96.0.1:443 KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443 KUBERNETES_PORT_443_TCP_PROTO=tcp KUBERNETES_PORT_443_TCP_PORT=443 KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1 LANG=C.UTF-8 JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk/jre JAVA_VERSION=8u212 JAVA_ALPINE_VERSION=8.212.04-r0 HOME=/root
使用 cm 生成环境变量,一旦生成就不可以修改。