前面講完了與設定相關的東西了,接著當然就是我們的服務要來接到我們的設定之後,根據設定的內容執行起來了。
在 Docker 的世界中,最小的執行單位是 Container , Container 就像一台小主機,有自己的 IP 、 Port 及檔案系統。
但是在 Kubernetes 的世界中,最小的執行單位是 Pod , Pod 中可包含 1 或多個 Container , Container 不在是一台小主機,而是 Pod 為一台小主機,每個 Pod ,或者說 Pod 裡的所有 Container 共享同一個 IP 、 Port 及檔案系統,因此同一個 Pod 中的 Container 可以互相以 localhost 溝通,並且同時被 Kubernetes 調度。
我們可以透過 YAML 文件定義 Pod 的規格,再透過指令產生對應的 Pod 。在這邊我們順便接上昨天產生的 ConfigMap 跟 Secret 設定。
ubuntu-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: ubuntu-pod
spec:
containers:
- name: ubuntu
image: ubuntu:20.04
args: [bash, -c, 'for ((i = 0; ; i++)); do echo "$i: $(date)"; sleep 100; done']
env:
- name: key1
valueFrom:
configMapKeyRef:
name: configmap-test
key: key1
- name: key2
valueFrom:
secretKeyRef:
name: secret-test
key: key2
詳細資料可以參考 官方文件
文件產生後,我們可以透過下面的指令產生 Pod 。
$ kubectl apply -f ubuntu-pod.yaml
產生之後,我們可以透過下面的指令查看所有執行中的 Pod 。
$ kubectl get pods
# or
$ kubectl get po
接著我們可以透過以下指令連結到 Pod 中,直接對著 Pod 下指令。
$ kubectl exec -it ubuntu-pod -- bash
$ echo $key1 # 查看 ConfigMap 導入的環境變數
> value1
$ echo $key2 # 查看 Secret 導入的環境變數
> value2
$ exit # 退出
最後,我們可以透過以下指令刪除 Pod 。
$ kubectl delete -f ubuntu-pod.yaml
# or
$ kubectl delete pod ubuntu-pod
詳細設定可參考 官方文件
那麼就先到這邊, Pod 是 Kubernetes 中最為基礎的資源,後面有許多其他資源都會與它有關聯。
大家掰~掰~