第2章:コントロールプレーン設計

Control Plane はクラスタの制御系であり、API の可用性・整合性・運用性を左右します。本章では、HA 構成と運用観点を整理します。

学習目標

  • Control Plane の主要コンポーネントと障害モードを説明できる
  • マネージド/自前運用で設計責任がどこにあるかを整理できる
  • 監視/ログ/復旧の観点で Control Plane を運用設計できる

扱う範囲 / 扱わない範囲

扱う範囲

  • API Server/Controller/Scheduler/etcd の役割
  • HA の基本パターン(マルチ Control Plane、etcd トポロジ)
  • API まわりの運用(認証、監査、レイテンシ、証明書)
  • マネージドと自前運用の差分(責任範囲)

扱わない範囲

  • 特定プロバイダの構築手順
  • KMS/外部 IdP 等の詳細な製品設定

定義(この章の用語)

  • Control Plane(コントロールプレーン): Kubernetes の制御系(API Server / Controller / Scheduler / etcd 等)
  • HA(High Availability): 単一障害点を排除し、障害時もサービスを継続できる状態

背景(なぜ重要か)

  • Control Plane は「クラスタを操作できるか」を左右します。障害時は復旧作業そのものが阻害されます。
  • マネージド/自前運用で責任範囲が異なります。責任分界が曖昧だと監視/復旧の抜け漏れが発生します。

手順/例:設計の進め方(型)

  1. API の SLO(可用性/レイテンシ)を定義する(後述: 「Control Plane の可用性をどう定義するか」)
  2. 責任範囲(マネージド/自前運用)を整理し、運用対象を棚卸しする
  3. HA パターンを選択し、復旧手段(バックアップ/リストア、代替策)まで含めて設計する(後述: 「HA パターン(概略)」)
  4. 監視/ログ/復旧を運用物(Runbook、チェックリスト、演習計画)として整備する(第3章第9章付録A

Control Plane の可用性をどう定義するか

設計の起点は「API の SLO」です。

  • 可用性: kubectl が使える/使えないだけでなく、API エラー率を定義する
  • レイテンシ: 運用上許容できる API 応答時間(P95/P99 等)を定義する
  • メンテナンスウィンドウ: 変更ができない時間帯の制約を明文化する

HA パターン(概略)

マネージド Kubernetes

  • Control Plane の HA はプロバイダが提供することが多いです。
  • 利用者側は「アップグレードポリシー」「メンテナンスイベント」「監査ログ」「API 監視」等の運用を設計します。

自前運用(kubeadm 等)

  • 複数 Control Plane ノード + ロードバランサを基本とします。
  • etcd は stacked / external の選択が必要です。
  • 証明書更新、バックアップ、復旧手順が必須です。

注意点(運用)

  • kubectl get --raw='/readyz?verbose' 等の参照は、環境により権限や到達性の制約があります(要確認)。
  • etcd のバックアップがあっても、リストア手順と演習がない場合は復旧できません(第3章)。
  • 重大障害時は「変更凍結」「読み取り専用運用」等の暫定方針を先に決め、拙速な操作で影響を拡大させないようにします。

実務チェック観点(最低5項目)

  • API SLO(可用性/レイテンシ)と監視指標が定義されている
  • etcd のバックアップ/リストア手順があり、演習されている
  • 監査ログ(audit)/認証ログの保持とアクセス権が定義されている
  • Control Plane のアップグレード/メンテナンスに伴う影響評価手順がある
  • 重大障害時の暫定復旧(変更凍結、読み取り専用運用等)の方針がある

よくある落とし穴

  • API の可用性を曖昧にし、監視と復旧設計が不足する
  • etcd のバックアップはあるが、リストア演習がなく実効性がない

まとめ / 次に読む