Kubernetes
技術

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 のマニフェストを適用して、最初のワークロードを実行します。以降のガイドでは、その基礎の上に、実際のアプリケーションを実行するための一般的なパターンを積み上げていきます。