すべてのチートシート

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-eu
kubectl config get-contexts

kubeconfig 内の全コンテキストを一覧表示します。

--minify; -o name|json|yaml

kubectl config get-contexts -o name | xargs -I{} echo {}
kubectl config use-context <name>

現在のコンテキストを切り替えます。

kubectl config use-context prod-eu
kubectl 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 dev
kubectl config set <name> <value>

コンテキスト毎の既定 namespace を変更し、以降のコマンドで -n を不要にします。

kubectl config set-context --current --namespace=argocd && kubectl get pods

取得 / 詳細確認

kubectl get all

pods / 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 Error
kubectl 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 wide
kubectl 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 -50
kubectl 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.yaml
kubectl diff -f <file>

`apply` で何を変更するか表示(KUBECTL_EXTERNAL_DIFF または diff バイナリが必要)。

-R; --server-side; --prune

kubectl diff -f overlays/prod | head -50
kubectl 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 --force
kubectl edit <type> <name>

ライブ オブジェクトをエディタで開きます(既定は vi)。

-o yaml; --save-config; --windows-line-ending

KUBE_EDITOR="code --wait" kubectl edit deploy api -n shop
kubectl 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/api
kubectl 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-xn2kq
kubectl logs --previous

コンテナの 1 つ前のインスタンスのログを表示(クラッシュ / ロールアウト後)。

-c コンテナ; --tail N

kubectl logs -p api-7c5d-xn2kq -c api --tail 200 | grep panic
kubectl 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 8
kubectl 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.yaml
kubectl 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 2m
kubectl 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=3
kubectl rollout restart deploy/<name>

pod テンプレートへのパッチで Deployment(DaemonSet / StatefulSet も)を再起動します。

-n ns

kubectl rollout restart deploy api -n shop && kubectl get pods -l app=api -w
kubectl scale deploy/<n> --replicas=N

レプリカ数を直接設定;マニフェストは変更しません。

--current-replicas 先確認; --dry-run=client -o yaml

kubectl scale deploy/api -n shop --current-replicas 2 --replicas 6
kubectl 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=70

Node / 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 60
kubectl cordon / uncordon <node>

ノードをスケジューリング不可(cordon)/ 可(uncordon)に。メンテナンス後に uncordon を使います。

--name で暗黙指定、フラグは不要

kubectl cordon ip-10-0-1-7 && kubectl uncordon ip-10-0-1-7
kubectl 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 / pod

CPU / メモリのライブ使用率を表示(metrics-server が必要)。

--sort-by cpu|memory; --containers; -A; -l

kubectl top node && kubectl top pod -A --sort-by=memory | head
kubectl 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=api
kubectl 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:deployer
kubectl 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-literal

ConfigMap / 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 | pbcopy
kubectl get secret <name> -o jsonpath='{.data.K}' | base64 -d

base64 の Secret キーを 1 度だけ確認するためにデコードします。

kubectl -n shop get secret api-creds -o jsonpath='{.data.API_KEY}' | base64 -d

チートシート バージョン 1.0.0

kubectl 1.28+ に対応