Advanced - Kubectl
kubectl
是 Kubernetes 的命令列工具,用於與 Kubernetes 叢集互動。透過 kubectl
,使用者可以管理叢集中的資源、部署應用程式、檢查狀態以及進行故障排除。
什麼是 kubectl?
kubectl
是 Kubernetes 提供的主要 CLI 工具,能夠讓使用者透過簡單的命令與 Kubernetes API 伺服器進行互動。
功能特色
- 管理叢集資源(Pod、Service、Deployment 等)。
- 部署與滾動更新應用程式。
- 監控叢集的狀態。
- 除錯與排解問題。
安裝 kubectl
在 macOS
brew install kubectl
在 Linux
sudo apt-get update
sudo apt-get install -y kubectl
在 Windows
choco install kubernetes-cli
安裝設定
最常見的方式是透過 kubeconfig 檔案( 預設在家目錄底下.kube/config)來設定 kubectl。 如果是使用 GKE 或是 Amazon EKS 或 Azure AKS 這樣的雲端服務,他們的命令列工具會自動生成適當的 kubeconfig 檔案。 使用 kubectl get nodes,就可以看到 kubernetes 叢集中的節點列表,這代表你已經成功設定並連接到叢集。
基本語法
kubectl [command] [TYPE] [NAME] [flags]
command
:動作,例如get
、describe
、apply
等。TYPE
:資源類型,例如pod
、service
、deployment
等。NAME
:資源名稱(可選),名稱區分大小寫,若省略則顯示全部。flags
:額外的選項,例如--namespace
。
常用指令
檢視叢集資源
-
列出所有 Pod:
kubectl get pods
顯示所有 Pod 的狀態,如
Running
、Pending
等。 -
列出所有資源(包括 Pod、Service 等):
kubectl get all
-
顯示詳細資訊:
kubectl describe pod <POD_NAME>
提供 Pod 的事件日誌、狀態和錯誤排查資訊。
-
列出資源並顯示其命名空間:
kubectl get pods --all-namespaces
-
篩選特定標籤的資源:
kubectl get pods -l app=<APP_LABEL>
部署應用程式
-
建立 Deployment:
kubectl apply -f deployment.yaml
根據 YAML 文件部署應用程式。
-
直接啟動單一容器:
kubectl run nginx --image=nginx
創建一個名為
nginx
的 Pod。 -
滾動更新 Deployment:
kubectl set image deployment/<DEPLOYMENT_NAME> <CONTAINER_NAME>=<IMAGE>
更新 Deployment 中的容器映像,例如升級版本。
-
檢查更新狀態:
kubectl rollout status deployment/<DEPLOYMENT_NAME>
-
回滾到先前版本:
kubectl rollout undo deployment/<DEPLOYMENT_NAME>
-
查看歷史版本:
kubectl rollout history deployment/<DEPLOYMENT_NAME>
排除故障
-
查看 Pod 日誌:
kubectl logs <POD_NAME>
查看容器的輸出日誌,幫助排查應用問題。
-
查看最近的 n 行日誌:
kubectl logs <POD_NAME> --tail=<N>
-
追蹤實時日誌:
kubectl logs -f <POD_NAME>
-
進入 Pod:
kubectl exec -it <POD_NAME> -- /bin/bash
獲取容器內部的 Shell,用於調試。
-
檢查資源事件:
kubectl get events
查看叢集中的最新事件,如錯誤或警告。
-
測試服務連線:
kubectl run curlpod --image=radial/busyboxplus:curl -i --tty
使用測試 Pod 嘗試與服務連接。
刪除資源
-
刪除 Pod:
kubectl delete pod <POD_NAME>
-
刪除 Deployment:
kubectl delete deployment <DEPLOYMENT_NAME>
-
刪除指定標籤的資源:
kubectl delete pods -l app=<APP_LABEL>