Linux - K8S - ConfigMap

# ConfigMap

# env - valueFrom - configMapKeyRef
[19:36:29 root@master1 storage]#cat 12-storage-configmap-simple-env.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config
data:
  port: "10086"
  user: "www"
---
apiVersion: v1
kind: Pod
metadata:
  name: configmap-env-test
spec:
  containers:
  - name: nginx1
    image: 10.0.0.55:80/mykubernetes/nginx:1.21.3
    env:
    - name: NGINX_HOST
      value: "10.0.0.55"
    - name: NGINX_PORT
      valueFrom:
        configMapKeyRef:
          name: nginx-config
          key: port
          optional: true
    - name: NGINX_USER
      valueFrom:
        configMapKeyRef:
          name: nginx-config
          key: user
          optional: false

[19:38:17 root@master1 storage]#kubectl apply -f 12-storage-configmap-simple-env.yaml 
configmap/nginx-config created
pod/configmap-env-test created
[19:38:32 root@master1 storage]#kubectl get pod -o wide
NAME                 READY   STATUS    RESTARTS   AGE   IP           NODE               NOMINATED NODE   READINESS GATES
configmap-env-test   1/1     Running   0          6s    10.244.3.2   node1.noisedu.cn   <none>           <none>
[19:38:38 root@master1 storage]#kubectl get cm -o wide
NAME               DATA   AGE
kube-root-ca.crt   1      2d20h
nginx-config       2      15s

[19:38:48 root@master1 storage]#kubectl exec -it configmap-env-test -- bash
root@configmap-env-test:/# env
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_PORT=443
HOSTNAME=configmap-env-test
PWD=/
PKG_RELEASE=1~bullseye
HOME=/root
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
NGINX_HOST=10.0.0.55
NJS_VERSION=0.7.0
TERM=xterm
SHLVL=1
KUBERNETES_PORT_443_TCP_PROTO=tcp
NGINX_USER=www
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
NGINX_PORT=10086
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PORT=443
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NGINX_VERSION=1.21.4
_=/usr/bin/env
root@configmap-env-test:/# exit
exit

  

# envFrom - configMapRef

[19:41:48 root@master1 storage]#cat 13-storage-configmap-simple-envfrom.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config
data:
  NGINX_PORT: "10086"
  NGINX_USER: "www"
---
apiVersion: v1
kind: Pod
metadata:
  name: configmap-envfrom-test
spec:
  containers:
  - name: nginx1
    image: 10.0.0.55:80/mykubernetes/nginx:1.21.3
    envFrom:
    - configMapRef:
        name: nginx-config
[19:41:50 root@master1 storage]#kubectl apply -f 13-storage-configmap-simple-envfrom.yaml 
configmap/nginx-config created
pod/configmap-envfrom-test created
[19:43:15 root@master1 storage]#kubectl get cm,pod -o wide
NAME                         DATA   AGE
configmap/kube-root-ca.crt   1      2d20h
configmap/nginx-config       2      9s

NAME                         READY   STATUS    RESTARTS   AGE   IP           NODE               NOMINATED NODE   READINESS GATES
pod/configmap-envfrom-test   1/1     Running   0          9s    10.244.4.2   node2.noisedu.cn   <none>           <none>

[19:43:24 root@master1 storage]#kubectl exec -it configmap-envfrom-test -- bash
root@configmap-envfrom-test:/# env
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_PORT=443
HOSTNAME=configmap-envfrom-test
PWD=/
PKG_RELEASE=1~bullseye
HOME=/root
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
NJS_VERSION=0.7.0
TERM=xterm
SHLVL=1
KUBERNETES_PORT_443_TCP_PROTO=tcp
NGINX_USER=www
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
NGINX_PORT=10086
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PORT=443
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NGINX_VERSION=1.21.4
_=/usr/bin/env
root@configmap-envfrom-test:/# exit
exit

  

# 运用configmap变量
[19:47:17 root@master1 storage]#cat 14-storage-configmap-simple-envargs.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: command-arg
data:
  time: "3600"
---
apiVersion: v1
kind: Pod
metadata:
  name: command-pod
spec:
  containers:
    - name: command-pod
      image: 10.0.0.55:80/mykubernetes/busybox:v0.1
      command: [ "/bin/sh", "-c", "sleep ${SPECIAL_TIME}" ]
      env:
      - name: SPECIAL_TIME
        valueFrom:
          configMapKeyRef:
            name: command-arg
            key: time
  restartPolicy: Never
[19:47:22 root@master1 storage]#kubectl apply -f 14-storage-configmap-simple-envargs.yaml 
configmap/command-arg created
pod/command-pod created
[19:47:25 root@master1 storage]#kubectl get cm,pod -o wide
NAME                         DATA   AGE
configmap/command-arg        1      3s
configmap/kube-root-ca.crt   1      2d20h

NAME              READY   STATUS    RESTARTS   AGE   IP           NODE               NOMINATED NODE   READINESS GATES
pod/command-pod   1/1     Running   0          3s    10.244.4.4   node2.noisedu.cn   <none>           <none>
[19:47:28 root@master1 storage]#kubectl describe pod command-pod 
Name:         command-pod
Namespace:    default
Priority:     0
Node:         node2.noisedu.cn/10.0.0.54
Start Time:   Tue, 14 Dec 2021 19:47:25 +0800
Labels:       <none>
Annotations:  cni.projectcalico.org/containerID: 956c7f256e844be96d18e83c9b66a0aa10ae4672ee69f4dc3e66710035334941
              cni.projectcalico.org/podIP: 10.244.4.4/32
              cni.projectcalico.org/podIPs: 10.244.4.4/32
Status:       Running
IP:           10.244.4.4
IPs:
  IP:  10.244.4.4
Containers:
  command-pod:
    Container ID:  docker://8db134f37c6cfb197b345dc2c52598424cfea480827da7b6b68ee0d06b98fc60
    Image:         10.0.0.55:80/mykubernetes/busybox:v0.1
    Image ID:      docker-pullable://10.0.0.55:80/mykubernetes/busybox@sha256:d5c6e74e3115b55dce759c1b3a52b1d2db60dc6929681de2f76cdc5d6f4d7412
    Port:          <none>
    Host Port:     <none>
    Command:
      /bin/sh
      -c
      sleep ${SPECIAL_TIME}
    State:          Running
      Started:      Tue, 14 Dec 2021 19:47:26 +0800
    Ready:          True
    Restart Count:  0
    Environment:
      SPECIAL_TIME:  <set to the key 'time' of config map 'command-arg'>  Optional: false
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-cznvv (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  kube-api-access-cznvv:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  11s   default-scheduler  Successfully assigned default/command-pod to node2.noisedu.cn
  Normal  Pulled     10s   kubelet            Container image "10.0.0.55:80/mykubernetes/busybox:v0.1" already present on machine
  Normal  Created    10s   kubelet            Created container command-pod
  Normal  Started    10s   kubelet            Started container command-pod

  

# 通过configmap挂载文件 - spec.volumes.configMap
[19:51:18 root@master1 storage]#cat 15-storage-configmap-simple-volume.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: volume-config
data:
  special.name: noise
  file.conf: |
    [daemon]
    testing
---
apiVersion: v1
kind: Pod
metadata:
  name: testvolume
spec:
  volumes:
    - name: config-volume
      configMap:
        name: volume-config 
  containers:
    - name: nginx
      image: 10.0.0.55:80/mykubernetes/nginx:1.21.3
      volumeMounts:
      - name: config-volume
        mountPath: /cmap/
[19:51:20 root@master1 storage]#kubectl apply -f 15-storage-configmap-simple-volume.yaml 
configmap/volume-config created
pod/testvolume created
[19:51:25 root@master1 storage]#kubectl get cm,pod -o wide
NAME                         DATA   AGE
configmap/kube-root-ca.crt   1      2d20h
configmap/volume-config      2      5s

NAME             READY   STATUS    RESTARTS   AGE   IP           NODE               NOMINATED NODE   READINESS GATES
pod/testvolume   1/1     Running   0          5s    10.244.3.3   node1.noisedu.cn   <none>           <none>
[19:51:30 root@master1 storage]#kubectl exec -it testvolume -- bash
root@testvolume:/# ll
bash: ll: command not found
root@testvolume:/# ls
bin  boot  cmap  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  lib64	media  mnt  opt  proc  root  run  sbin	srv  sys  tmp  usr  var
root@testvolume:/# ls /cmap/
file.conf  special.name
root@testvolume:/# cat /cmap/file.conf
[daemon]
testing
root@testvolume:/# cat /cmap/special.name 
noiseroot@testvolume:/# 
root@testvolume:/# 
root@testvolume:/# exit
exit

  

posted @ 2021-12-14 20:01  每天都在学习的自己  阅读(186)  评论(0)    收藏  举报