iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0

前面講完了與設定相關的東西了,接著當然就是我們的服務要來接到我們的設定之後,根據設定的內容執行起來了。

在 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 中最為基礎的資源,後面有許多其他資源都會與它有關聯。

大家掰~掰~


上一篇
Day 16 ConfigMap & Secret
下一篇
Day 18 Service
系列文
30天漫遊雲端之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言