Kubernetes とは?コンテナオーケストレーションを解説
Kubernetes はコンテナオーケストレータです: アプリの望ましい状態を宣言すると、現実がそれに一致するよう継続的に働きかけます。
1 つのコンテナを実行するのは簡単ですが、多数のマシンにまたがって数百を実行し、健全に保ち、スケールさせ、ダウンタイムなしで更新を展開するのは簡単ではありません。Kubernetes(しばしば「K8s」)はそれを自動化します。宣言的な manifest で望むものを記述すると、Kubernetes がそこへ到達し、それを維持する作業を行います。
宣言的な望ましい状態モデル
Kubernetes に一歩ずつどう動くかを指示するのではありません。望ましい状態(「このイメージのレプリカを 3 つ実行せよ」)を宣言すると、controller が実際の状態をそれに向けて継続的に収束させます - クラッシュしたコンテナを再起動し、故障した node を置き換え、設定どおりにスケールします。
control plane と node
control plane(API server、scheduler、controller、etcd)は状態を保存し意思決定を行う頭脳です。worker node は kubelet と実際のコンテナワークロードを実行します。両者が合わさってクラスタを形成します。
中心的なオブジェクト
- Pod - 最小の単位、1 つ以上の co-located なコンテナ。
- Deployment - pod のレプリカと rolling update を管理する。
- Service - pod の集合に対する安定したネットワークエンドポイント。
- ConfigMap と Secret - 設定と機密データ。
なぜチームは採用するのか
自己修復、水平スケーリング、rolling deploy、そしてクラウド間で統一された API。代償は運用の複雑さです - Kubernetes には実際の学習曲線があります。
Kubernetes と CI/CD
pipeline はイメージをビルドし、それから manifest を適用して(多くは kubectl や GitOps 経由で)クラスタへ deploy します。CI はまた、Kubernetes が実行するまさにそのイメージを頻繁にビルドします。マネージド runner はそうしたイメージ build を高速で信頼できるものに保ちます。
重要なポイント
- Kubernetes は望ましい状態へ収束する宣言的なコンテナオーケストレータです。
- クラスタには control plane(頭脳)と worker node(筋肉)があります。
- CI はイメージをビルドし、CD は manifest を適用してそれをクラスタへ展開します。