😎

kubectlについて調べてみた

2025/02/14に公開

はじめに

今回は、Kubectl(正解の読み方がわからない「クベ」?「キューブ」?)について調べてみました。

kubectlの概要

kubectl は、Kubernetes クラスターを操作するための強力なコマンドラインツールです。クラウドネイティブなアプリケーションのデプロイ、スケーリング、管理を効率的に行うために、Pod、Deployment、ServiceなどのKubernetesリソースを簡単に操作できます。公式ドキュメントには、「kubectlはKubernetesの主要なツールであり、リソースの状態の取得、変更、管理がシンプルかつ強力に行える」と記載されています。詳細は Kubernetes公式ドキュメント を参照してください。

基本的なコマンド

kubectl では様々なリソース操作が可能です。以下に代表的なコマンドとその解説を紹介します。

クラスター情報の確認

クラスターの状態やノード情報を確認するためのコマンドです。

kubectl cluster-info   # クラスターの基本情報を表示
kubectl get nodes      # クラスター内のノード一覧を表示

Podの操作

Podはコンテナの実行単位であり、アプリケーションの実行状況の確認やトラブルシューティングに使用します。

kubectl get pods                          # 全Podの一覧を表示
kubectl describe pod <pod名>              # 特定のPodの詳細情報を表示
kubectl delete pod <pod名>                # Podを削除

Deploymentの操作

Deploymentは、Podのレプリカ管理や更新を自動化するためのオブジェクトです。これにより、ローリングアップデートやロールバックが容易に実行できます。

kubectl get deployments                   # Deployment一覧の表示
kubectl describe deployment <deployment名> # Deploymentの詳細情報を表示
kubectl delete deployment <deployment名>   # Deploymentの削除

Serviceの操作

Serviceは、Pod群に対するネットワークアクセスを管理し、内部・外部からの通信を可能にします。

kubectl get services                      # Service一覧の表示
kubectl describe service <service名>      # Serviceの詳細情報を表示
kubectl delete service <service名>        # Serviceの削除

ConfigMapとSecret

ConfigMapは設定情報を、Secretは機密情報を管理するためのリソースです。これらを使用することで、アプリケーションの設定やシークレット情報をコード化せずに管理できます。

kubectl get configmaps                    # ConfigMap一覧の表示
kubectl describe configmap <configmap名>    # 特定のConfigMapの詳細を表示
kubectl get secrets                       # Secret一覧の表示
kubectl describe secret <secret名>        # 特定のSecretの詳細を表示

注意: SecretはBase64エンコードされていますが、暗号化されているわけではないため、追加のセキュリティ対策が必要です。

ログの確認

アプリケーションのデバッグやトラブルシューティングのために、ログの確認は非常に重要です。

kubectl logs <pod名>      # Pod内のコンテナのログを表示
kubectl logs -f <pod名>   # ログをフォローし、リアルタイムに更新を表示

コンテナ内での操作

Pod内のコンテナに直接アクセスし、シェルを起動して操作を行うことができます。これにより、問題発生時の詳細なデバッグや一時的な設定変更が可能です。

kubectl exec -it <pod名> -- /bin/sh  # 対話型シェルを起動
kubectl cp <ローカルファイル> <pod名>:<コンテナ内のパス>  # ファイルをコピー

マニフェストの適用

Kubernetesリソースは、YAML形式のマニフェストファイルで定義されることが一般的です。これらのマニフェストを適用することで、インフラストラクチャのコード化(Infrastructure as Code)が実現できます。

kubectl apply -f <ファイル名>.yaml   # リソースの作成・更新
kubectl delete -f <ファイル名>.yaml  # リソースの削除

コンテキストの切り替え

複数のKubernetesクラスターを管理する場合、コンテキストを切り替えることで、現在作業しているクラスターを変更できます。これにより、異なる環境間での作業ミスを防ぐことができます。

kubectl config get-contexts              # 利用可能なコンテキストの一覧を表示
kubectl config use-context <コンテキスト名>  # 使用するコンテキストを切り替え

まとめ

kubectl は、Kubernetesのリソース管理を効率的に行うための不可欠なツールです。基本的な操作(kubectl getkubectl describekubectl apply)は日々の運用やトラブルシューティングで頻繁に利用されます。

参考文献:

BIDIRE

Discussion