本文へスキップ
BecomeCoder

Kubernetesコース · 第1章 コンテナからKubernetesへ ― 全体像をつかむ · レッスン4

コントロールプレーンの部品 ― API Server・etcd・Scheduler・Controller Manager

ローカル実施

導入

頭脳であるコントロールプレーンは、ひとつの塊ではなく、役割の違う小さな部品が協力して動いています。主要な4つ――API Server・etcd・Scheduler・Controller Manager――を1つずつ見ていきましょう。

説明

コントロールプレーンの中心的な部品は次のとおりです。

  • API Server(エーピーアイ・サーバー)クラスタへの唯一の入口。kubectl も他の部品も、すべてここを通してやり取りします。受付窓口であり交換台です。
  • etcd(エトセディー) … クラスタの全状態を保存する台帳。KVS(キー・バリュー・ストア。「鍵→値」で保存するデータベース)で、「あるべき状態」も「現実の状態」もすべてここに記録されます。ここが失われるとクラスタの記憶が消えるため、最重要データです。
  • Scheduler(スケジューラ) … 新しい Pod をどのワーカーノードに載せるかを決める配置係。各ノードの空き(CPUメモリ)を見て最適な置き場所を選びます。
  • Controller Manager(コントローラ・マネージャ) … 各種のリコンサイルループを回す担当。「あるべき数と現実の数がずれていないか」を絶えず見張り、ずれていれば API Server に「増やして/減らして」と依頼します。

利用者が kubectl apply(後述)で何かを宣言すると、情報は次のように流れます。

sequenceDiagram
    participant U as あなた(kubectl)
    participant API as API Server(入口)
    participant E as etcd(台帳)
    participant S as Scheduler(配置係)
    U->>API: 「Podを1個動かして」と宣言
    API->>E: あるべき状態を保存
    API-->>U: 受け付けました
    S->>API: 未配置のPodはある?
    API->>E: 問い合わせ
    E-->>API: 未配置のPodが1個あります
    API-->>S: これです
    S->>API: 「ノード2に載せる」と決定
    API->>E: 配置先を記録

ポイントは、どの部品も直接おしゃべりせず、必ず API Server と etcd を介すること。入口を1つに絞り、状態を1か所(etcd)に集めることで、大きなシステムでも整合性が保たれます。