Kubernetes クラスターとは何ですか?
Kubernetes (K8s) クラスターは、コンテナー化されたアプリケーションを実行するコンピューティングノードまたはワーカーマシンのグループです。コンテナ化は、アプリケーションのコードを、あらゆるインフラストラクチャで実行するために必要なすべてのファイルとライブラリにバンドルするソフトウェアのデプロイおよびランタイムプロセスです。Kubernetes は、コンテナを大規模に管理、調整、スケジュールできるオープンソースのコンテナオーケストレーションソフトウェアです。Kubernetes はコンテナをポッドに配置し、ノード上で実行します。Kubernetes クラスターには、少なくとも、コンテナポッドを実行するマスターノードと、クラスタを管理するコントロールプレーンがあります。Kubernetes を展開すると、基本的に Kubernetes クラスターを実行していることになります。
Kubernetes の基礎性 とは何ですか?
Kubernetes クラスターを理解するには、まず Kubernetes によるコンテナー化の基礎を理解する必要です。
コンテナは、依存関係を含めてパッケージ化された単一のアプリケーションまたはマイクロサービスであり、自己完結型の環境とアプリケーションを1つにまとめて実行できます。 最新のアプリケーションでは、すべてのアプリケーションに数百または数千もの個別のソフトウェアコンポーネントが含まれ、独立して実行される分散型マイクロサービスアーキテクチャが採用されています。すべてのコンポーネント (またはマイクロサービス) は単一の独立した機能を実行して、コードのモジュール性を高めます。サービスごとに独立したコンテナを作成することで、アプリケーションを複数のマシンにデプロイして分散できます。個々のマイクロサービスワークロードと計算機能をスケールアップまたはスケールダウンして、アプリケーションの効率を最大化できます。
Kubernetes は、大規模なコンテナ管理を簡素化するオープンソースのコンテナオーケストレーションソフトウェアです。コンテナのスケジュール設定、実行、起動、シャットダウン、および管理機能を自動化できます。開発者は、管理上のオーバーヘッドなしで、大規模なコンテナ化の利点をスケールできます。
次に、Kubernetes のコアコンセプトをいくつか見てみましょう。
ポッド
ポッドは、Kubernetes での標準でデプロイ可能なユニットです。ポッドには1つ以上のコンテナが含まれており、ポッド内のコンテナはストレージやネットワークなどの同じシステム資源を共有します。各ポッドにはユニークな IP アドレスを取得します。
ポッド内のコンテナは隔離されません。ポッドは仮想マシン (VM) に似ており、VM 上で実行されるアプリケーションに似たコンテナーがあると考えてください。ポッドとポッドのグループは、環境の種類に応じて「dev」または「prod」というラベルを付けるなど、属性ラベルを取り付けることで整理できます。
ノード
ノードはポッドを実行するマシンです。これは、Amazon EC2 インスタンスなどの物理サーバーまたは仮想サーバーにすることができます。ノード上の成分には以下が含まれます:
- ノードとコンテナ管理用の Kubelet
- ネットワークプロキシ用の Kube プロキシ
- コンテナランタイム
コンテナを実行するには、互換性のあるコンテナランタイムをノードにインストールする必要があります。Kubernetes は、Kubernetes コンテナランタイムインターフェイスやコンテナなど、複数のコンテナランタイムをサポートしています。
レプリカセットとデプロイ
ポッドはスタンドアロンのアーティファクトであり、ノードがダウンしても自動的に再起動しません。Kubernetes では、1 つまたは複数のポッドがレプリカセットにグループ化されている場合、ノード間で常に実行されるレプリカセットを指定できます。これは、スケールアップとスケールダウンを行い、アプリケーションとサービスの継続性を確保するために重要です。
デプロイは、アプリケーションを展開したり、オフラインにせずにアプリケーションを更新またはロールバックしたりするための Kubernetes 管理オブジェクトです。
サービスとイングレス
Kubernetes サービスを使用して、ポッドまたはポッドのグループをエンドポイント経由でネットワーク上に公開し、標準のネットワーク通信ルールに従った双方向性を実現します。公共のインターネットトラフィックにアクセスするには、Kubernetes イングレスがサービスに接続され、それが1つまたは複数のポッドにリンクされます。
Kubernetes クラスターの成分とは何ですか?
Kubernetes クラスターは、ポッドが実行されている 1 つ以上のノードのグループです。クラスター内では、Kubernetes コントロールプレーンがノードとポッドを管理します。
コントロールプレーンの成分には以下が含まれます:
- クラスター内およびクラスターへの通信を管理する Kubernetes API サーバー (kube-apiserver)
- クラスターの永続状態を記録するストレージ (etcd)
ノードとそれに続くポッドの Kubernetes 資源を管理するためのスケジューラー (kube-scheduler)
その他の成分には、ノードとジョブを制御するためのコントローラーマネージャー (kube-controller-manager) や、提供者の固有の公開クラウドインフラストラクチャーと統合するためのクラウドコントローラーマネージャー (cloud-controller-manager) が含まれます。
コンテナには永続的なストレージがないため、アプリケーションは永続的なデータを保存する必要があります。ポッドは共有データへのアクセスを必要とする場合もあります。永続ボリュームは、ノードと同様にクラスター内で参照されるストレージとしてクラスターに追加できます。
開発者はどのように Kubernetes クラスターを操作しますか?
開発者はまず、マスターノードとそのワーカーノードに Kubernetes をダウンロードしてインストールする必要があります。その後、クラスターを物理マシンまたは仮想マシン、ローカル、データセンター、またはクラウドに展開できます。
インストール
Linux 仮想マシンを簡単に開始するには、選択したマスターノード (仮想マシン) に最初に以下をインストールします:
- Docker またはその他のコンテナ化ソフトウェア。
- Kubernetes のリポジトリキーとコードリポジトリ。
- クラスターブートストラップ用の kubeadm をパッケージ化します。
- ノード調整用の kubelet をパッケージ化します。
- クラスターコマンドライン用の kubectl をパッケージ化します。
指定された他の各ワーカーノードでこのプロセスを実行します。
クラスターの初期化
クラスターを初期化するには、マスターノードで kubeadm init コマンドを実行します。クラスターが動作する準備が整う前に、kube 構成ファイルを追加し、通常は YAML ファイルを使用してポッドネットワークを展開しなければならないです。kubeadm init コマンドは参加コマンドを出力します。このコマンドは、他の仮想マシンのワーカーノードのコマンドラインにコピーして貼り付けることができます。これにより、各ワーカーノードはクラスターに参加できます。
Kubernetes での作業
Kubernetes UI ダッシュボードを使用すると、展開者はクラスターにアプリケーションを作成して展開できます。Kubernetes UI ダッシュボード の場合は、マスタマシンで kubectl proxy コマンドを実行します。その後、UI は http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ で利用できるようになります。
Kubernetes のクラスター管理とは何ですか?
Kubernetes クラスター管理とは、複数の Kubernetes クラスターを大規模に管理するための用語です。一例として、開発環境を考えてみましょう。チームには、分散された複数のオンサイトおよびクラウドベースの物理マシンと仮想マシンでそれぞれ実行されるテスト、開発、および実稼働クラスターを必要とする場合があります。
複数の異なるタイプのクラスターをまとめて管理するには、作成と破棄、その場での更新、メンテナンス、再構成、セキュリティ、クラスターデータレポートなどのクラスター操作を実行できる必要があります。マルチクラスター管理は、Kubernetes サービス、専用ツール、構成、およびベスト実践を組み合わせることで実現できます。
AWS はお客様の Kubernetes クラスター要件にどのように役立ちますか?
AWS は、Kubernetes クラスターを設定、実行、管理するためのクラウドサービスを提供しています:
- Amazon Elastic Compute Cloud (EC2) は、選択したインスタンスタイプで Kubernetes を支給して実行するのに役立ちます。
- Amazon Elastic Kubernetes Service (EKS) は、コントロールプレーンや etcd を使用してマスターインスタンスを支給したり管理したりすることなく、Kubernetes の起動、実行、スケールを支援します。EKS には、クラスター管理ツールと、AWS ネットワークおよびセキュリティサービスとの便利な統合が付属しています。
今すぐ無料のアカウントを作成して、AWS で Kubernetes クラスターを使い始めましょう。