跳至主要内容

Kubernetes Pod 基本介紹

Pod 是 Kubernetes 中 最小的可部署單位(Smallest Deployable Unit),通常包裝一個或多個高度相關的容器,這些容器:

  • 共用同一個 網路命名空間(IP / Port)
  • 可以透過 localhost 彼此通訊
  • 可以掛載相同的 Volume 來共享資料

Pod 示意圖

一個 Pod 內可以包含一個主容器(main container)與一個或多個側車容器(sidecar containers)。


查看 Kubernetes 文件,了解 Pod

若要深入了解 Pod 的設計與欄位,可以參考:


Pod 基本操作

以下示範幾個常見的 Pod 操作指令(假設 Namespace 為 default,可依實際情況調整)。

查看 default namespace 下的所有 Pod

kubectl get pods

查看所有 namespace 的 Pod

kubectl get pods -A

查看 Pod 列表

kubectl get pods -o wide

檢視 Pod 詳細資訊

describe 會顯示事件、節點、Volume 等詳細資

kubectl describe pod <pod-name>

顯示更多欄位(IP、Node 等

kubectl get pods -o wide

以 YAML 格式輸出 Pod 定義

kubectl get pod <pod-name> -o yaml

查看 Log

kubectl logs <pod-name>

若 Pod 內有多個容器,可以指定容器名稱:

kubectl logs <pod-name> -c <container-name>

進入容器執行指令

透過 exec 進入容器互動式操作:

kubectl exec -it <pod-name> -- /bin/sh

kubectl exec -it <pod-name> -c <container-name> -- /bin/bash

刪除 Pod

一般刪除 Pod:

kubectl delete pod <pod-name>

若 Pod 卡在 Terminating 狀態,且是由 Deployment / ReplicaSet 管理的,建議先將對應的 Deployment 副本數調整為 0,再強制刪除該 Pod:

kubectl scale deployment <deployment-name> --replicas=0
kubectl -n delete pod --grace-period=0 --force

Dry-Run(模擬執行)

Dry-Run 用於: 在不真正建立資源的前提下,測試 YAML 是否正確、或產生出 Kubernetes 物件的 YAML 範本。

模擬執行不真正建立資源

kubectl apply -f pod.yaml --dry-run=client

直接用指令產生 YAML 範本(不真正建立)

kubectl run mypod --image=nginx --dry-run=client -o yaml

搭配 -o yaml 输出 YAML,方便產生範本

kubectl create deployment myapp --image=nginx --dry-run=client -o yaml

很常用來快速產生可編輯的 YAML 再存成檔案。

延伸閱讀

https://kubernetes.io/docs/concepts/workloads/pods/