kubectlコマンドラインツール
kubectlツールは、Kubernetes APIを通じてクラスターと通信します。
設定については、kubectlは$HOME/.kubeディレクトリ内のconfigという名前のファイルを探します。
KUBECONFIG環境変数を設定するか、--kubeconfigフラグを設定することで、他のkubeconfigファイルを指定できます。
kubectlの役割
kubectlツールは、Kubernetesオブジェクトの作成、検査、更新、削除を行うための主要なインターフェースです。
クラスター内部で実行されるKubernetesコンポーネントと、それらのコンポーネントが実装するKubernetes APIを補完するものです。
ノートパソコンからkubectlを実行する場合でも、クラスター内のPodから実行する場合でも、APIサーバーにリクエストを送信します。
クライアントライブラリやHeadlampのようなWebダッシュボードなど、他のクライアントも同じAPIを通じて通信します。
kubectlの仕組み
kubectlツールは、kubeconfigファイルで定義されたクラスター、ユーザー、およびコンテキストを使用してAPIサーバーに接続し、認証を行います。
クラスターの外部からkubectlを実行する場合、kubeconfigファイルを使用してAPIサーバーのアドレスと認証情報を見つけます。
kubectlがPod内(例えばCI/CDパイプライン内)で実行される場合、PodにマウントされたServiceAccountトークンに基づくクラスター内認証を使用できます。
コマンドを実行すると、kubectlはその意図をKubernetes APIへの1つ以上のHTTPリクエストに変換します。
APIサーバーは各リクエストを検証し、etcdに保存されたクラスターの状態に適用し、結果を返します。
これは、Deploymentの作成であってもログの読み取りであっても、すべてのkubectlのアクションが同じAPIドリブンなパスを辿ることを意味します。
kubeconfigでは複数のクラスター、ユーザー、コンテキストを定義できるため、環境を再設定することなくkubectlを使用してクラスター間を切り替えることができます。
kubectl config use-contextを実行してアクティブなコンテキストを変更してください。
kubectlでできること
kubectlツールは多くの操作をサポートしており、以下の大まかなカテゴリに分類されます:
- リソースの管理 – Pod、Deployment、Serviceなどのオブジェクトを作成、更新、削除します。
設定ファイルによる宣言的な管理には
kubectl applyを使用します。 - クラスターの状態の検査 – オブジェクトの一覧表示と詳細表示、イベントの確認、リソース使用量のチェックを行います。
- デバッグ – コンテナからのログの確認、実行中のコンテナ内でのコマンドの実行、またはPodへのポートフォワードを行います。
- クラスター操作 – メンテナンスのためにノードをドレインし、新しいワークロードを防ぐためにノードをcordonし、クラスターの設定を管理します。
- スクリプトと自動化 – スクリプトやパイプラインで使用するために、出力をJSON、YAML、またはJSONPathを使用したカスタムカラム形式としてフォーマットします。
構文、コマンドリファレンス、および例については、kubectlリファレンスドキュメントを参照してください。
宣言的管理と命令的管理
本番ワークロードでは、バージョン管理された設定ファイルとともにkubectl applyを使用した宣言的なオブジェクト管理を推奨します。
宣言的管理は、変更の追跡、コラボレーション、GitOpsワークフローとの統合に役立ちます。
命令的なコマンド(kubectl createやkubectl runなど)は開発や実験には便利ですが、再現や監査が困難です。
プラグインによるkubectlの拡張
新しいサブコマンドを追加するプラグインでkubectlを拡張できます。
プラグインは、kubectl-<plugin-name>の命名規則に従うスタンドアロンのバイナリです。
Kubernetesコミュニティは多くのプラグインをメンテナンスしており、Krewプラグインマネージャーで管理できます。
バージョン互換性
kubectlツールは、クラスターのコントロールプレーンに対して前後1マイナーバージョンのバージョンスキューをサポートしています。
例えば、kubectl v1.32はv1.31、v1.32、v1.33のコントロールプレーンで動作します。
互換性のあるバージョンを使用することで、予期しない動作を回避できます。
詳細については、バージョンスキューポリシーを参照してください。
次の項目
- 構文とコマンドの詳細については、kubectlリファレンスを読んでください。
- お使いのマシンにkubectlをインストールしてください。
kubectlが使用するKubernetes APIについて学んでください。- クラスターを構成するKubernetesのコンポーネントを確認してください。
- オブジェクト管理や宣言的設定について調べてください。
- サポートされるバージョンの組み合わせについてバージョンスキューポリシーを確認してください。