Kubernetes Kubernetes

Kubernetes とは何か、そしてそれが解決する問題

コンテナだけではスケールしなくなる理由と、Kubernetes がマシンの集まりを 1 つのプラットフォームに変える方法。

8 min learn.level.初級

Kubernetes(しばしば K8s と略されます)は、多数のマシンにわたって、コンテナ化されたアプリケーションを実行し管理するための、オープンソースのプラットフォームです。Google で作られ、現在は Cloud Native Computing Foundation のプロジェクトです。このガイドでは、それが解決するために存在する問題と、このシリーズの残りが土台とする、いくつかの用語を説明します。

コンテナは簡単な部分

コンテナは、アプリケーションを、それが必要とするライブラリとともにパッケージ化するため、ノート PC、テストサーバー、本番環境で、同じように動作します。コンテナは素早く起動し、置き換えるのが安価で、コピーを増やすことでスケールします。これは、アプリケーションが多くの小さなサービスに分割され、それぞれが独自のコンテナに入るマイクロサービスアーキテクチャによく合います。

オーケストレーションなしでは何が壊れるか

では、それらのコンテナを 1 つの仮想マシン上で自分で実行して、何が起こるかを見てみましょう。

  • ホストがいっぱいになる。 マシンの CPU やメモリに空きがなくなると、新しいコンテナを別の場所で起動し、残りのものと手作業で接続する必要があります。
  • コンテナが死んでも誰も気づかない。 コンテナは設計上、使い捨てです。クラッシュしたものを再起動することは、スクリプトで自動化するか、手作業で行う必要があります。
  • ホスト自体が故障する。 その上のすべてのコンテナが一緒にダウンし、それらを元に戻すものは何もありません。

それぞれについてスクリプトを書くことはできますが、アプリケーションが複数の環境にまたがる数百のコンテナになると、その自家製のツールは、それ自体がプロジェクトになります。

オーケストレーターが提供するもの

Kubernetes は、これらの仕事を引き受けます。

  • 高可用性。 ワークロードの複数のコピーを異なるマシンで実行し、1 つが故障してもユーザーが気づかないようにします。
  • スケーリング。 負荷の変化に応じて、手動または自動で、コピーの数を増減します。
  • 自己修復。 失敗したコンテナを再起動し、故障したマシンのワークロードを、正常なものに再スケジュールします。
  • 復旧可能な状態。 クラスターの設定と状態は、バックアップと復元ができるデータストア(etcd)に保存されます。

構成要素:Pod、ノード、クラスター

3 つの用語が、語彙の大部分をカバーします。

  • Pod は、Kubernetes が実行する最小のものです。ネットワークとストレージを共有する、1 つ以上のコンテナを包みます。ほとんどの Pod は、主となるコンテナを 1 つ持ち、ときどき、横にヘルパーがいます。Kubernetes が管理するのは、むき出しのコンテナではなく、Pod です。
  • ノードは、Pod を実行する、仮想または物理のマシンです。
  • クラスターは、CPU とメモリの 1 つのプールとして管理される、ノードの集合です。一部のノードはクラスターを管理するコントロールプレーンを形成し、残りはアプリケーションを実行するワーカーノードです。次のガイドで、その仕組みを説明します。

宣言的モデル

Kubernetes に、どの手順を踏むかを指示するのではありません。通常は YAML で、望む状態を記述し(「このイメージの 3 つのレプリカを、このポートで公開」)、それをクラスターの API に送ります。Kubernetes 内部のコントローラーが、存在するものと求められたものを継続的に比較し、その差に対して動作します。これが、Deployment が 3 つ存在すべきだと言っているときに、削除した Pod が戻ってくる理由であり、このシリーズの他のすべての基盤です。

Kubernetes があなたの代わりにしないこと

Kubernetes はプラットフォームであり、完全なソリューションではありません。

  • イメージをビルドしたり、コードをテストしたりはしません。それは引き続き CI の仕事です。
  • アプリケーションのデータのバックアップはしません。永続ストレージとバックアップは、あなたの責任です。
  • デフォルトでは Secret を暗号化せず、そのデフォルト設定は、本番向けに強化されていません。
  • 学習曲線が現実的にある大規模なシステムなので、まずローカルクラスターで練習してください。次のガイドで、そうします。

人気のガイド