
まれ中級DevOps
Kubernetes アーキテクチャの主なコンポーネントは何ですか?またそれぞれの役割は何ですか?
要点
Kubernetes クラスターは、グローバルな意思決定を行うコントロール プレーンに分割され、
ワークロードを実行するワーカー ノード。コントロールプレーン: kube-apiserver、etcd、
kube-scheduler、kube-controller-manager、およびオプションの Cloud-controller-manager。
ノード: kubelet、kube-proxy、コンテナー ランタイム。
Kubernetes クラスターは、コントロール プレーン と、ポッドでコンテナ化されたアプリケーションを実行する ノードと呼ばれる一連のワーカー マシンで構成されます。すべてのクラスターには、ポッドを実行するために少なくとも 1 つのワーカー ノードが必要です。
概念的には、Kubernetes は 宣言的です。つまり、望ましい状態を API サーバー (etcd に保存されている) に送信すると、コントローラーが継続的な調整ループを実行して差異を監視し、実際の状態を望ましい状態に近づけるように動作します。
コントロールプレーンコンポーネント
コントロール プレーンは、クラスターに関するグローバルな決定 (スケジューリングなど) を行い、クラスター イベントに応答します。実稼働環境では通常、高可用性を実現するために複数のマシンで実行されます。
- kube-apiserver — Kubernetes HTTP API を公開するコア コンポーネント。これはコントロール プレーンの フロント エンドであり、単一の連絡先です。すべての認証、認可、リクエストの検証、およびクラスター状態の読み取り/書き込みがここを通過します。水平方向に拡大縮小します。通常のデプロイメントでは、etcd でクラスター状態を直接読み書きする唯一の Kubernetes コンポーネントです。他のすべてのコンポーネントは API サーバーを通じて状態と対話します。
- etcd — すべてのクラスター データ (構成、状態、メタデータ) の Kubernetes のバッキング ストアとして使用される、一貫性と可用性の高いキーと値のストア。 etcd は必須であり、信頼できる唯一の情報源です。これを失うことは、すべてのクラスター状態を失うことを意味するため、クォーラム (奇数のメンバー) で実行し、定期的にバックアップする必要があります。
- kube-scheduler — まだノードにバインドされていない Pod を監視し、リソース、制約、ポリシーを考慮して各 Pod を適切なノードに割り当てます。
- kube-controller-manager — Kubernetes API の動作を実装するコントローラー (ノード コントローラー、ジョブ コントローラー、EndpointSlice コントローラーなど) を実行します。各コントローラーは望ましい状態を監視し、実際の状態をそれに向けて調整します。
- cloud-controller-manager (オプション) - 基盤となるクラウド プロバイダーと統合し、クラウド固有のロジックをコア Kubernetes コンポーネントから分離します。
ノードのコンポーネント
これらはすべてのノードで実行され、ポッドの実行を維持し、ランタイム環境を提供します。
- kubelet — ポッドがコンテナを含めて実行されていることを確認するエージェント。 API サーバーでポッドの割り当てを監視し、ランタイム経由でコンテナを開始し、ボリュームをマウントし、liveness/readiness プローブを実行し、ノードのステータスを報告します。
- kube-proxy — ノード上で iptables または IPVS ルールをプログラミングすることでサービス ネットワーキングを実装し、サービスへのトラフィックが正しいポッド IP に転送されるようにします。一部の CNI プラグイン (eBPF モードの Cilium など) がそのジョブを引き継ぐため、オプションとしてマークされていますが、標準クラスターでは必須です。
- コンテナ ランタイム — コンテナ (CRI インターフェイスを介した containerd、CRI-O など) の実行を担当するソフトウェア。
アドオン
アドオンはクラスター機能を拡張します: クラスター DNS (デフォルトでは CoreDNS)、ダッシュボード Web UI、コンテナー リソースの監視、およびクラスター レベルのログ。
共通のフォローアップ: すべての通信は API サーバーを介して流れます。スケジューラー、コントローラー、kubelet は単に監視して反応するだけです。これにより、API サーバーがクラスターの重要なハブになります。
