Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

kubectlチートシート:Kubernetesを使いこなす必須コマンド集【無料PDF付き】

By DoiTApr 14, 202511 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

person coding on laptop

Kubernetes管理者にとって欠かせないツールが、クラスタを効率的に運用するためのコマンドラインインターフェース「kubectl」です。

kubectl(読み方は「キューブコントロール」または「キューブ・シー・ティー・エル」)は、Kubernetes APIサーバーとの直接的な対話手段です。アプリのデプロイ、リソースの確認、ログの参照など、クラスタ内のほぼあらゆる操作をこの1つのツールで実行できます。DevOpsエンジニア、プラットフォーム管理者、コンテナアプリ開発者のいずれにとっても、kubectlを使いこなすことはクラウド環境でのKubernetes運用に不可欠です。

本チートシートでは、よく使うkubectlコマンドを実践例とコツとともに紹介し、日々のKubernetes業務を一段上のレベルへ引き上げるお手伝いをします。

kubectlコマンドの主要カテゴリ

Kubectl logo Kubectl logo

kubectlコマンドは、クラスタ管理のさまざまな側面に対応する3つの主要カテゴリに分類できます。

1. クラスタ情報コマンド

クラスタ情報コマンドは、Kubernetesクラスタの状態と構成を把握するためのコマンドです。

  • クラスタコンポーネントの情報取得
  • ノードのステータスとリソース確認
  • apiserverのヘルスチェック
  • コントロールプレーンのコンポーネント検査

2. リソース管理コマンド

リソース管理コマンドでは、Kubernetesリソースの作成・変更・削除・確認が行えます。

  • リソースの作成・更新
  • リソースの一覧表示と詳細確認
  • リソースの削除
  • リソースのスケールアップ/ダウン
  • リソースのリアルタイム編集

3. アプリケーションデプロイコマンド

アプリケーションデプロイコマンドは、デプロイの実行とアプリのライフサイクル管理を支援します。

  • YAMLまたはJSONからアプリをデプロイ
  • デプロイメントとロールアウトの管理
  • オートスケーリングの設定
  • アプリ設定の更新
  • アプリのネットワーク設定

これら3つのカテゴリを踏まえて、Kubernetesの運用で頻繁に使う具体的なkubectlコマンドを見ていきましょう。

さらに詳しく:kubectlコマンドチートシート

person coding on laptop person coding on laptop

以下は、日常的に使う頻度の高いkubectlコマンドを、Kubernetesワークフローを効率化する実例とともにまとめたチートシートです。手元に置いてお使いください。

Pods

PodはKubernetesにおける最小のデプロイ単位で、ストレージとネットワークリソースを共有する1つ以上のコンテナで構成されます。

すべてのPodを一覧表示:

kubectl get pods

詳細情報付きでPodを一覧表示:

kubectl get pods -o wide

特定のPodの詳細情報を取得:

kubectl describe pod

YAMLファイルからPodを作成:

kubectl apply -f pod.yaml

Podを削除:

kubectl delete pod

Pod内のコンテナでコマンドを実行:

kubectl exec -it --

Podのログを取得:

kubectl logs

Podのログをリアルタイムでストリーミング:

kubectl logs -f

マルチコンテナPod内の特定コンテナのログを取得:

kubectl logs -c

Podへのポートフォワード:

kubectl port-forward :

Podとファイルをコピー:

kubectl cp :/path/to/file /local/path

kubectl cp /local/path :/path/in/pod

Services

ServiceはPodに安定したネットワークを提供し、抽象化レイヤーとして各コンポーネント間の通信をスムーズにします。

すべてのServiceを一覧表示:

kubectl get services

Serviceの詳細情報を取得:

kubectl describe service

YAMLファイルからServiceを作成:

kubectl apply -f service.yaml

DeploymentをServiceとして公開:

kubectl expose deployment --port= --target-port=

Serviceを削除:

kubectl delete service

Serviceに紐づくエンドポイントを表示:

kubectl get endpoints

ClusterIP Serviceを作成:

kubectl create service clusterip --tcp=:

NodePort Serviceを作成:

kubectl create service nodeport --tcp=:

**** LoadBalancer Serviceを作成:

kubectl create service loadbalancer --tcp=:

Deployments

DeploymentはPodおよびReplicaSetへの宣言的な更新を実現し、スケーリングやアプリの更新を容易にします。

すべてのDeploymentを一覧表示:

kubectl get deployments

Deploymentの詳細情報を取得:

kubectl describe deployment

YAMLファイルからDeploymentを作成:

kubectl apply -f deployment.yaml

コマンドラインから直接Deploymentを作成:

kubectl create deployment --image=

Deploymentをスケール:

kubectl scale deployment --replicas=

Deploymentのコンテナイメージを更新:

kubectl set image deployment/ =

Deploymentを以前のリビジョンにロールバック:

kubectl rollout undo deployment/

Deploymentのロールアウト状況を確認:

kubectl rollout status deployment/

Deploymentのロールアウト履歴を表示:

kubectl rollout history deployment/

Deploymentのロールアウトを一時停止:

kubectl rollout pause deployment/

Deploymentのロールアウトを再開:

kubectl rollout resume deployment/

ConfigMapとSecret

ConfigMapSecretは、それぞれ設定データと機密情報の保存に使われます。

セキュリティ上の重要な注意点: ConfigMapとSecretはいずれもデフォルトでetcdに暗号化されずに保存されます。機密データを扱う際は、必ず保存時の暗号化を有効化してください。

ConfigMapを一覧表示:

kubectl get configmaps

リテラル値からConfigMapを作成:

kubectl create configmap --from-literal=key1=value1 --from-literal=key2=value2

ファイルからConfigMapを作成:

kubectl create configmap --from-file=

ConfigMapの詳細情報を取得:

kubectl describe configmap

ConfigMapを削除:

kubectl delete configmap

Secretを一覧表示:

kubectl get Secrets

リテラル値からSecretを作成:

kubectl create secret generic --from-literal=key1=value1 --from-literal=key2=value2

ファイルからSecretを作成:

kubectl create secret generic --from-file=

Secretの詳細情報を取得:

kubectl describe secret

Secretを削除:

kubectl delete secret

kubectl活用のプロのコツ

person looking at phone while codingperson looking at phone while coding

kubectlは、Kubernetesクラスタを操作しリソースを管理するうえで欠かせないコマンドラインツールです。使い方を押さえておけば、デプロイ・スケーリング・トラブルシューティングを格段に効率化できます。kubectl editを使えば、Podやデプロイメントといったリソースをコマンドラインから直接、すばやく書き換えることも可能です。

Namespaceを使いこなす

NamespaceはKubernetesの基本機能の1つで、クラスタを仮想的なサブクラスタに分割できます。マルチテナント環境や、複雑なアプリを扱う際にとても役立ちます。

特定のNamespaceのリソースを一覧表示:

kubectl get -n

特定のNamespaceにリソースを作成:

kubectl apply -f <file.yaml> -n

すべてのkubectlコマンドのデフォルトNamespaceを設定:

kubectl config set-context --current --namespace=

すべてのNamespaceを横断してリソースを表示:

kubectl get --all-namespaces

新しいNamespaceを作成:

kubectl create namespace

関連するリソースを同じNamespaceにまとめておくと、アプリやチームごとの境界が明確になります。dev-frontendprod-backendmonitoringのように、用途が一目でわかる名前を付けるのがおすすめです。

ラベルセレクタによるリソースのフィルタリング

ラベルはKubernetesオブジェクトに付与するキーと値のペアで、リソースグループの整理・選択・管理を効率化できます。

特定のラベルを持つリソースを一覧表示:

kubectl get -l key=value

複数のラベル条件でリソースを一覧表示:

kubectl get -l ‘key1=value1,key2=value2’

特定のラベルキーを持つリソースを一覧表示(値は問わない):

kubectl get -l ‘key’

特定のラベルを持たないリソースを一覧表示:

kubectl get -l ‘!key’

既存のリソースにラベルを追加:

kubectl label key=value

リソースからラベルを削除:

kubectl label key-

リソースを効果的に管理するには、一貫したラベル付けの方針が欠かせません。appenvironmenttierversionownerといったラベルを活用して、わかりやすく整理されたリソース体系を作りましょう。

ローリングアップデートを活用する

Kubernetesではローリングアップデートを使うことで、ダウンタイムなしにアプリを更新できます。旧バージョンのインスタンスを段階的に新バージョンへと置き換えていく仕組みです。

新しいイメージでDeploymentを更新(ローリングアップデートが発動):

kubectl set image deployment/ =:

ロールアウト状況を確認:

kubectl rollout status deployment/

Deployment YAMLで更新戦略を設定:

spec:

strategy:

type: RollingUpdate

rollingUpdate:

 maxUnavailable: 25%

 maxSurge: 25%

問題が発生した場合は以前のバージョンにロールバック:

kubectl rollout undo deployment/

Deploymentのロールアウトを一時停止:

Copykubectl rollout pause deployment/

これは段階的なデプロイで特に役立ちます。一部のPodにだけリリースして動作を検証し、問題なければロールアウトを再開できます。

Deploymentのロールアウトを再開:

Copykubectl rollout resume deployment/

重要なアプリでは、Deployment変更時に--recordフラグを付けるのがおすすめです。実行したコマンドが注釈として残るので、後から変更履歴を簡単にたどれます。

kubectl apply -f deployment.yaml --record

リソースクォータと制限を慎重に管理する

リソース管理はKubernetes運用の要です。適切なリソースリクエストと制限を設定することで、クラスタの安定性を保ち、リソースの公平な配分を実現できます。

Namespace内のリソースクォータを表示:

kubectl get resourcequota -n

Namespaceにリソースクォータを作成:

kubectl create quota --hard=cpu=1,memory=1G,pods=10 -n

Podのリソース使用状況を確認:

kubectl top pods

ノードのリソース使用状況を確認:

kubectl top nodes

コンテナ仕様を定義する際は、必ずリソースリクエストと制限を設定しましょう。

resources:

requests:

memory: "64Mi"

cpu: "250m"

limits:

memory: "128Mi"

cpu: "500m"

リソースリクエストはスケジューラがPodの配置先を決める際に使われ、制限はコンテナが終了させられる可能性のある最大使用量を表します。基本は、リクエストを定常時の想定使用量に、制限をピーク時に許容できる値に合わせて設定するとよいでしょう。

kubectlでデバッグを使いこなす

Kubernetesアプリを安定稼働させるには、デバッグが欠かせません。kubectlにはトラブルシューティングを手助けするコマンドが豊富に揃っています。

コンテナのログを取得:

kubectl logs -c

一時Podでインタラクティブにデバッグ:

kubectl run debug --rm -it --image=busybox -- sh

既存のPodにアタッチしたデバッグコンテナを作成:

kubectl debug -it --image=busybox --share-processes --copy-to=

Namespace内のイベントを表示:

kubectl get events -n

Podの状態とステータス詳細を確認:

Copykubectl describe pod

このコマンドはPodの状態を構造化された形式で出力し、遷移履歴と現在の状態を読みやすく表示します。

ネットワークデバッグ用コンテナでPod間の接続を確認:

kubectl run test-connectivity --rm -it --image=nicolaka/netshoot -- bash

繰り返し発生する問題には、--previousフラグで過去にクラッシュしたコンテナのログを確認すると有効です。

kubectl logs --previous

kubectlでのセキュリティのベストプラクティス

two people coding on laptoptwo people coding on laptop

Kubernetesクラスタを安全に保つことは非常に重要であり、kubectlはその要となるツールです。セキュリティをしっかり押さえるためのベストプラクティスを紹介します。

RBACでアクセス制御を管理する

ロールベースアクセス制御(RBAC)はKubernetesにおける認可の標準的な仕組みで、ユーザーやサービスアカウントに対してきめ細かな権限を定義できます。

Namespace内のロールを表示:

kubectl get roles -n

クラスタロールを表示:

kubectl get clusterroles

ロールバインディングを表示:

kubectl get rolebindings -n

クラスタロールバインディングを表示:

kubectl get clusterrolebindings

特定の権限を持つロールを作成:

kubectl create role developer --verb=get,list,watch --resource=pods,deployments -n

ロールをユーザーにバインド:

kubectl create rolebinding dev-user-binding --role=developer --user=dev-user -n

可能な限りClusterRoleBindingsではなくRoleBindingsを使い、権限を特定のNamespaceに限定しましょう。必要なNamespaceにだけアクセスを絞ることで最小権限の原則に沿うことができ、認証情報が漏洩した際の影響範囲も抑えられます。

最小権限の原則に従い、ユーザーやサービスアカウントには業務に必要な権限だけを付与しましょう。役割や責任の変化に合わせて、ロールバインディングを定期的に見直す習慣をつけることも大切です。

Secretの安全な取り扱い

Kubernetes SecretはAPIキー、パスワード、証明書といった機密情報を扱うため、慎重に取り扱う必要があります。

ファイルから安全にSecretを作成:

kubectl create secret generic db-credentials --from-file=./username.txt --from-file=./password.txt

TLS Secretを作成:

kubectl create secret tls tls-secret --cert=path/to/cert --key=path/to/key

Secretを環境変数としてマウント:

env:

- name: DB_PASSWORD

valueFrom:

 secretKeyRef:

   name: db-credentials

   key: password

Secretをファイルとしてマウント:

volumes:

- name: secret-volume

secret:

 secretName: ssl-certificates

セキュリティをさらに高めたい場合は、HashiCorp Vault、AWS Secrets Manager、Sealed Secretsといった外部のシークレット管理ツールの活用も検討してください。シークレットのローテーション、監査ログ、暗号化など、便利な機能が揃っています。

正しいコンテキストでkubectlを使う

誤って意図しないクラスタを操作してしまわないよう、常に正しいコンテキストで作業しているかを確認しましょう。

利用可能なすべてのコンテキストを表示:

kubectl config get-contexts

特定のコンテキストに切り替え:

kubectl config use-context

現在のコンテキストを表示:

kubectl config current-context

現在のコンテキストにNamespaceを設定:

kubectl config set-context --current --namespace=

重要な本番環境では、シェルプロンプトなどに視覚的な目印を入れて、現在のクラスタとNamespaceがひと目でわかるようにしておくと安心です。誤ったリソースへの操作を防ぎやすくなります。

ネットワークポリシーを活用する

ネットワークポリシーはKubernetesクラスタ内のファイアウォールとして機能し、Pod間の通信を制御します。

ネットワークポリシーを一覧表示:

kubectl get networkpolicies

すべてのIngressトラフィックをデフォルトで拒否するネットワークポリシーを作成:

kubectl apply -f - <<EOF

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

name: default-deny-ingress

spec:

podSelector: {}

policyTypes:

- Ingress

EOF

特定のトラフィックを許可するネットワークポリシーを作成:

kubectl apply -f - <<EOF

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

name: allow-frontend-to-backend

spec:

podSelector:

matchLabels:

 app: backend

ingress:

- from:

- podSelector:

   matchLabels:

     app: frontend

ports:

- port: 8080

EOF

まずは「すべて拒否」のネットワークポリシーをベースラインとし、必要なトラフィックだけを許可していく方式がおすすめです。最小権限の原則を実践し、攻撃対象領域を最小限に保てます。

kubectlコマンドとベストプラクティスでKubernetes運用を極めよう

kubectlはKubernetesの世界で欠かせない存在であり、クラスタを管理・操作するための頼れるインターフェースです。本チートシートで紹介したコマンドとベストプラクティスを身につければ、コンテナアプリ運用のさまざまな課題にも自信を持って向き合えるようになります。

Kubernetesは進化を続けており、kubectlも同様です。新機能やアップデートを常にチェックし、クラスタ管理スキルを磨き続けましょう。

Kubernetesのサービス用IPレンジ拡張など、より高度なトピックに踏み込みたい方は、サービス用IPレンジをスムーズに拡張する方法の詳細ガイドをぜひご覧ください。

Kubernetes環境が拡大し複雑になるほど、適切なツールと知識の重要性は増していきます。そこで頼れるのがDoiTです。当社のグローバルなクラウドアーキテクトチームは、コスト効率に優れ、スケーラブルで耐障害性の高いクラウドインフラ構築を支援してきました。難解なKubernetesの構成・連携の課題から、トラブルシューティング、運用効率の改善まで、しっかりとサポートします。

お気軽にご相談ください。コンテナオーケストレーション戦略を最適化し、パフォーマンスとコストの両立を実現するためのご支援についてご案内します。