3.1 Kubernetesとは
Kubernetesは、コンテナ化されたワークロードやサービスを管理するためのポータブルで拡張可能なオープンソース・プラットフォームであり、宣言的な構成と自動化の両方を容易にします。
Kubernetesは、CRI-OやDockerなどのコンテナ・プラットフォームの上位に位置しています。Kubernetesは、コンテナ・イメージをホストのクラスタにデプロイできるようにするメカニズムを提供します。Kubernetesを使用してコンテナをデプロイすると、Kubernetesはそのコンテナをワーカー・ノードの1つにデプロイします。配置メカニズムは、ユーザーに対して透過的です。
Kubernetesは次を提供します:
- サービス検出とロード・バランシング: Kubernetesは、DNS名または独自のIPアドレスを使用してコンテナを公開できます。コンテナへのトラフィックが大きい場合、Kubernetesは、デプロイメントの安定を維持するため、負荷を調整してネットワーク・トラフィックを分散します。
- ストレージ・オーケストレーション: Kubernetesでは、選択したストレージ・システム(ローカル・ストレージ、NASストレージ、パブリック・クラウド・プロバイダなど)を自動的にマウントできます。
- 自動化されたロールアウトとロールバック: Kubernetesを使用してデプロイ済のコンテナの目的の状態を記述し、制御された速度で実際の状態を目的の状態に変更できます。たとえば、Kubernetesを自動化してデプロイメント用に新しいコンテナを作成し、既存のコンテナを削除して、すべてのリソースを新しいコンテナに導入できます。
- 自動ビン・パッキング: コンテナ化タスクの実行に使用できるノードのクラスタをKubernetesに提供し、各コンテナに必要なCPUおよびメモリー(RAM)を指定すると、Kubernetesはコンテナをノードに適合させ、使用可能なリソースを最大限に活用できます。
- 自己修復: Kubernetesは、失敗したコンテナを再起動し、コンテナを置換し、ユーザー定義のヘルス・チェックに応答しないコンテナを強制終了します。サービスを提供する準備ができるまで、それらをクライアントに通知しません。
- シークレットおよび構成管理: Kubernetesでは、パスワード、OAuthトークン、SSHキーなどの機密情報を格納および管理できます。コンテナ・イメージを再構築せず、スタック構成でシークレットを公開することなく、シークレットおよびアプリケーション構成をデプロイして更新できます。
Kubernetesをデプロイする場合、異なるワークロードを個別のKubernetesクラスタに保持するという従来の推奨事項を使用することを強くお薦めします。たとえば、開発ワークロードと本番ワークロードを同じKubernetesクラスタに混在させることはお薦めしません。