> For the complete documentation index, see [llms.txt](https://anida-huang.gitbook.io/cloud-communication/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://anida-huang.gitbook.io/cloud-communication/qi-mo/20201222-kubernetes.md).

# 20201222 kubernetes (四)

## 課堂資料

{% embed url="<https://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-persistent-volume-storage/>" %}

{% embed url="<https://www.opencli.com/linux/rhel-centos-7-install-nfs-server>" %}

{% embed url="<https://www.qikqiak.com/k8s-book/docs/28.ConfigMap.html>" %}

### NFS

#### nfs 網路存儲、pod重啟後數據依在

* **第一步：**
  * **install nfs-server**
  * **設置掛載路徑**
  * **掛載路徑需要創建出來**
* **第二步：在其他 node 也安裝 nfs**
* **第三步：啟動nfs-server**
* **第四步：在 k8s 集群部署應用使用 nfs 以持久網路儲存**

## 課堂練習

### NFS

{% tabs %}
{% tab title="vm1" %}

> #### 安裝 NFS **Server**&#x20;

```
yum install nfs-utils
```

> #### 設定分享目錄

```
mkdir -p /var/nfsshare
```

```
chmod -R 777 /var/nfsshare/
```

> #### 開啟 /etc/exports 檔案

```
vim /etc/exports
```

{% hint style="info" %}

```
/data/ 192.168.8.0/24(rw,sync,no_root_squash,no_all_squash)
/var/nfsshare/ 192.168.8.0/24(rw,sync,no_root_squash,no_all_squash)
```

{% endhint %}

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPQhy6xbaTy7w5wmL1S%2Fimage.png?alt=media\&token=947a240c-fdae-4ade-8b8e-9bc28c3586ab)

> #### 啟動 NFS Server, 設定開機自動執行及在 firewalld 開放 NFS

```
systemctl restart rpcbind
```

```
systemctl restart nfs-server
```

```
systemctl status rpcbind
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPQiKhxnZgCwU9Zyq17%2Fimage.png?alt=media\&token=c03c36cb-9630-46dd-91c5-898b139ce4e3)

```
systemctl status nfs-server
```

```
cd /var/nfsshare/
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPQiVPd_A6y6kwDXF8r%2Fimage.png?alt=media\&token=c7c6c2f9-f61e-49ab-a455-7a4b345d8dc6)

```
ls
```

```
touch 1 2 3
```

```
ls
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPQosbHQbMidu4ms5a5%2Fimage.png?alt=media\&token=78592f2e-6281-4442-880f-e4d1232eef22)

```
cd
```

```
gedit pv.yaml pvc.yaml
```

{% hint style="info" %}
**pv.yaml**

```
apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  nfs:
    path: /var/nfsshare/
    server: 192.168.8.129
```

#### pvc.yaml

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd-dep2
spec:
  selector:
    matchLabels:
      app: httpd
  replicas: 1
  template:
    metadata:
      labels:
        app: httpd
    spec:
      containers:
      - name: httpd
        image: httpd:2.4.46
        ports:
        - containerPort: 80
        volumeMounts:
        - name: wwwroot
          mountPath: /usr/local/apache2/htdocs
        ports:
        - containerPort: 80
      volumes:
        - name: wwwroot
          persistentVolumeClaim:
            claimName: my-pvc

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
```

{% endhint %}

```
ls /var/nfsshare/
```

```
kubectl apply -f pv.yaml
```

```
kubectl get pv
```

```
cd /var/nfsshare/
```

```
ls
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPQu2xTv8gcVIJLfnd7%2Fimage.png?alt=media\&token=12a3033a-7765-43e4-8d34-dd4540e2456e)

```
echo "hi" > hi.htm
```

```
cd
```

```
ls
```

```
kubectl apply -f pvc.yaml
```

```
kubectl get pods -o wide
```

```
kubectl get deployment
```

```
kubectl delete deployment httpd
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPQuUI7Mky7KyG4XbMB%2Fimage.png?alt=media\&token=18d465e9-ef65-4e27-b8d8-e79a0b52ce17)

```
kubectl get deployment
```

```
kubectl get pod -o wide
```

```
kubectl get deployment
```

```
kubectl describe deployment httpd-dep2
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPQuvi1iJ4WTVyOuGGd%2Fimage.png?alt=media\&token=dbc63422-4926-4222-ace5-661ade2fd4de)

```
kubectl get pvc
```

```
kubectl get deployment
```

```
kubectl get deployment
```

```
kubectl get svc
```

```
kubectl delete svc httpd
```

```
kubectl delete svc httpd2
```

```
kubectl get svc
```

```
kubectl get pod
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPQvOac606fEfePebLz%2Fimage.png?alt=media\&token=7e4b1cde-ad31-43f5-9a55-7eef5b040620)

```
kubectl delete pod --all
```

```
kubectl get pod
```

```
kubectl describe deployment httpd-dep2
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPQw7-oi4ZLGqBvaJVW%2Fimage.png?alt=media\&token=b80af07d-c702-4939-84a9-83f353d25258)

```
kubectl get pod -o wide
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPQwH7lq-6vZ5tottsu%2Fimage.png?alt=media\&token=c8a648a2-e9ef-4a7e-bdb1-5fcc6132d419)

```
ls
```

```
kubectl get pvc
```

```
kubectl get deployment
```

```
kubectl describe deployment httpd-dep2
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPR3yXTLam7G2yjEP55%2Fimage.png?alt=media\&token=2c0982f6-dd25-48e5-b3b7-7059e4260229)

```
kubectl get pod
```

```
gedit pvc.yaml
```

{% hint style="info" %}

#### pvc.yaml

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd-dep2
spec:
  selector:
    matchLabels:
      app: httpd
  replicas: 1
  template:
    metadata:
      labels:
        app: httpd
    spec:
      containers:
      - name: httpd
        image: httpd:2.4.46
        ports:
        - containerPort: 80
#        volumeMounts:
#        - name: wwwroot
#          mountPath: /usr/local/apache2/htdocs
#        ports:
#        - containerPort: 80
#      volumes:
#        - name: wwwroot
#          persistentVolumeClaim:
#            claimName: my-pvc

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
```

{% endhint %}

```
kubectl apply -f pvc.yaml
```

```
kubectl get deployment
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPR4fcUZiY5znRvvA6T%2Fimage.png?alt=media\&token=c582499a-ded0-4d78-818b-70b256e22e3d)

```
kubectl get pod
```

```
kubectl get pod -o wide
```

```
curl [podID]
```

```
gedit pvc.yaml
```

{% hint style="info" %}

#### pvc.yaml

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd-dep2
spec:
  selector:
    matchLabels:
      app: httpd
  replicas: 1
  template:
    metadata:
      labels:
        app: httpd
    spec:
      containers:
      - name: httpd
        image: httpd:2.4.46
        ports:
        - containerPort: 80
#        volumeMounts:
#        - name: wwwroot
#          mountPath: /usr/local/apache2/htdocs
#        ports:
#        - containerPort: 80
      volumes:
        - name: wwwroot
          persistentVolumeClaim:
            claimName: my-pvc

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
```

{% endhint %}

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPR59MqknFnyznucHY2%2Fimage.png?alt=media\&token=215f862e-32b4-44ca-ab6f-e2ddd8ebbdd9)

```
kubectl apply -f pvc.yaml
```

```
kubectl get deployment
```

```
kubectl get pod -o wide
```

```
curl [podID]
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPR5jhO_GvHLEA-6P_I%2Fimage.png?alt=media\&token=5ef479eb-f945-4120-84f7-516c4b60c1bc)

```
gedit pvc.yaml
```

{% hint style="info" %}

#### pvc.yaml

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd-dep2
spec:
  selector:
    matchLabels:
      app: httpd
  replicas: 1
  template:
    metadata:
      labels:
        app: httpd
    spec:
      containers:
      - name: httpd
        image: httpd:2.4.46
        ports:
        - containerPort: 80
#        volumeMounts:
#        - name: wwwroot
#          mountPath: /usr/local/apache2/htdocs
        ports:
        - containerPort: 80
      volumes:
        - name: wwwroot
          persistentVolumeClaim:
            claimName: my-pvc

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
```

{% endhint %}

```
kubectl apply -f pvc.yaml
```

```
kubectl get deployment
```

```
kubectl get pod -o wide
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPR68sHJU2zc2WPeqAs%2Fimage.png?alt=media\&token=6bb28942-b2d4-453b-9621-087c76f67b38)

```
curl [podID]
```

```
kubectl get pod
```

```
kubectl exec [podName] -it -- bash
```

```
cd htdocs/
```

```
ls
```

```
pwd
```

```
exit
```

```
kubectl get svc
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPR6vub8FdgkUYTihVs%2Fimage.png?alt=media\&token=1477027b-9833-473b-b720-700628df4116)

```
gedit pvc.yaml
```

{% hint style="info" %}

#### pvc.yaml

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd-dep2
spec:
  selector:
    matchLabels:
      app: httpd
  replicas: 1
  template:
    metadata:
      labels:
        app: httpd
    spec:
      containers:
      - name: httpd
        image: httpd:2.4.46
        ports:
        - containerPort: 80
        volumeMounts:
        - name: wwwroot
          mountPath: /usr/local/apache2/htdocs
        ports:
        - containerPort: 80
      volumes:
        - name: wwwroot
          persistentVolumeClaim:
            claimName: my-pvc

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
```

{% endhint %}

```
kubectl apply -f pvc.yaml
```

```
kubectl get deployment
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPR7Nfk2c76P5Z3DyZq%2Fimage.png?alt=media\&token=c14a738a-5b17-40bf-8d06-30ca362eea12)

```
kubectl get pod
```

```
kubectl get pods
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPRAhx0rXED2jMk3C0T%2Fimage.png?alt=media\&token=81aa3c20-5fc8-422d-bf80-ce3b7cb4798c)

```
kubectl describe deployment httpd-dep2
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPRD94iQiP6IWqku2CQ%2Fimage.png?alt=media\&token=35615586-d86c-44f6-9934-aba50952a07f)

```
cd ..
```

```
ls
```

```
cd
```

```
mkdir pv
```

```
cd pv
```

```
gedit 1.yaml 2.yaml 3.yaml &
```

{% hint style="info" %}

#### 1.yaml

```
apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: test
  nfs:
    path: /var/nfsshare
    server: 192.168.8.129
```

#### 2.yaml

```
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: test 
```

#### 3.yaml

```
apiVersion: v1
kind: Pod
metadata:
  name: task-pv-pod
spec:
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
        claimName: my-pvc
  containers:
    - name: task-pv-container
      image: httpd:2.4.46
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/local/apache2/htdocs"
          name: task-pv-storage
```

{% endhint %}

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPRDb9qK7-SqaDabQOg%2Fimage.png?alt=media\&token=64b5ee4b-f031-4a96-8cb4-6cd0d343272a)

```
kubectl apply -f 1.yaml
```

```
kubectl get pv
```

```
kubectl apply -f 2.yaml
```

```
kubectl get pvc
```

```
kubectl apply -f 3.yaml
```

```
kubectl get pod
```

```
kubectl get pod -o wide
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPRJ-613HUqDo5YPTxB%2Fimage.png?alt=media\&token=6ae99b02-a58a-4f16-84f2-e4e8eb207830)

```
cd /var/nfsshare/
```

```
ls
```

```
curl [podID]/hi.htm
```

```
echo "abc" > abc.htm
```

```
curl [podID]/abc.htm
```

```
ls
```

```
kubectl get pod
```

```
kubectl delete pod task-pv-pod
```

```
kubectl get pod
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPRKleP-CRtEtwXzwjN%2Fimage.png?alt=media\&token=aeeec51b-21ef-4e49-8109-d65e7702bbb5)

```
cd
```

```
cd pv
```

```
kubectl apply -f 3.yaml
```

```
kubectl get pod
```

```
kubectl get pod -o wide
```

```
curl [podID]/hi.htm
```

```
curl [podID]/abc.htm
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPRLE0vyAdB4cG1B4M5%2Fimage.png?alt=media\&token=6ce19466-f891-40ea-9163-d843cf147b63)
{% endtab %}

{% tab title="vm2" %}

> #### 安裝 NFS**Client**&#x20;

```
yum install nfs-utils
```

> #### 建立 NFS 目錄掛載點

```
mkdir -p /mnt/nfs/var/nfsshare
```

> #### mount 指令掛載 192.168.8.129分享出來的目錄

```
mount -t nfs 192.168.8.129:/var/nfsshare /mnt/nfs/var/nfsshare/
```

```
cd /mnt/nfs/var/nfsshare/
```

```
touch a b cd
```

```
ls
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPQlpgh1D-fe7pQXWjY%2Fimage.png?alt=media\&token=b84f9a9e-359a-4c68-bff2-6d2fb9e611d7)

```
ls
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPQnNJs3Kq-BUKvGWvv%2Fimage.png?alt=media\&token=245e8b00-831c-4fcd-9135-eb4480294546)

```
cd
```

```
umount /mnt/nfs/var/nfsshare/
```

```
ls /mnt/nfs/var/nfsshare/
```

```
docker images
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPNGl1oD1kDR7dHhNu1%2F-MPR-hIxiU21zL5_nHXv%2Fimage.png?alt=media\&token=3bc1a8e5-de89-4e12-a216-28743ec714db)
{% endtab %}

{% tab title="vm3" %}

> #### 安裝 NFS**Client**&#x20;

```
yum install nfs-utils
```

> #### 建立 NFS 目錄掛載點

```
mkdir -p /mnt/nfs/var/nfsshare
```

> #### mount 指令掛載 192.168.8.129分享出來的目錄

```
mount -t nfs 192.168.8.129:/var/nfsshare /mnt/nfs/var/nfsshare/
```

```
cd /mnt/nfs/var/nfsshare/
```

```
ls
```

```
cd
```

```
umount /mnt/nfs/var/nfsshare/
```

```
ls /mnt/nfs/var/nfsshare/
```

{% endtab %}
{% endtabs %}

### ConfigMap

{% tabs %}
{% tab title="vm1" %}

```
cd
```

```
mkdir /cm
```

```
cd cm
```

```
gedit myconfigmap.yaml
```

{% hint style="info" %}

```
kind: ConfigMap
apiVersion: v1
metadata:
  name: cm-demo
  namespace: default
data:
  data.1: hello
  data.2: world
  config: |
    property.1=value-1
    property.2=value-2
    property.3=value-3
```

{% endhint %}

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPRfA26zi-sNe1PORSd%2F-MPRgc61vWqpHswjY9jk%2Fimage.png?alt=media\&token=125e3c54-12ce-4de8-b1c8-5461859fde76)

```
cd testcm
```

```
gedit mysql.conf redis.conf
```

{% hint style="info" %}

#### mysql.conf

```
host=127.0.0.1
port=3306
```

#### redis.conf

```
host=127.0.0.1
port=6379
```

{% endhint %}

```
cat mysql.conf
```

```
cat redis.conf
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPRfA26zi-sNe1PORSd%2F-MPRliRfIKS5bYAiSNAu%2Fimage.png?alt=media\&token=7f17d338-6b43-4822-9ae3-3da1ffb5ba5c)

```
cd ..
```

```
kubectl create configmap cm-demo1 --from-file=testcm
```

```
kubectl get cm
```

```
kubectl describe cm cm-demo1
```

```
kubectl create configmap cm-demo3 --from-literal=db.host=localhost --from-literal=db.port=3306
```

```
kubectl get cm
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPRfA26zi-sNe1PORSd%2F-MPRno1i17ANgSmN_Hbw%2Fimage.png?alt=media\&token=69874695-ad59-46f7-a27c-ca770982b07c)

```
kubectl describe cm cm-demo3
```

```
gedit testpod.yaml
```

{% hint style="info" %}

```
apiVersion: v1
kind: Pod
metadata:
  name: testcm1-pod
spec:
  containers:
    - name: testcm
      image: busybox
      command: [ "/bin/sh", "-c", "env" ]
      env:
        - name: DB_HOST
          valueFrom:
            configMapKeyRef:
              name: cm-demo3
              key: db.host
        - name: DB_PORT
          valueFrom:
            configMapKeyRef:
              name: cm-demo3
              key: db.port
      envFrom:
        - configMapRef:
            name: cm-demo1
```

{% endhint %}

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPRfA26zi-sNe1PORSd%2F-MPRp4a0pn8qAT527xcu%2Fimage.png?alt=media\&token=d0e12dde-10a0-4bcf-b6ef-780146d6f2b5)

```
kubectl apply -f testpod.yaml
```

```
kubectl get pod
```

```
kubectl delete pod --all
```

```
gedit testpod.yaml
```

{% hint style="info" %}

```
apiVersion: v1
kind: Pod
metadata:
  name: testcm2-pod
spec:
  containers:
    - name: testcm2
      image: busybox
      command: [ "/bin/sh", "-c", "echo $(DB_HOST) $(DB_PORT)" ]
      env:
        - name: DB_HOST
          valueFrom:
            configMapKeyRef:
              name: cm-demo3
              key: db.host
        - name: DB_PORT
          valueFrom:
            configMapKeyRef:
              name: cm-demo3
              key: db.port
```

{% endhint %}

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPRfA26zi-sNe1PORSd%2F-MPRqQgnWRd4U7az9Sw5%2Fimage.png?alt=media\&token=6655aabb-057a-4143-961a-2c361ef0e3c8)

```
kubectl apply -f testpod.yaml
```

```
kubectl get pod
```

```
kubectl logs testcm2-pod
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MPRfA26zi-sNe1PORSd%2F-MPRqrt5LaNgGdvYdhf3%2Fimage.png?alt=media\&token=e0fd3263-bfa1-4958-b2ff-92de2e060c50)
{% endtab %}
{% endtabs %}
