PerfectScalePerfectScale

PerfectScale

kubectlチートシート:クラスター、Pod、Deploymentの操作まとめ

このページはEnglish、Deutsch、Español、Français、Italiano、Portuguêsでもご覧いただけます。

Tania Duggal
By Tania Duggal
Oct 13, 202625 min read

ようこそ!Kubernetesでよく使われるコマンドを、すぐに使える1枚のkubectlチートシートにまとめました。kubectlコマンドラインツールを使ってKubernetesクラスターを管理する手順を、ステップごとに解説します。

まずは主要コマンドの概要です。詳細は下記の完全版チートシートをご覧ください。

クラスターのコンテキストと設定:

  • コンテキストの一覧表示: kubectl config get-contexts
  • アクティブなコンテキストの切り替え: kubectl config use-context <context-name>
  • クラスター詳細の確認: kubectl cluster-info
  • バージョン確認: kubectl version

Deploymentとアプリケーション管理:

  • マニフェストからデプロイ: kubectl apply -f <filename.yaml>
  • マニフェストからリソースを削除: kubectl delete -f <filename.yaml>
  • Deploymentのスケール: kubectl scale deployment <deployment-name> --replicas=<N>
  • ロールアウト状況の確認: kubectl rollout status deployment/<deployment-name>
  • Deploymentのロールバック: kubectl rollout undo deployment/<deployment-name>

確認とデバッグ:

  • 全ネームスペースの全リソースを表示: kubectl get all -A
  • Podのステータスと詳細を表示: kubectl describe pod <pod-name>
  • Podログの追跡: kubectl logs -f <pod-name>
  • コンテナ内でコマンドを実行: kubectl exec -it <pod-name> -- <command>
  • Pod内でシェルを起動: kubectl exec -it <pod-name> -- /bin/bash
  • ローカルポートをPodに転送: kubectl port-forward <pod-name> <local-port>:<container-port>

生産性向上のヒントとフラグ:

  • エイリアスの設定: alias k=kubectl
  • 自動補完の設定: source <(kubectl completion bash)
  • ネームスペースでリソースを絞り込み: -n <namespace>フラグを使用
  • 適用せずに変更をテスト: kubectl apply -f <filename.yaml> --dry-run=client
  • リソースをYAMLで表示: kubectl get pod <pod-name> -o yaml

kubectlとは?

kubectlはKubernetesのCLIツールで、クラスターの操作や、リソースの作成・管理・編集・削除を簡単に行えます。Kubernetes APIサーバーと通信することで、アプリケーションの監視と制御が可能になります。

kubectlの仕組み

kubectlの仕組みを示す図:kubectlコマンドはkubeconfigファイルから設定を読み込み、REST API呼び出しに変換され、認証を経てHTTPS経由でコントロールプレーンのAPIサーバーに送信される。APIサーバーが処理してJSONレスポンスを返し、kubectlが整形して表示する

kubectlは、コマンドをKubernetes APIサーバーに送信し、APIサーバーがクラスター内で要求された操作を実行するという仕組みで動作します。アプリケーションのデプロイやリソースのステータス取得といったkubectlコマンドを実行すると、kubectlはHTTP経由でAPIサーバーと通信し、指示を送信します。APIサーバーはこれらのリクエストを処理してetcd(分散キーバリューストア)内のクラスターの状態を更新し、スケジューラーやコントローラーマネージャーなどの他のコンポーネントに、あるべき状態を実現するために必要なアクションを指示します。このやり取りによって、コマンドラインからKubernetesリソースを効率的に管理・監視できます。

注: 以前のバージョンのKubernetesでは、kubectlは特定の入力に基づいてリソース設定を作成するジェネレーターを利用していました。ジェネレーターにより、ユーザーは--generatorフラグを使ってPod、Deployment、Jobなど作成するリソースのタイプを指定できました。例えば、kubectl run nginx --image=nginx --generator=run-pod/v1はPodリソースを作成します。この方式により、予測可能な結果でリソース作成をスクリプト化・自動化できました。ただし、--generatorフラグはKubernetes v1.12で非推奨となり、v1.18で削除された点に注意してください。v1.18以降、kubectl runはPodの作成のみを行うよう簡素化され、ジェネレーターはkubectl createやkubectl applyといった、より明示的で宣言的なコマンドに置き換えられています

それでは、始めましょう。

kubectlのセットアップ:バージョン確認、クラスター情報、自動補完

kubectlをインストールしたら、まず正しくインストールされ、クラスターと通信できることを確認します。次のコマンドはクライアントのバージョンを表示し、クラスターが設定されていればサーバーのバージョンも表示します:

Terminal window
kubectl version

kubectlが正しいクラスターに接続されていることを確認するには、次を使用します:

Terminal window
kubectl cluster-info

このコマンドはKubernetesコントロールプレーンとコアサービスのアドレスを表示します。エラーが返る場合は、kubeconfigファイルが正しく設定されているか、対象クラスターに到達可能かを確認してください。

現在の設定と利用可能なコンテキストは、次のコマンドで確認できます:

Terminal window
kubectl config get-contexts
kubectl config current-context

複数のクラスターを使っている場合、切り替えは簡単です:

Terminal window
kubectl config use-context <context-name>

<context-name>を目的のコンテキストに置き換えると、以降のすべてのkubectlコマンドの対象クラスターが切り替わります。

生産性を高めるには、シェルの自動補完を有効にしましょう。Tabキーを押すだけで、コマンド、リソース名、ネームスペースなどの引数をシェルが自動的に補完してくれます。Bashの場合は次を実行します:

Terminal window
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc

Zshの場合は次を使用します:

Terminal window
echo 'source <(kubectl completion zsh)' >> ~/.zshrc
source ~/.zshrc

便利なショートカットとして、kubectlのエイリアスを作成し、それに対して自動補完を有効にする方法があります:

Terminal window
alias k=kubectl
complete -o default -F __start_kubectl k

Zshを使っている場合は、最後の行を次に置き換えてください:

Terminal window
compdef __start_kubectl k

バージョン確認、クラスター接続、コンテキスト管理、自動補完の設定が完了すれば、日々のKubernetes運用の準備は万全です。

kubectlチートシート完全版

kubectlコマンドの構造:kubectl get pods -n prod -o wide を、プログラム、アクション、リソース、ネームスペースフラグ、出力フラグに分解した図

オプションフラグ

kubectlには、コマンド出力やリソース管理を強化するオプションフラグが用意されています。例えば:

出力形式:

JSON出力:

-o=jsonフラグを使うと、コマンド出力をJSON形式にできます。

Terminal window
kubectl get pods -o=json

YAML出力:

-o=yamlフラグを使うと、コマンド出力をYAML形式にできます。

Terminal window
kubectl get pods -o=yaml

ワイド出力:

-o=wideオプションは、より詳細なプレーンテキスト出力を提供します(例:Podのノード名が表示されます)。

Terminal window
kubectl get pods -o=wide

より細かく出力を調整したい場合は、--custom-columnsフラグで表示する列を指定できます。

例えば、Podの名前と稼働中のノードを一覧表示するには:

Terminal window
kubectl get pods -o=custom-columns="POD NAME:.metadata.name,NODE:.spec.nodeName"

このコマンドの出力は次のようになります:

POD NAME NODE
nginx-deployment-1 node-1
nginx-deployment-2 node-2

ネームスペースの指定:

デフォルトでは、kubectlコマンドは現在のコンテキストで定義されたネームスペース内で動作します。特定のネームスペースを対象にするには、-nまたは--namespaceフラグを使用します:

Terminal window
kubectl get pods -n <namespace_name>

すべてのネームスペースのリソースを表示するには、-Aまたは--all-namespacesフラグを使用します:

Terminal window
kubectl get pods -A

現在のコンテキストにデフォルトのネームスペースを設定するには:

Terminal window
kubectl config set-context --current --namespace=ns_name

ファイル入力:

-fフラグは、リソース作成時にファイル名、ディレクトリ、またはURLを指定するために使用します。

Terminal window
kubectl create -f ./file_name

ラベルによる絞り込み:

-lフラグを使うと、特定のラベルでリソースを絞り込めます。

Terminal window
kubectl get pods -l name=label_name

ヘルプオプション:

kubectlコマンドのヘルプを表示するには、-hフラグを使用します。

Terminal window
kubectl -h

ウォッチモード:

--watch(または-w)フラグでリソースの変更を継続的に監視できます:

Terminal window
kubectl get pods -w

出力の並べ替え:

--sort-byフラグを使って、特定のフィールドで出力を並べ替えられます:

Terminal window
kubectl get pods --sort-by=.metadata.name

エイリアスを使ったkubectlの活用

kubectlの操作では長いコマンドの入力が必要になり、時間がかかるうえミスも起きやすくなります。効率を上げるため、多くの開発者はよく使うコマンドにエイリアスを作成しています。

基本的なエイリアスの設定

Terminal window
alias k=kubectl
echo 'alias k=kubectl' >> ~/.bashrc

これでkubectlの代わりにkを使えるようになります。

数百の定義済みエイリアスを提供するkubectl-aliasesリポジトリを利用すれば、コマンドをより素早く実行できます。

クラスター管理・コンテキスト・設定

クラスター管理とは、クラスターのセットアップ、確認、変更を行うことです。

コマンド 説明
kubectl cluster-info Kubernetesクラスターのエンドポイントと基本情報を表示します。
kubectl config get-contexts kubeconfigファイルに定義されたすべてのコンテキストを一覧表示します。
kubectl config current-context 現在アクティブなコンテキストを表示します。
kubectl config use-context <context> アクティブなコンテキストを指定したものに切り替えます。
kubectl config delete-context <context> kubeconfigファイルからコンテキストを削除します。
kubectl api-versions クラスターで利用可能なすべてのAPIバージョンを一覧表示します。
kubectl api-resources クラスターで利用可能なすべてのリソースタイプを、APIグループとネームスペースの詳細とともに一覧表示します。
kubectl config view kubeconfigファイルの設定内容(クラスター、コンテキスト、ユーザー設定)を表示します。
kubectl version kubectlクライアントとKubernetesサーバー両方のバージョン情報を表示します。

Podの管理

ショートコード: po

PodはKubernetesの最小単位で、クラスター内で実行中のプロセスの単一インスタンスを表します。ストレージとネットワークリソースを共有する1つ以上のコンテナを含むことができます。

コマンド 説明
kubectl get pods 現在のネームスペース内のすべてのPodを一覧表示します。
kubectl describe pod <pod-name> 指定したPodのステータス、イベント、コンテナ情報などの詳細を表示します。
kubectl exec -it <pod-name> <command> 指定したPod内で指定のコマンドを対話的に実行します(-itフラグにより対話型ターミナルでアクセスできます)。
kubectl delete pod <pod-name> 指定したPodをクラスターから削除します。
kubectl run <pod-name> --image=<image_name> 指定したイメージでPodを作成・実行します。
kubectl get pod -n <namespace_name> 指定したネームスペース内のすべてのPodを一覧表示します。
kubectl exec <pod-name> -c <container-name> <command> Pod内の特定のコンテナでコマンドを実行します。
kubectl top pod PodのCPUやメモリなどのリソース使用量を表示します。
kubectl annotate pod <pod-name> <annotation> 指定したPodにアノテーションを追加または更新します。
kubectl get pods --field-selector=status.phase=Running Podのステータスで絞り込み、現在RunningフェーズにあるPodを一覧表示します。
kubectl get pods --sort-by='.status.containerStatuses[0].restartCount' 各Podの最初のコンテナの再起動回数でPod一覧を並べ替えます。

ReplicaSet

ショートコード: rs

ReplicaSetは、指定した数のPodレプリカが稼働していることを保証します。主な違いは、ReplicaSetがセットベースのラベルセレクターをサポートする点です。

コマンド 説明
kubectl get rs 現在のネームスペース内のすべてのReplicaSetを一覧表示します。
kubectl get rs <replicaset_name> -o yaml 指定したReplicaSetの設定をYAML形式で表示します。
kubectl get rs <replicaset_name> -o json 指定したReplicaSetの設定をJSON形式で表示します。
kubectl describe rs <rs_name> 指定したReplicaSetの詳細情報を表示します。
kubectl get rs --namespace=<ns_name> 指定したネームスペース内のすべてのReplicaSetを一覧表示します。
kubectl delete rs <rs_name> --cascade=orphan 指定したReplicaSetを削除しますが、管理下のPodは稼働したまま残します(Podを孤立させます)。
kubectl delete rs <rs_name> 指定したReplicaSetを、管理下のすべてのPodとともに削除します。
kubectl scale rs <rs_name> --replicas=<count> 指定したReplicaSetが管理するPod数を指定した数に調整(スケール)します。
kubectl edit rs <rs_name> ReplicaSetの設定をデフォルトのエディターで開き、その場で変更できます。
kubectl replace -f <rs_file.yaml> 既存のReplicaSetの設定を、YAMLファイルで指定した内容に置き換えます。

DaemonSet

ショートコード: ds

DaemonSetは、特定のPodがクラスター内のすべての(または一部の)ノードで実行されることを保証します。各ノードで監視エージェントを実行するといった用途に便利です。

コマンド 説明
kubectl get daemonset 現在のネームスペース内のすべてのDaemonSetを一覧表示します。
kubectl describe daemonset <ds_name> 特定のDaemonSetの詳細情報を表示します。
kubectl get daemonset <daemonset_name> -o yaml 指定したDaemonSetの設定をYAML形式で表示します。
kubectl get daemonset <ds_name> -o json 指定したDaemonSetの設定をJSON形式で表示します。
kubectl delete daemonset <ds_name> 指定したDaemonSetをクラスターから削除します。
kubectl label daemonset <ds_name> <key>=<value> 指定したDaemonSetにラベルを追加または更新します。
kubectl annotate daemonset <ds_name> <key>=<value> 指定したDaemonSetにアノテーションを追加または更新します。
kubectl rollout status daemonset <ds_name> DaemonSetのロールアウト状況を確認します。
kubectl rollout history daemonset <ds_name> DaemonSetのロールアウト履歴を表示します。

StatefulSet

ショートコード: sts

StatefulSetはPodのデプロイとスケーリングを管理し、各Podに一意で安定したIDと永続ストレージを保証します。ステートフルなアプリケーションにとって重要な仕組みです。

コマンド 説明
kubectl get statefulset 現在のネームスペース内のすべてのStatefulSetを一覧表示します。
kubectl describe statefulset <statefulset_name> 指定したStatefulSetの詳細情報を表示します。
kubectl get statefulset <sts_name> -o yaml 指定したStatefulSetの設定をYAML形式で表示します。
kubectl get statefulset <sts_name> -o json 指定したStatefulSetの設定をJSON形式で表示します。
kubectl edit statefulset <sts_name> 指定したStatefulSetの設定をデフォルトのテキストエディターで開き、その場で変更できます。
kubectl scale statefulset <sts_name> --replicas=<number> 指定したStatefulSetが管理するPodレプリカ数を指定した数に調整します。
kubectl rollout status statefulset <statefulset_name> 指定したStatefulSetのロールアウト状況を確認・表示します。

ネームスペース

ショートコード: ns

ネームスペースは、クラスターのリソースを複数のユーザーやアプリケーション間で分割する仕組みです。

コマンド 説明
kubectl get namespace クラスター内のすべてのネームスペース(現在のコンテキストのネームスペース)を一覧表示します。
kubectl create namespace <namespace_name> 指定した名前で新しいネームスペースを作成します。
kubectl describe namespace <namespace_name> 指定したネームスペースの詳細情報を表示します。
kubectl edit namespace <namespace_name> 指定したネームスペースの設定をデフォルトのテキストエディターで開き、その場で編集できます。
kubectl delete namespace <namespace_name> 指定したネームスペースを、含まれるすべてのリソースとともにクラスターから削除します。

Service

ショートコード: svc

Serviceは、Podの論理的な集合とそれらへのアクセスポリシーを定義します。アプリケーションの各部分間の通信を可能にし、外部トラフィックに対してアプリケーションを公開することもできます。

コマンド 説明
kubectl get services 現在のネームスペース内のすべてのServiceを一覧表示します
kubectl create service <svc-type> <svc-name> --tcp=<port> 指定したタイプ(clusterip、nodeport、loadbalancerなど)のServiceを指定した名前で作成し、指定ポートでTCPをマッピングします
kubectl edit service <svc-name> 指定したServiceの設定を編集するためのエディターを開きます
kubectl describe service <svc-name> 指定したServiceの詳細情報を表示します
kubectl delete service <svc-name> 指定したServiceをクラスターから削除します
kubectl get endpoints <svc-name> 指定したServiceを支えるエンドポイント(PodのIPアドレス)を一覧表示します
kubectl expose deployment [deploy_name] 指定したDeploymentを公開するServiceを作成します。exposeの対象にはpod(po)、service(svc)、replicaset(rs)も指定できます

ServiceAccount

ショートコード: sa

ServiceAccountは、Pod内で実行されるプロセスにIDを提供し、Kubernetes APIと安全にやり取りできるようにします。

コマンド 説明
kubectl get serviceaccounts 現在のネームスペース内のすべてのServiceAccountを一覧表示します
kubectl describe serviceaccount <sa-name> 指定したServiceAccountの詳細情報を表示します
kubectl replace -f <sa.yaml> ServiceAccountを新しい設定で置き換え(更新)します
kubectl delete serviceaccount <sa_name> 指定したServiceAccountをクラスターから削除します。

Deployment

ショートコード: deploy

DeploymentはPodとReplicaSetに対する宣言的な更新を提供します。アプリケーションのあるべき状態を定義すれば、Deploymentコントローラーが実際の状態を制御されたペースであるべき状態へと変化させます。

コマンド 説明
kubectl get deployment 現在のネームスペース内のすべてのDeploymentを一覧表示します。
kubectl describe deployment <deployment_name> 指定したDeploymentの詳細情報を表示します
kubectl create deployment <deployment-name> --image=<img-name> 指定したコンテナイメージを使って<deployment-name>という名前の新しいDeploymentを作成します
kubectl edit deployment <deployment_name> Deploymentの設定をデフォルトのテキストエディターで開き、その場で編集できます
kubectl scale deployment <deployment-name> --replicas=<replica-count> Deploymentが管理するPodレプリカ数を指定した数に調整します。
kubectl set image deployment/<deployment-name> <container-name>=<new-image-name> Deployment内の指定したコンテナのイメージを更新します
kubectl rollout status deployment/<deployment-name> Deploymentの現在のロールアウト状況を表示します
kubectl rollout pause deployment/<deployment-name> ロールアウトを一時停止し、再開するまで以降の更新を防ぎます
kubectl rollout resume deployment/<deployment-name> 一時停止中のDeploymentのロールアウトを再開します
kubectl rollout undo deployment/<deployment-name> Deploymentを1つ前のリビジョンに戻します
kubectl rollout undo deployment/<deployment-name> --to-revision=<revision-number> Deploymentを指定したリビジョン番号にロールバックします
kubectl delete deployment <deployment-name> 指定したDeploymentを管理下のPodとともに削除します

JobとCronJob

ショートコード: job、cj

Jobはタスクが正常に完了するまで1つ以上のPodを実行します。CronJobはスケジュールに従ってJobを作成するため、バックアップやレポートなどの定期的なタスクに便利です。

コマンド 説明
kubectl get jobs 現在のネームスペース内のすべてのJobを一覧表示します。
kubectl describe job <job-name> 指定したJobの詳細情報を表示します。
kubectl create job <job-name> --image=<image-name> 指定したコンテナイメージを実行するJobを作成します。
kubectl delete job <job-name> 指定したJobを削除します。
kubectl get cronjobs 現在のネームスペース内のすべてのCronJobを一覧表示します。
kubectl describe cronjob <cronjob-name> 指定したCronJobの詳細情報を表示します。
kubectl create cronjob <cronjob-name> --image=<image-name> --schedule="<cron-expression>" 指定したスケジュールでCronJobを作成します。
kubectl create job --from=cronjob/<cronjob-name> <job-name> 既存のCronJobから単発のJobを作成します。
kubectl patch cronjob <cronjob-name> -p '{"spec":{"suspend":true}}' CronJobの今後の実行を一時停止します。
kubectl delete cronjob <cronjob-name> 指定したCronJobを削除します。

Horizontal Pod Autoscaler

ショートコード: hpa

**Horizontal Pod Autoscaler(HPA)**は、CPUやメモリ使用量などのメトリクスに基づいてPodレプリカ数を自動的に調整します。

コマンド 説明
kubectl get hpa すべてのHorizontal Pod Autoscalerを一覧表示します。
kubectl describe hpa <hpa-name> 指定したHPAの詳細情報を表示します。
kubectl autoscale deployment <deployment-name> --cpu-percent=<target> --min=<min> --max=<max> 指定したDeploymentに対するHPAを作成します。
kubectl edit hpa <hpa-name> HPAの設定を開き、その場で編集できます。
kubectl delete hpa <hpa-name> 指定したHPAを削除します。
kubectl get hpa -w HPAのメトリクスとスケーリングイベントをリアルタイムで監視します。
kubectl top pods Metrics Serverが利用するPodのリソース使用量を表示します。
kubectl top nodes ノードのCPUとメモリ使用量を表示します。

RBACと権限チェック

ロールベースアクセス制御(RBAC)は、どのユーザーやServiceAccountがKubernetesリソースにアクセスできるかを制御します。

コマンド 説明
kubectl get roles 現在のネームスペース内のすべてのRoleを一覧表示します。
kubectl get rolebindings 現在のネームスペース内のすべてのRoleBindingを一覧表示します。
kubectl get clusterroles すべてのClusterRoleを一覧表示します。
kubectl get clusterrolebindings すべてのClusterRoleBindingを一覧表示します。
kubectl describe role <role-name> 指定したRoleの詳細情報を表示します。
kubectl describe clusterrole <clusterrole-name> 指定したClusterRoleの詳細情報を表示します。
kubectl auth can-i <verb> <resource> 現在のユーザーがリソースに対して操作を実行できるかを確認します。
kubectl auth can-i <verb> <resource> --as=<user> 別のユーザーの権限を確認します。
kubectl auth can-i --list 現在のユーザーが持つすべての権限を一覧表示します。

Ingressリソース

ショートコード: ing

Ingressは、Kubernetesクラスター内のServiceへの外部からのHTTP/HTTPSアクセスを管理します。通常はIngressコントローラーが必要です。

コマンド 説明
kubectl get ingress 現在のネームスペース内のすべてのIngressリソースを一覧表示します。
kubectl describe ingress <ingress-name> 指定したIngressの詳細情報を表示します。
kubectl create ingress <ingress-name> --rule="<host>/<path>=<service>:<port>" ルーティングルール付きのIngressを作成します。
kubectl edit ingress <ingress-name> Ingressの設定を開き、その場で編集できます。
kubectl delete ingress <ingress-name> 指定したIngressを削除します。
kubectl get ingress -A すべてのネームスペースのIngressリソースを一覧表示します。
kubectl get ingress <ingress-name> -o yaml Ingressの設定をYAML形式で表示します。

高度なデバッグ

これらのコマンドは、Kubernetesクラスターにおけるアプリケーション、ネットワーク、リソースの問題のトラブルシューティングに役立ちます。

コマンド 説明
kubectl logs <pod-name> 指定したPodのログを表示します。
kubectl logs <pod-name> -c <container-name> マルチコンテナPod内の特定のコンテナのログを表示します。
kubectl logs -f <pod-name> 指定したPodのログをストリーム表示します。
kubectl logs <pod-name> --previous クラッシュしたコンテナの前回インスタンスのログを表示します。
kubectl exec -it <pod-name> -- /bin/sh 実行中のコンテナ内で対話型シェルを開きます。
kubectl port-forward pod/<pod-name> <local-port>:<pod-port> デバッグ用にローカルポートをPodに転送します。
kubectl debug <pod-name> -it --image=busybox 指定したPodにアタッチされたエフェメラルなデバッグコンテナを作成します。
kubectl get events --sort-by=.metadata.creationTimestamp クラスターのイベントを時系列順に一覧表示します。
kubectl describe node <node-name> ノードの状態、割り当て済みリソース、直近のイベントを表示します。
kubectl cp <pod-name>:<remote-path> <local-path> Podからローカルマシンへファイルをコピーします。

イベント

ショートコード: ev

イベントは、Podの作成・削除やエラーなど、クラスター内で何が起きたかの記録です。

コマンド 説明
kubectl get events 現在のネームスペース内のすべてのイベントを一覧表示します
kubectl get events --field-selector type!=Normal Normal以外のタイプのイベントを表示します
kubectl get events --field-selector type=Warning Warningタイプのイベントのみを絞り込んで表示します
kubectl get events -w 新しいイベントをリアルタイムで監視します
kubectl get events --field-selector involvedObject.name=<object_name> Podやノードなど特定のオブジェクトに関連するイベントを表示します

ログ

ログは、実行中のアプリケーションやシステムコンポーネントの出力です。

コマンド 説明
kubectl logs <pod_name> 指定したPodのメインコンテナのログを取得・表示します
kubectl logs -f <pod_name> 指定したPodのライブログをストリーム表示します
kubectl logs --since=6h <pod_name> 指定したPodの過去6時間以内に生成されたログを表示します
kubectl logs --tail=50 <pod_name> 指定したPodのログの最後の50行を表示します
kubectl logs -f <pod_name> -c <container_name> Pod内の特定のコンテナのライブログをストリーム表示します
kubectl logs <pod_name> > podfile.log Podのログをpodfile.logというファイルに保存します
kubectl logs --previous <pod_name> 指定したPod内のコンテナの前回インスタンスのログを表示します

SecretとConfigMap

ConfigMapのショートコード: cm

Secretはパスワードや鍵などの機密情報を保存し、ConfigMapは機密性のない設定データを保持します。どちらも設定情報をイメージの内容から切り離すことで、アプリケーションのポータビリティを保てます。

コマンド 説明
kubectl get secrets 現在のネームスペース内のすべてのSecretを一覧表示します
kubectl get configmaps 現在のネームスペース内のすべてのConfigMapを一覧表示します
kubectl describe secret <secret-name> 指定したSecretの詳細情報を表示します
kubectl delete secret <secret-name> 指定したSecretをクラスターから削除します
kubectl describe configmap <configmap-name> 指定したConfigMapの詳細情報を表示します
kubectl create configmap <config-map-name> --from-file=<path-to-file> 指定したファイルの内容を使って、指定した名前の新しいConfigMapを作成します
kubectl create secret <secret-type> <secret-name> --from-literal=key=value キーと値のペアを使って、指定したタイプの新しいSecretを作成します

ノードの管理

ショートコード: no

ノードはKubernetesにおけるワーカーマシンです。

コマンド 説明
kubectl get nodes クラスター内のすべてのノードを一覧表示します
kubectl describe node <node-name> 指定したノードの詳細情報を表示します
kubectl drain <node-name> すべてのPodを退避し、ノードをスケジュール不可としてマークすることで、メンテナンスの準備をします
kubectl uncordon <node-name> cordon済み(スケジュール不可)のノードを再びスケジュール可能としてマークし、新しいPodをスケジュールできるようにします
kubectl label node <node_name> <key>=<value> 指定したノードにラベルを追加または更新します
kubectl cordon <node_name> 指定したノードをスケジュール不可としてマークします
kubectl taint node <node_name> <key>=<value>:<taint-effect> 指定したノードにtaintを適用します
kubectl top node <node_name> 指定したノードのCPUやメモリなどのリソース使用量メトリクスを表示します
kubectl annotate node <node_name> <key>=<value> 指定したノードにアノテーションを追加または更新します

ストレージ(PV・PVC)

Persistent Volumeのショートコード: pv

Persistent Volume Claimのショートコード: pvc

PersistentVolumeはクラスター内のストレージリソースで、PersistentVolumeClaimはユーザーによるストレージの要求です。

コマンド 説明
kubectl get pv クラスター内のすべてのPersistent Volumeを一覧表示します
kubectl describe pv <pv-name> 特定のPersistent Volumeの詳細情報を表示します
kubectl get pvc 現在のネームスペース内のすべてのPersistent Volume Claimを一覧表示します
kubectl describe pvc <pvc-name> 特定のPersistent Volume Claimの詳細情報を表示します

ファイルとディレクトリのコピー

ローカルシステムとPodのコンテナ間でファイルを転送でき、デバッグやデータのバックアップに役立ちます。

コマンド 説明
kubectl cp <local-path> <namespace>/<pod-name>:<container-path> ローカルマシンから、指定したネームスペースとPod内のコンテナへファイルまたはディレクトリをコピーします。
kubectl cp <source-pod-name>:<source-container-path> <local-path> -n <namespace> 指定したネームスペースのPod内コンテナから、ローカルマシンへファイルまたはディレクトリをコピーします。
kubectl cp <local-path> <destination-namespace>/<destination-pod-name>:<destination-container-path> ローカルマシンから、コピー先のPodとネームスペースへファイルまたはディレクトリをコピーします。

出力の詳細度とデバッグ

詳細度(verbosity)とは、kubectlやkubeletなどのコンポーネントが生成するログに含まれる情報の細かさを指します。kubectlコマンドの詳細度は調整できます。

コマンド 説明
kubectl get <resource-type> --v=<verbosity-level> 詳細度レベルを設定する一般的な形式です。指定したリソースタイプに対してコマンドを実行する際に、どの程度のデバッグ出力を含めるかをkubectlに指示します。
kubectl get <resource-type> --v=0 最小限のデバッグ出力でコマンドを実行します(デフォルトのレベル)。
kubectl get <resource-type> --v=7 より高い詳細度レベルで、クライアントが送信するHTTPSリクエストヘッダーなど追加のデバッグ情報が出力されます。
kubectl get <resource-type> --v=8 詳細度をさらに上げます。レベル8では、HTTPリクエストとレスポンスの内容(ボディデータ)も表示されます。

よくある質問

kubectlとは何ですか? kubectlはKubernetesのコマンドラインツールです。コマンドをKubernetes APIサーバーに送信し、APIサーバーがクラスター内でリクエストを実行することで、リソースの作成・管理・編集・削除やアプリケーションの監視ができます。

kubectlでクラスターを切り替えるには? kubectl config get-contextsを実行してkubeconfigファイル内のコンテキストを一覧表示し、kubectl config use-context <context-name>でいずれかをアクティブにします。以降のkubectlコマンドはすべてそのクラスターに対して実行されます。

すべてのネームスペースのPodを一覧表示するには? -A(または--all-namespaces)フラグを追加します。例:kubectl get pods -A。特定のネームスペースを対象にする場合は、代わりに-n <namespace_name>を使用します。

クラッシュしたコンテナのログを確認するには? kubectl logs <pod-name> --previousを実行すると、コンテナの前回インスタンスのログを確認できます。Podに複数のコンテナがある場合は-c <container-name>を追加してください。

Deploymentをロールバックするには? kubectl rollout undo deployment/<deployment-name>を実行すると、1つ前のリビジョンに戻ります。特定のリビジョンを指定する場合は--to-revision=<revision-number>を追加します。

kubectlのエイリアスと自動補完を設定するには? alias k=kubectlを実行すると、kubectlの代わりにkを使えます。恒久化するには~/.bashrcに追記してください。Bashの自動補完は、source <(kubectl completion bash)を~/.bashrcに追加します。チートシートではZshの設定方法も扱っています。

PerfectScaleでクラウドコストを最大50%削減

PerfectScaleは、Kubernetesとシームレスに連携するよう設計された強力なツールです。PerfectScaleをKubernetes環境に統合することで、コンテナのオーケストレーションをシンプルにし、最適化できます。この統合によりクラスター管理の効率が向上し、リソースをより効果的に割り当て、運用コストを削減し、アプリケーション全体の安定性と回復力を高められます。PerfectScaleのAIによるインサイトはシステムパフォーマンスの包括的な可視性を提供し、動的な需要に応じたプロアクティブな調整を可能にします。つまり、Kubernetesスタックの各レイヤーを継続的に最適化するデータドリブンな自律アクションによって、ピーク時のパフォーマンスを確保しながらコストを最大50%削減できるのです。PerfectScaleのメリットをぜひ実際にお確かめください。今すぐデモを予約し、無料トライアルを開始しましょう!