在管理 Kubernetes 叢集時,我常常需要直接進入某個 Pod 裡的 Container 查看 Log、測試網路連線或檢查設定。這篇文章整理使用 kubectl exec 進入 Pod 指定 Container 的完整指令寫法,以及搭配的 kubeconfig 設定方法,讓你在本機就能對叢集下指令。
如何用 kubectl exec 進入指定的 container?
若要使用 kubectl 進入某個 pod 裡的某個 container,可以使用 kubectl exec 命令。基本範例如下:
kubectl exec -it -n <namespace> <pod_NAME> --container <container_NAME> -- /bin/sh
請將 <pod_name> 替換為想要進入的 pod 名稱,將 <container_name> 替換為想要進入的 container 名稱。
當 Pod 裡只有一個 container 時,可以省略 -c 參數:
kubectl exec -it -n <namespace> <pod_name> -- /bin/sh
container 裡沒有 bash 怎麼辦?
上面的指令會使用 shell 進入 container,如果該 container 的映像檔是精簡版(例如 Alpine 或 distroless),很可能沒有 /bin/bash,這時可以嘗試使用 /bin/sh 作為替代:
kubectl exec -it -n <namespace> <pod_name> -c <container_name> -- /bin/sh
--container 可以簡寫成 -c,兩者效果相同。如果連 /bin/sh 都沒有,可以改用 -- /bin/ash(Alpine)或直接執行單一命令而不進入互動模式:
kubectl exec -n <namespace> <pod_name> -c <container_name> -- ls /app
進入 container 前需要哪些前置條件?
這些指令假設你已經成功地安裝並設置了 kubectl,並能夠與 Kubernetes 叢集通信。可用以下指令快速確認:
kubectl config current-context # 確認目前連線的叢集
kubectl get pods -n <namespace> # 確認目標 Pod 正在運行
如何設定 kubeconfig 連線到 Kubernetes 叢集?
要配置 kubectl,你需要一個包含叢集連線資訊的 kubeconfig 檔案。通常使用雲端服務(如 GKE、EKS 或 AKS)或 Kubernetes 配置工具(如 kops 或 kubeadm)建立叢集時,它們會自動生成一個 kubeconfig 檔案。
kubeconfig 檔案通常位於 ~/.kube/config。你可以使用環境變數 KUBECONFIG 來指定 kubeconfig 檔案的位置,例如:
export KUBECONFIG=~/.kube/my-kubeconfig.yaml
或者直接將 kubeconfig 檔案的內容複製到 ~/.kube/config 裡面。
下載 kubectl 或 Lens 圖形化工具,即可於本機對 Kubernetes 叢集下指令:


常見問題
kubectl exec 的 -it 參數是什麼意思?
-i(stdin)保持標準輸入開啟,-t(tty)配置一個偽終端機。兩個參數搭配才能在 container 裡使用互動式 shell。
Pod 裡有多個 container 時要怎麼指定?
用 --container(或簡寫 -c)後面接 container 名稱,例如 kubectl exec -it <pod> -c <container> -- /bin/sh。若不指定,kubectl 會預設選擇 Pod 裡的第一個 container。
kubectl exec 進去後出現 OCI runtime exec failed 是什麼問題?
通常是 shell 路徑不存在,例如映像檔裡沒有 /bin/bash。改用 /bin/sh 或 /bin/ash,或先執行 kubectl exec <pod> -- ls /bin 確認有哪些可執行檔。
kubectl exec 和 kubectl attach 有什麼差別?
kubectl exec 是在 container 裡啟動一個新的處理程序,適合除錯;kubectl attach 則是連上 container 主要處理程序的輸入輸出,離開時可能會影響該處理程序。
哪裡可以查到 Pod 的 container 名稱?
執行 kubectl describe pod <pod_name> -n <namespace>,在 Containers 區段可以看到所有 container 的名稱與映像檔;或用 kubectl get pod <pod_name> -o jsonpath='{.spec.containers[*].name}' 直接列出。
參考資料
延伸閱讀
- Kubernetes 常用指令筆記:從 YAML 建立 Pod 與 ReplicationController:同樣聚焦 Kubernetes、kubectl,可接著比較不同情境的做法。
- Docker 初探:安裝、常用指令與容器管理入門筆記:同樣聚焦 Container、DevOps,可接著比較不同情境的做法。
- 使用 Prometheus 自定義指標為 Kubernetes 做 HPA 縮放:同樣聚焦 Kubernetes、DevOps,可接著比較不同情境的做法。
最後更新
2026-08-28(原文發布於 2023-04-14,本文保留原始筆記內容並補上 GEO 結構。)
關於作者
Claire Chang | 企業 AI 導入與流程轉型顧問。專注於 AI Agent 架構設計、ERP 系統整合與企業 AI 治理。
首次發布:2023-04-14
