技術
Kubernetes
コンテナオーケストレーションプラットフォーム
Kubernetes は、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するためのオープンソースのシステムです。コンテナを論理的な単位にグループ化して、管理と検出を容易にし、クラスターの実際の状態を、宣言した状態に一致させ続けるよう、継続的に動作します。
仕組み
Kubernetes クラスターは、コントロールプレーン(API サーバー、スケジューラー、コントローラーマネージャー、etcd)と、コンテナランタイムと kubelet エージェントを実行するワーカーノードで構成されます。望ましい状態、つまり Pod のレプリカをいくつ実行するか、どのリソースが必要か、どのように公開するかを、API 内のオブジェクトとして記述し、Kubernetes のコントローラーが、クラスターをその状態に向けて継続的に調整します。
主要な概念
- Pod — デプロイ可能な最小の単位で、ネットワークとストレージを共有する 1 つ以上のコンテナです。
- Deployment — レプリカ Pod の集合を管理し、ローリングアップデートとロールバックを処理します。
- Service — Pod の集合にトラフィックをロードバランスする、安定したネットワークエンドポイントです。
- Namespace — クラスターを、分離された論理的な環境に分割する方法です。
- Controller(コントローラー) — クラスターの状態を監視し、望ましい状態に向けて動かす制御ループです。
チームが Kubernetes を採用する理由
- ポータブル。 同じマニフェストが、ノート PC から大規模なマルチリージョンのデプロイまで、あらゆる準拠クラスターで動作します。
- 自己修復。 失敗したコンテナは再起動され、不健全なノードはドレインされ、ワークロードは自動的に再スケジュールされます。
- 拡張可能。 Custom Resource Definition とコントローラーにより、独自のドメイン固有のリソースを管理するように API を拡張できます。
- エコシステム。 サービスメッシュ、可観測性ツール、GitOps コントローラーなど、ほぼすべての CNCF プロジェクトが、Kubernetes 上で動作し、それを拡張するように作られています。
はじめに
kubectl をインストールし、クラスターへのアクセスを取得し、Deployment と Service のマニフェストを適用して、最初のワークロードを実行します。以降のガイドでは、その基礎の上に、実際のアプリケーションを実行するための一般的なパターンを積み上げていきます。