kubectlツールは、Kubernetes APIを通じてクラスターと通信します。
設定については、kubectlは$HOME/.kubeディレクトリ内のconfigという名前のファイルを探します。
KUBECONFIG環境変数を設定するか、--kubeconfigフラグを設定することで、他のkubeconfigファイルを指定できます。
kubectlツールは、Kubernetesオブジェクトの作成、検査、更新、削除を行うための主要なインターフェースです。
クラスター内部で実行されるKubernetesコンポーネントと、それらのコンポーネントが実装するKubernetes APIを補完するものです。
ノートパソコンからkubectlを実行する場合でも、クラスター内のPodから実行する場合でも、APIサーバーにリクエストを送信します。
クライアントライブラリやHeadlampのようなWebダッシュボードなど、他のクライアントも同じAPIを通じて通信します。
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 applyを使用します。構文、コマンドリファレンス、および例については、kubectlリファレンスドキュメントを参照してください。
本番ワークロードでは、バージョン管理された設定ファイルとともにkubectl applyを使用した宣言的なオブジェクト管理を推奨します。
宣言的管理は、変更の追跡、コラボレーション、GitOpsワークフローとの統合に役立ちます。
命令的なコマンド(kubectl createやkubectl runなど)は開発や実験には便利ですが、再現や監査が困難です。
新しいサブコマンドを追加するプラグインでkubectlを拡張できます。
プラグインは、kubectl-<plugin-name>の命名規則に従うスタンドアロンのバイナリです。
Kubernetesコミュニティは多くのプラグインをメンテナンスしており、Krewプラグインマネージャーで管理できます。
kubectlツールは、クラスターのコントロールプレーンに対して前後1マイナーバージョンのバージョンスキューをサポートしています。
例えば、kubectl v1.32はv1.31、v1.32、v1.33のコントロールプレーンで動作します。
互換性のあるバージョンを使用することで、予期しない動作を回避できます。
詳細については、バージョンスキューポリシーを参照してください。
kubectlが使用するKubernetes APIについて学んでください。