Skip to content

kubectlコマンド 解説

日々の作業で使うkubectlコマンドを作業別にまとめました。クラスタの読み取り、ワークロードの調査、変更の適用とロールバック、Serviceの公開、ノードの管理、設定オブジェクトの作成。各行ではコマンドと現実的な呼び出し例を組み合わせています。

kubectlはKubernetesクラスタを操作するための取っ手です。基本は宣言型で、コマンドで直接作成するのではなく、通常はマニフェストを適用(apply -f)し、その結果を読み戻します(get、describe、logs)。以下のコマンドは日常運用をカバーします。既定のnamespaceにいないときは、namespaceフラグ(-n 名前)を併用してください。

リファレンステーブル · 59 項目
59 of 59 rows
クラスタとコンテキスト
コントロールプレーンと主要サービスがどこで動いているかを表示します。kubectl cluster-info
切り替え可能なクラスタとnamespaceの一覧を表示します。kubectl config get-contexts
別のクラスタまたはnamespaceのコンテキストに切り替えます。kubectl config use-context my-prod
現在のコンテキストの既定namespaceを設定します。kubectl config set-context --current --namespace=staging
kubeconfigに保存したコンテキストの名前を変更します。kubectl config rename-context old-name prod
クラスタが認識するすべてのリソース種別を一覧表示します。kubectl api-resources
クライアントとサーバーのKubernetesバージョンを表示します。kubectl version
APIスキーマから読み取った、リソースが持つフィールドを表示します。kubectl explain pod.spec.containers
現在のユーザーが指定した操作を実行できるか確認します。kubectl auth can-i delete pods
ワークロードの調査
Podとその状態を一覧表示します。-o wideでノードとIPも表示します。kubectl get pods -A
1回の呼び出しでnamespaceの主要リソースを一覧表示します。kubectl get all
任意のgetコマンドにノードとIPの列を追加します。kubectl get pods -o wide
リソースを、背後にある完全なYAMLマニフェストとして出力します。kubectl get deploy/web -o yaml
Deploymentとレプリカの準備数を一覧表示します。kubectl get deployments
StatefulSetと準備済みレプリカを一覧表示します。kubectl get statefulsets
バッチJobとスケジュールされたCronJobを一覧表示します。kubectl get jobs,cronjobs
1つのPodのイベント、ラベル、状態を表示します。kubectl describe pod web-abc
ノードのキャパシティ、条件、実行中のPodを表示します。kubectl describe node node-1
Podのstdoutを出力します。-fで追跡、--previousで最後のクラッシュ分。kubectl logs -f web-abc
実行中のPod内でコマンドを実行します。kubectl exec -it web-abc -- sh
PodまたはノードのライブCPU・メモリ(metrics-serverが必要)。kubectl top pods
イメージ取得失敗やバックオフなど直近のイベントを一覧表示します。kubectl get events -A --sort-by=.lastTimestamp
Ingressルールとロードバランサーのアドレスを一覧表示します。kubectl get ingress
自分のマシンと実行中のPodの間でファイルをコピーします。kubectl cp web-abc:/var/log/app.log ./app.log
リソースが条件を満たすまでブロックします。kubectl wait --for=condition=ready pod -l app=web
イメージから使い捨てのPodを起動します。マニフェストは不要です。kubectl run debug --rm -it --image=busybox -- sh
適用・スケール・ロールアウト
applyが変更する内容を、変更せずに表示します。kubectl diff -f deploy.yaml
マニフェストファイルからリソースを作成または更新します。kubectl apply -f deploy.yaml
マニフェストを適用し、そこから外れたオブジェクトを削除します。kubectl apply -f dir/ --prune -l app=web
ライブリソースをエディタで開き、保存時に適用します。kubectl edit deploy/web
ライブリソースの一部フィールドを変更します。kubectl patch deploy/web --patch-file fix.json
Deploymentのコンテナを新しいイメージに向けます。kubectl set image deploy/web web=nginx:1.27
オブジェクトを置き換えます。必要なら削除して再作成します。kubectl replace --force -f deploy.yaml
マニフェストファイルで宣言されたリソースを削除します。kubectl delete -f deploy.yaml
Deploymentのレプリカ数を変更します。kubectl scale deploy/web --replicas=4
ロールアウトの完了または失敗を見守ります。kubectl rollout status deploy/web
ロールアウトが経過してきたリビジョンを一覧表示します。kubectl rollout history deploy/web
Deploymentの全Podを1つずつ再起動します。kubectl rollout restart deploy/web
Deploymentを前のリビジョンにロールバックします。kubectl rollout undo deploy/web
Serviceとネットワーク
Serviceとそのタイプ・クラスタIPを一覧表示します。kubectl get svc
現在それぞれのServiceを支えているPodのIPを表示します。kubectl get endpoints web
Pod群の前に立つServiceを作成します。--type=NodePortまたはLoadBalancerでクラスタ外に届きます。kubectl expose deploy/web --port=80
各Ingressの背後にあるロードバランサーアドレスを表示します(alpha)。kubectl ingress status -A
Podトラフィックを制限するポリシーを一覧表示します。kubectl get networkpolicies
ローカルポートをPodまたはServiceへトンネルします。kubectl port-forward svc/web 8080:80
ノードとメンテナンス
クラスタのノードとその状態を一覧表示します。kubectl get nodes -o wide
ノードをスケジュール不可にします(新しいPodは配置されません)。kubectl cordon node-1
ノードを再びスケジュール可能にします。kubectl uncordon node-1
ノードからPodを退避させ、スケジュール不可にします。kubectl drain node-1 --ignore-daemonsets
ノードからPodを遠ざけるtaintを追加または削除します。kubectl taint node node-1 key=value:NoSchedule
停止処理を省いて、固まったPodを即座に削除します。kubectl delete pod web-abc --grace-period=0 --force
オブジェクトと設定
リソースのスコープに使う新しいnamespaceを作成します。kubectl create namespace staging
namespaceとその状態を一覧表示します。kubectl get namespaces
設定キーやファイルをクラスタオブジェクトとして保存します。kubectl create configmap app --from-file=config.yaml
namespace内のConfigMapを一覧表示します。kubectl get configmaps
パスワードや証明書をSecretとして保存します。kubectl create secret generic db --from-literal=password=s3cret
namespace内のSecretを一覧表示します。kubectl get secrets
リソースにラベルを付けたり削除したりします。kubectl label pod web-abc tier=backend
セレクターで照合できないメタデータを付けます。kubectl annotate deploy/web release=july