第1章:Kubernetesの全体像

Kubernetes は「望ましい状態(Desired State)」を宣言し、コントローラが現在の状態を収束させることで、アプリケーションの配置・更新・回復を自動化します。

学習目標

  • Kubernetes の宣言的管理とコントロールループを説明できる
  • 主要リソース(Pod/Deployment/Service/Ingress)の役割分担を整理できる
  • kubectl でリソースを観測し、仕様を調べる基本操作ができる

扱う範囲 / 扱わない範囲

扱う範囲

  • 宣言的管理と収束(reconcile)の考え方
  • Control Plane / Node の主要コンポーネントの役割
  • 本書で扱う主要リソースの俯瞰
  • kubectl による API の探索(api-resources / explain)

扱わない範囲

  • クラスタの HA 設計、スケーリング、監視設計(運用編で扱う)
  • CRD/Operator の設計

Kubernetes が解決すること / しないこと

解決すること(代表例)

  • アプリの配置(スケジューリング)
  • 望ましいレプリカ数の維持(自己修復)
  • ロールアウトとロールバック(Deployment)
  • サービスディスカバリ(Service / DNS)

しないこと(代表例)

  • アプリのバグ修正
  • リリース判断の自動化(設計しない限りは提供されない)
  • アプリ固有の監視要件の定義(SLO/SLI は利用者側の責務)

宣言的管理とコントロールループ

  • 利用者はマニフェストで「あるべき状態」を宣言します。
  • Kubernetes は現在状態との差分を検知し、あるべき状態に近づけます(reconcile)。
  • 収束を担うのがコントローラ(Deployment Controller 等)です。

この仕組みにより、ノード障害や Pod の異常終了が起きても、望ましい状態へ戻す動きが基本線になります。

コンポーネントの俯瞰

Control Plane(制御系)

  • kube-apiserver: API の入口(状態を宣言/取得する)
  • etcd: クラスタ状態の永続化
  • kube-scheduler: Pod の配置先決定
  • kube-controller-manager: 各種コントローラの実行

Node(実行系)

  • kubelet: ノード上で Pod を実行状態へ持ち上げる
  • container runtime(例: containerd): コンテナの実行
  • kube-proxy: Service の到達性を実現(実装は環境で異なる)

主要リソース(本書で扱う範囲)

  • Pod: コンテナ実行の最小単位
  • Deployment: Pod のレプリカ維持とロールアウト
  • Service: Pod 群への安定した到達点(仮想IP/DNS)
  • Ingress: HTTP(S) ルーティング(Ingress Controller が必要)
  • ConfigMap/Secret: 設定の外部化
  • PV/PVC/StorageClass: 永続ストレージの抽象化(第9章)

ハンズオン:API を探索する

kubectl api-resources | head
kubectl explain pod
kubectl explain deployment.spec.template.spec.containers

出力例(kubectl api-resources / kubectl explain):

kubectl で API を探索する(例)

よくある落とし穴

  • 「Pod を直接作る」だけで運用し、更新・回復・スケールの仕組みを使わない
  • Ingress を「単体機能」と誤解し、Ingress Controller の存在を見落とす

まとめ / 次に読む