為什麼還需要一份 cheatsheet?
官方的 kubectl cheat sheet 太雜——300 多個指令塞在同一頁,找不到重點。
實際上你 80% 時間只用其中 不到 50 個指令。這篇把它們分四類整理,讓你查得到、抄得快。
看完本系列前 37 篇,這份就是你工作中可以直接 Copy 的速查筆記。
---
A. 查狀態(最常用)
看清單
\\\bash\
kubectl get pods # 預設 namespace
kubectl get pods -A # 所有 namespace
kubectl get pods -n prod # 指定 namespace
kubectl get pods -o wide # 含 IP / Node
kubectl get pods --show-labels # 含 label
kubectl get pods -l app=api # 用 label 篩
kubectl get pods --field-selector status.phase=Running
kubectl get all -n prod # 一眼看所有資源
\\
看詳情
\\\bash\
kubectl describe pod my-pod # 包含 events,超好用
kubectl describe deployment my-app
kubectl describe node worker-1 # 看 Node 資源
\\
看 logs
\\\bash\
kubectl logs my-pod # 單一 Pod
kubectl logs my-pod -c container-name # 多容器 Pod
kubectl logs -f my-pod # tail -f
kubectl logs my-pod --previous # 看上次崩潰前的 log
kubectl logs -l app=api --tail=100 # 用 label 抓多 Pod logs
kubectl logs my-pod --since=10m # 最近 10 分鐘
\\
看資源用量
\\\bash\
kubectl top nodes
kubectl top pods
kubectl top pods -n prod --containers
\\
---
B. 改設定
套用 / 刪除
\\\bash\
kubectl apply -f deployment.yaml # 建立或更新
kubectl apply -f ./manifests/ # 整個目錄
kubectl apply -k ./overlays/prod # kustomize
kubectl delete -f deployment.yaml
kubectl delete pod my-pod
kubectl delete namespace prod # 一行清光所有資源
\\
直接改
\\\bash\
kubectl edit deployment my-app # 開編輯器即時改
kubectl scale deployment my-app --replicas=5
kubectl set image deployment/my-app api=my-api:2.0
kubectl rollout restart deployment my-app
\\
部署滾動
\\\bash\
kubectl rollout status deployment/my-app
kubectl rollout history deployment/my-app
kubectl rollout undo deployment/my-app # 回上一版
kubectl rollout undo deployment/my-app --to-revision=2
kubectl rollout pause deployment/my-app
kubectl rollout resume deployment/my-app
\\
---
C. 排錯
進入 Pod
\\\bash\
kubectl exec -it my-pod -- sh
kubectl exec -it my-pod -c sidecar -- bash
kubectl exec my-pod -- env # 跑單一指令
\\
本機連 Pod
\\\bash\
kubectl port-forward pod/my-pod 8080:80
kubectl port-forward svc/my-svc 8080:80
kubectl port-forward deployment/my-app 8080:80
\\
檔案進出
\\\bash\
kubectl cp my-pod:/etc/hosts ./hosts # Pod → 本機
kubectl cp ./config.yaml my-pod:/app/config.yaml # 本機 → Pod
\\
進階除錯
\\\bash\
kubectl debug my-pod -it --image=busybox # 在 Pod 旁邊開 debug 容器
kubectl debug node/worker-1 -it --image=busybox # 進 Node debug
\\
---
D. 進階技巧
Dry-run / Diff
\\\bash\
kubectl apply -f x.yaml --dry-run=client # 不真的執行,只看會做什麼
kubectl apply -f x.yaml --dry-run=server # 連 API server 驗證
kubectl diff -f x.yaml # 跟現狀差異
\\
快速產 YAML
\\\bash
# 產 Pod YAML 不真的建立
kubectl run nginx --image=nginx --dry-run=client -o yaml > pod.yaml
# 產 Deployment YAML
kubectl create deployment my-app --image=nginx --dry-run=client -o yaml > deploy.yaml
# 產 Service YAML
kubectl expose deployment my-app --port=80 --dry-run=client -o yaml
\\\
Context / Namespace 切換
\\\bash\
kubectl config get-contexts
kubectl config current-context
kubectl config use-context my-cluster
kubectl config set-context --current --namespace=prod # 切預設 namespace
\\
模擬身份(RBAC 除錯)
\\\bash\
kubectl auth can-i create deployments # 我能建 Deployment 嗎
kubectl auth can-i delete pods --as=alice # alice 能刪 Pod 嗎
kubectl get pods --as=system:serviceaccount:default:viewer-sa
\\
JSON 路徑取值
\\\bash
# 取第一個 Pod 的名字
kubectl get pods -o jsonpath='{.items[0].metadata.name}'
# 取所有 Pod 的 IP
kubectl get pods -o jsonpath='{.items[*].status.podIP}'
# Service 的 ClusterIP
kubectl get svc my-svc -o jsonpath='{.spec.clusterIP}'
\\\
Watch 模式
\\\bash\
kubectl get pods -w
kubectl get hpa -w
kubectl rollout status deployment/my-app -w
\\
---
常用別名(建議加進 .zshrc)
\\\bash
alias k='kubectl'
alias kg='kubectl get'
alias kd='kubectl describe'
alias kl='kubectl logs -f'
alias ke='kubectl exec -it'
alias kctx='kubectl config use-context'
alias kns='kubectl config set-context --current --namespace'
# 看 Pod 在哪
alias kgp='kubectl get pods -o wide'
# 啟用 kubectl 自動補全(zsh)
source <(kubectl completion zsh)
\\\
---
重點整理
- 80% 時間只用這 50 個指令——背熟比什麼都重要
- \
describe\比 \get\更有用:看 events 才知道為什麼失敗 - \
logs --previous\是救命指令:看崩潰前的最後一刻 - \
--dry-run=client -o yaml\產 YAML 範本比手寫快 10 倍 - 裝 \
k9s\/ \kubectx\/ \kubens\這三個 CLI 工具,效率再翻倍
下一步
指令會了,但寫 YAML 的時候還是會卡住?下一篇給你 8 大資源的完整 YAML 模板:K8s YAML 範例大全
📅 下一篇:K8s YAML 範例大全:8 大資源完整模板
8 個常用資源每個一份完整範本——複製貼上即用,不用從零開始想欄位。
📚 完整系列總覽:K8s 系列教學首頁(共 40 課,按學習路徑順序排)