kubectl チートシート
Kubernetes のコマンドライン クライアント kubectl を素早く参照:コンテキスト、get/describe、apply、logs/exec、rollout、スケール、デバッグ — よく使うオプションと実用例をまとめました。
40 コマンド
クラスタ / コンテキスト
kubectl versionクライアント / サーバのバージョン情報を表示(バージョンのずれ確認に便利)。
--client クライアントのみ; -o yaml/json
kubectl version -o yaml | yq '.clientVersion.minor' kubectl cluster-infoマスタとクラスタ内サービスの情報を表示します。
--context ctx; --output json|yaml
kubectl cluster-info --context prod-eukubectl config get-contextskubeconfig 内の全コンテキストを一覧表示します。
--minify; -o name|json|yaml
kubectl config get-contexts -o name | xargs -I{} echo {}kubectl config use-context <name>現在のコンテキストを切り替えます。
kubectl config use-context prod-eukubectl config current-context / set-context <name>コンテキストの表示 / リネーム / 更新(namespace、cluster、user を設定)。
--current 現在を表示; set-context --namespace N --cluster C --user U
kubectl config set-context dev-team-a --namespace shop --cluster dev --user devkubectl config set <name> <value>コンテキスト毎の既定 namespace を変更し、以降のコマンドで -n を不要にします。
kubectl config set-context --current --namespace=argocd && kubectl get pods取得 / 詳細確認
kubectl get allpods / services / deployments / replicasets / statefulsets などを一覧表示します。
-A 全 namespace; -n ns; -l label=key=value セレクタ; -o wide|yaml|json|name|custom-columns; --sort-by
kubectl get all -A -o wide | grep -i Errorkubectl get pods / svc / deploy / ds / sts特定のリソース タイプを一覧表示します(よく使うリソース)。
-A; -l app=api; -o wide(node, ip 表示); --field-selector; --sort-by .metadata.creationTimestamp
kubectl get pod -n kube-system -l k8s-app=metrics-server -o widekubectl get -o yaml|jsonオブジェクト全体を YAML/JSON で出力し、確認やエクスポートに使います。
-o yaml; --export クラスタ固有フィールドを除いて保存
kubectl get deploy api -n shop -o yaml | grep -E 'image|replicas|envFrom'kubectl describe <type> <name>詳細情報、イベント、コンテナ状態、ライフサイクルを表示 — デバッグに最適。
-n ns; -A 全 namespace; --show-events=true
kubectl describe pod api-7c5d-xn2kq -n shop | tail -50kubectl explain <resource[.field]>API サーバから直接スキーマ / フィールドのドキュメントを表示します。
kubectl explain pod.spec.containers.resources.limits適用 / 管理
kubectl apply -f <file|dir|url>マニフェストを適用 / 更新し、クラスタ状態を一致させます(宣言的)。
-f file|dir|URL; -R ディレクトリを再帰; --prune; --force-conflicts server-side apply; --server-side
kubectl apply -k overlays/prod && kubectl apply -f https://.../manifests.yamlkubectl diff -f <file>`apply` で何を変更するか表示(KUBECTL_EXTERNAL_DIFF または diff バイナリが必要)。
-R; --server-side; --prune
kubectl diff -f overlays/prod | head -50kubectl create|delete -f <file>マニフェストから命令的に作成 / 削除します(ワンショット)。
create -f; delete -f; delete pod foo; delete svc,deploy -l app=foo(複合)
kubectl delete -f bad-app.yaml --grace-period=0 --forcekubectl edit <type> <name>ライブ オブジェクトをエディタで開きます(既定は vi)。
-o yaml; --save-config; --windows-line-ending
KUBE_EDITOR="code --wait" kubectl edit deploy api -n shopkubectl patch <type> <name> --patch '<json>'ライブ オブジェクトに strategic-merge / JSON patch を適用します。
--type strategic|merge|json; --patch-file file.json
kubectl patch deploy api -n shop --type merge -p '{"spec":{"replicas":6}}'kubectl set image <type> <name> container=image新しいイメージでロールアウトをトリガ;`set image env / resources` も同様。
set image env / resources / serviceaccount / subject / selector
kubectl set image deploy/api api=ghcr.io/team/api:1.4.2 && kubectl rollout status deploy/apikubectl label / annotate <type> <name>ライブ オブジェクトにラベル / アノテーションを追加 / 更新します。
key=value 追加; key- 削除(末尾 -); --overwrite
kubectl label pod -n shop -l app=api release=v1.4.2 --overwriteログ / Exec
kubectl logs <pod>pod のログを表示(-c で特定コンテナを指定)。
-f フォロー; --tail N; --since R|D|T; --timestamps; -c コンテナ; --all-containers; -p 前回
kubectl logs -n shop -f --tail 100 --timestamps api-7c5d-xn2kqkubectl logs --previousコンテナの 1 つ前のインスタンスのログを表示(クラッシュ / ロールアウト後)。
-c コンテナ; --tail N
kubectl logs -p api-7c5d-xn2kq -c api --tail 200 | grep panickubectl logs -l <label> --all-containersラベルに一致する全 pod のログを集約 — Deployment で便利。
-l app=api; --all-containers=true; -f; --max-log-requests N
kubectl logs -n shop -l app=worker --all-containers -f --max-log-requests 8kubectl exec -it <pod> -- <cmd>pod 内でコマンドを実行(任意で対話 bash/sh)。
-it; -c コンテナ; -n ns; -- /bin/sh
kubectl exec -n shop -it api-7c5d-xn2kq -- /bin/sh -c 'printenv | grep DATABASE'kubectl cp <pod>:<src> <dest>pod とローカル間でファイル / フォルダをコピー(exec を介して tar を使用)。
-c コンテナ; -n ns
kubectl cp shop/api-7c5d-xn2kq:app/config.yaml ./config.yamlkubectl port-forward <pod> <local>:remote>ローカル ポートを pod(または svc、deploy)に転送します。
pod/<name> <l>:r; svc/<name> <l>:r; --address 127.0.0.1
kubectl port-forward svc/argocd-server -n argocd 8443:443ロールアウト / スケール
kubectl rollout status deploy/<name>ローリング アップデートの準備完了(またはタイム アウト)までを監視します。
--timeout 5m; --revision N
kubectl rollout status deploy/api -n shop --timeout 2mkubectl rollout history / undoロールアウト履歴の表示 / 過去のリビジョンへロールバック。
history --revision N; undo --to-revision N; --dry-run=client
kubectl rollout history deploy/api -n shop && kubectl rollout undo deploy/api --to-revision=3kubectl rollout restart deploy/<name>pod テンプレートへのパッチで Deployment(DaemonSet / StatefulSet も)を再起動します。
-n ns
kubectl rollout restart deploy api -n shop && kubectl get pods -l app=api -wkubectl scale deploy/<n> --replicas=Nレプリカ数を直接設定;マニフェストは変更しません。
--current-replicas 先確認; --dry-run=client -o yaml
kubectl scale deploy/api -n shop --current-replicas 2 --replicas 6kubectl autoscale deploy/<n> --min=2 --max=10 --cpu-percent=80指定範囲で HPA を作成(`kubectl create hpa` を使うのも可)。
--max --min --cpu-percent; --dry-run=client -o yaml
kubectl autoscale deploy/api -n shop --min=3 --max=15 --cpu-percent=70Node / Pod ライフサイクル
kubectl drain <node> --ignore-daemonsets --delete-emptydir-dataメンテナンス前(アップグレード等)にノードから安全 pod を退避します。
--grace-period N; --force; --skip-errors; --dry-run; --delete-emptydir-data
kubectl drain ip-10-0-1-7 --ignore-daemonsets --delete-emptydir-data --grace-period 60kubectl cordon / uncordon <node>ノードをスケジューリング不可(cordon)/ 可(uncordon)に。メンテナンス後に uncordon を使います。
--name で暗黙指定、フラグは不要
kubectl cordon ip-10-0-1-7 && kubectl uncordon ip-10-0-1-7kubectl delete pod <pod>pod を削除 — Deployment ではコントローラが新規作成します(単一インスタンスの強制再起動にも利用)。
--grace-period=0 --force; -n ns; --now
kubectl delete pod -n shop api-7c5d-xn2kq --grace-period=0 --forceデバッグ
kubectl top node / podCPU / メモリのライブ使用率を表示(metrics-server が必要)。
--sort-by cpu|memory; --containers; -A; -l
kubectl top node && kubectl top pod -A --sort-by=memory | headkubectl debug <pod>デバッグ コンテナを追加 attach(kubectl-debug / Ephemeral Containers)。
--image <img>; --target-container; --share-processes; --profile
kubectl debug -it api-7c5d-xn2kq --image=nicolaka/netshoot --target-container=apikubectl get events --sort-by=.lastTimestampクラスタ イベントを tail し、スケジューリング / イメージ取得 / プローブ失敗を発見。
--field-selector involvedObject.name=podX; -A; -w; --watch-only-events
kubectl get events -n shop --sort-by=.lastTimestamp -w | grep -v 'Normal'kubectl auth can-i <verb> <resource>現在のユーザが実行可能な操作を確認 — RBAC デバッグに最適。
--as user; --as-group; -n ns; --all-namespaces
kubectl auth can-i create pods -n prod --as system:serviceaccount:team-a:deployerkubectl wait --for=condition=Readyリソースが目的の状態になるまでブロック(CI / スクリプトで利用)。
--for condition=Ready|Available; --timeout 60s; --all --selector
kubectl wait -n shop --for=condition=Available deploy/api --timeout 120sリソース / マニフェスト
kubectl create cm|secret ... --from-file|--from-literalConfigMap / Secret を命令的に作成(`kubectl create secret generic ...`)。
--from-file; --from-literal=KEY=val; --dry-run=client -o yaml
kubectl -n shop create secret generic api-creds --from-literal=API_KEY=$(cat key.txt)kubectl create token <serviceaccount>ServiceAccount の短期トークンを発行(静的 Secret より推奨)。
--duration 24h
kubectl -n shop create token deployer --duration=12h | pbcopykubectl get secret <name> -o jsonpath='{.data.K}' | base64 -dbase64 の Secret キーを 1 度だけ確認するためにデコードします。
kubectl -n shop get secret api-creds -o jsonpath='{.data.API_KEY}' | base64 -dチートシート バージョン 1.0.0
kubectl 1.28+ に対応