ようこそ!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は、コマンドを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をインストールしたら、まず正しくインストールされ、クラスターと通信できることを確認します。次のコマンドはクライアントのバージョンを表示し、クラスターが設定されていればサーバーのバージョンも表示します:
kubectl versionkubectlが正しいクラスターに接続されていることを確認するには、次を使用します:
kubectl cluster-infoこのコマンドはKubernetesコントロールプレーンとコアサービスのアドレスを表示します。エラーが返る場合は、kubeconfigファイルが正しく設定されているか、対象クラスターに到達可能かを確認してください。
現在の設定と利用可能なコンテキストは、次のコマンドで確認できます:
kubectl config get-contextskubectl config current-context複数のクラスターを使っている場合、切り替えは簡単です:
kubectl config use-context <context-name><context-name>を目的のコンテキストに置き換えると、以降のすべてのkubectlコマンドの対象クラスターが切り替わります。
生産性を高めるには、シェルの自動補完を有効にしましょう。Tabキーを押すだけで、コマンド、リソース名、ネームスペースなどの引数をシェルが自動的に補完してくれます。Bashの場合は次を実行します:
echo 'source <(kubectl completion bash)' >> ~/.bashrcsource ~/.bashrcZshの場合は次を使用します:
echo 'source <(kubectl completion zsh)' >> ~/.zshrcsource ~/.zshrc便利なショートカットとして、kubectlのエイリアスを作成し、それに対して自動補完を有効にする方法があります:
alias k=kubectlcomplete -o default -F __start_kubectl kZshを使っている場合は、最後の行を次に置き換えてください:
compdef __start_kubectl kバージョン確認、クラスター接続、コンテキスト管理、自動補完の設定が完了すれば、日々のKubernetes運用の準備は万全です。
kubectlチートシート完全版

オプションフラグ
kubectlには、コマンド出力やリソース管理を強化するオプションフラグが用意されています。例えば:
出力形式:
JSON出力:
-o=jsonフラグを使うと、コマンド出力をJSON形式にできます。
kubectl get pods -o=jsonYAML出力:
-o=yamlフラグを使うと、コマンド出力をYAML形式にできます。
kubectl get pods -o=yamlワイド出力:
-o=wideオプションは、より詳細なプレーンテキスト出力を提供します(例:Podのノード名が表示されます)。
kubectl get pods -o=wideより細かく出力を調整したい場合は、--custom-columnsフラグで表示する列を指定できます。
例えば、Podの名前と稼働中のノードを一覧表示するには:
kubectl get pods -o=custom-columns="POD NAME:.metadata.name,NODE:.spec.nodeName"このコマンドの出力は次のようになります:
POD NAME NODEnginx-deployment-1 node-1nginx-deployment-2 node-2ネームスペースの指定:
デフォルトでは、kubectlコマンドは現在のコンテキストで定義されたネームスペース内で動作します。特定のネームスペースを対象にするには、-nまたは--namespaceフラグを使用します:
kubectl get pods -n <namespace_name>すべてのネームスペースのリソースを表示するには、-Aまたは--all-namespacesフラグを使用します:
kubectl get pods -A現在のコンテキストにデフォルトのネームスペースを設定するには:
kubectl config set-context --current --namespace=ns_nameファイル入力:
-fフラグは、リソース作成時にファイル名、ディレクトリ、またはURLを指定するために使用します。
kubectl create -f ./file_nameラベルによる絞り込み:
-lフラグを使うと、特定のラベルでリソースを絞り込めます。
kubectl get pods -l name=label_nameヘルプオプション:
kubectlコマンドのヘルプを表示するには、-hフラグを使用します。
kubectl -hウォッチモード:
--watch(または-w)フラグでリソースの変更を継続的に監視できます:
kubectl get pods -w出力の並べ替え:
--sort-byフラグを使って、特定のフィールドで出力を並べ替えられます:
kubectl get pods --sort-by=.metadata.nameエイリアスを使ったkubectlの活用
kubectlの操作では長いコマンドの入力が必要になり、時間がかかるうえミスも起きやすくなります。効率を上げるため、多くの開発者はよく使うコマンドにエイリアスを作成しています。
基本的なエイリアスの設定
alias k=kubectlecho '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のメリットをぜひ実際にお確かめください。今すぐデモを予約し、無料トライアルを開始しましょう!