Kubernetes は、コンテナ化されたアプリケーションのデプロイ、スケール、運用管理を自動化するためのオープンソースのコンテナオーケストレーション基盤です。
K8s と略されることもあります。
まず押さえたいポイント
- 複数のコンテナを複数のサーバー上で管理するための基盤
- Pod、Deployment、Service、Ingress、ConfigMap、Secretなどの概念を使う
- 落ちたコンテナの再作成、ローリング更新、スケールなどを扱いやすくする
- 強力だが、学習コストと運用範囲も大きい
- 小規模サービスでは、Docker Compose、App Runner、ECS/Fargate、PaaSの方が合うこともある
どんな場面で使うか
Kubernetesは、Webアプリ、API、ワーカー、バッチなど複数のコンテナを同じ基盤で管理したいときに使われます。
複数チームが同じクラスタ上でサービスを運用したい場合や、開発・ステージング・本番の構成を宣言的に管理したい場合にも候補になります。
クラウドでは、Amazon EKS、Google Kubernetes Engine、Azure Kubernetes ServiceのようなマネージドKubernetesが提供されています。
これらはコントロールプレーンの管理を減らしてくれますが、アプリのマニフェスト、ログ、監視、権限、ネットワーク、データ永続化の設計は残ります。
Docker ComposeやECSとの違い
Docker Compose は、主に単一マシン上で複数コンテナをまとめて定義・起動しやすくする道具です。
小規模な検証環境や単一サーバー運用ではかなり便利ですが、複数ノードにまたがるスケジューリングや高度な自己修復はKubernetesの領域です。
Amazon ECS は、AWS上でコンテナを運用するためのサービスです。
AWSに寄せてよいならECS + Fargate の方が、Kubernetesより扱いやすい場面もあります。
よくある誤解
Kubernetesを使えば本番運用が自動で楽になる、というわけではありません。
クラスタ、ノード、Ingress、証明書、Secret、監視、ログ、アップグレード、権限設計など、見る範囲はむしろ増えます。
また、コンテナを使うなら必ずKubernetesが必要というわけでもありません。
Webアプリが1つだけ、担当者が少ない、停止許容がある、まだ事業検証中という段階なら、よりシンプルな構成から始める方が安全なことが多いです。
実務で見るポイント
Kubernetesを検討するときは、サービス数、チーム数、可用性要件、デプロイ頻度、スケール要件、運用できる人がいるかを確認します。
特に小規模サービスでは、Kubernetesの導入自体より、バックアップ、ログ、監視、デプロイ手順、ロールバック手順を先に整えた方が効果が出やすいです。
初心者はまず、「Kubernetesはコンテナを本番で多数運用するための強力な基盤。ただし、小さなアプリ1つには重いことがある」と覚えると判断しやすくなります。