kubectlコマンドチートシート
便利だけど忘れがちなkubectlのコマンドをメモします。
マニフェスト適用前の確認
バージョン1.18で--dry-run
オプションの仕様変更がありました。
# サーバのマニフェストとの差異を表示
kubectl diff -f file.yml
# マニフェストをローカルで検証
kubectl apply -f file.yml --dry-run=client
# マニフェストをサーバで検証
kubectl apply -f file.yml --dry-run=server
動的なマニフェストの適用
標準入力からマニフェストを受け取って、機械的に作成したマニフェストを適用します。
# "-"を指定
kustomize build . | kubectl diff -f -
kustomize build . | kubectl apply -f -
# .envファイルをsecretとして適用
kubectl create secret generic \
env-secret \
--from-env-file="path/to/.env" \
-o yaml \
--dry-run=client \
| kubectl apply -f -
Podの再起動
バージョン1.15から使えます。
kubectl rollout restart deployment/my-deploy
Podのログ確認
対象の指定方法がいくつかあります。
# 前のPodを指定
kubectl logs my-pod --previous
# コンテナが複数ある場合は-cでコンテナ名を指定
kubectl logs -f my-pod -c my-container
# ラベルを指定
kubectl logs -f -l name=my-label
# ラベルを指定(全コンテナ)
kubectl logs -f -l name=my-label --all-containers
Podのポートフォワード
指定したポートでPodにアクセスできます。
kubectl port-forward my-pod 8080:80
kubectl port-forward service/my-service 8080:80
使い捨てのPod作成
クラスタ上でデバッグするときに使えます。
kubectl run debug -it --image=busybox --rm --restart=Never -- /bin/sh
CronJobの一時停止
再開しない時はstartingDeadlineSeconds
の設定を確認します。
# 一時停止
kubectl patch cronjob my-job -p '{"spec":{"suspend":true}}'
# 再開
kubectl patch cronjob my-job -p '{"spec":{"suspend":false}}'