第4章 コントロールプレーンアーキテクチャー
コントロールプレーン は、コントロールプレーンマシンで構成され、Red Hat OpenShift Service on AWS クラシックアーキテクチャークラスターを管理します。コントロールプレーンマシンは、コンピュートマシン (ワーカーマシンとしても知られる) のワークロードを管理します。クラスター自体は、Cluster Version Operator (CVO) と一連の個別の Operator のアクションによって、マシンへのすべてのアップグレードを管理します。
このコントロールプレーンアーキテクチャーは Red Hat OpenShift Service on AWS ではサポートされていません。
4.1. Red Hat OpenShift Service on AWS クラシックアーキテクチャーにおけるマシンロール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS クラシックアーキテクチャーはホストにさまざまなロールを割り当てます。これらのロールは、クラスター内のマシンの機能を定義します。クラスターには、標準の master
および worker
のロールタイプの定義が含まれます。
4.1.1. クラスターのワーカー リンクのコピーリンクがクリップボードにコピーされました!
Kubernetes のクラスターでは、ワーカーノードは Kubernetes ユーザーによってリクエストされた実際のワークロードを実行し、管理します。ワーカーノードは容量をアドバタイズし、コントロールプレーンサービスであるスケジューラーは Pod とコンテナーを開始するノードを決定します。以下の重要なサービスは、各ワーカーノードで実行されます。
- コンテナーエンジンである CRI-O。
- コンテナーワークロードの実行と停止の要求を受け入れて停止するサービスである kubelet。
- ワーカー全体で Pod の通信を管理するサービスプロキシー。
- コンテナーを作成して実行する、crun または runC low-level コンテナーランタイム。
デフォルトの crun の代わりに runC を有効にする方法は、ContainerRuntimeConfig
CR の作成に関するドキュメントを参照してください。
Red Hat OpenShift Service on AWS クラシックアーキテクチャーでは、コンピューティングマシンセットは、worker
マシンロールが割り当てられたコンピューティングマシンを制御します。worker
のロールを持つマシンは、自動スケーリングを行う特定のマシンプールにより制御されるコンピュートワークロードを実行します。Red Hat OpenShift Service on AWS クラシックアーキテクチャーは複数のマシンタイプをサポートする能力を持っているため、worker
ロールを持つマシンは コンピュート マシンとして分類されます。このリリースでは、コンピュートマシンの唯一のデフォルトタイプはワーカーマシンであるため、このリリースでは ワーカーマシン と コンピュートマシン は相互に置き換え可能な用語として使用されています。Red Hat OpenShift Service on AWS クラシックアーキテクチャーの今後のバージョンでは、インフラストラクチャーマシンなどの異なるタイプのコンピュートマシンがデフォルトで使用される可能性があります。
コンピューティングマシンセットは、machine-api
namespace にあるコンピューティングマシンリソースのグループです。コンピューティングマシンセットは、特定のクラウドプロバイダーで新しいコンピューティングマシンを起動するように設計された設定です。machine config pool (MCP) は Machine Config Operator (MCO) namespace の一部です。MCP は、MCO がそれらの設定を管理し、それらのアップグレードを容易に実行できるようにマシンをまとめるために使用されます。
4.1.2. クラスターコントロールプレーン リンクのコピーリンクがクリップボードにコピーされました!
Kubernetes のクラスターでは、master ノードは Kubernetes クラスターの制御に必要なサービスを実行します。Red Hat OpenShift Service on AWS クラシックアーキテクチャーでは、コントロールプレーンは、master
マシンのロールを持つコントロールプレーンマシンで構成されます。これらには、Red Hat OpenShift Service on AWS クラシックアーキテクチャークラスターを管理するための Kubernetes サービス以上のものが含まれています。
ほとんどの Red Hat OpenShift Service on AWS クラシックアーキテクチャークラスターでは、コントロールプレーンマシンは一連のスタンドアロンマシン API リソースによって定義されます。コントロールプレーンは、コントロールプレーンマシンセットで管理されます。すべてのコントロールプレーンマシンが削除されてクラスターが切断されないようにするために、追加の制御がコントロールプレーンマシンに適用されます。
アベイラビリティゾーンクラスターと複数のアベイラビリティーゾーンクラスターには、少なくとも 3 つのコントロールプレーンノードが必要です。
コントロールプレーン上の Kubernetes カテゴリーに分類されるサービスには、Kubernetes API サーバー、etcd、Kubernetes コントローラーマネージャー、Kubernetes スケジューラーが含まれます。
コンポーネント | 説明 |
---|---|
Kubernetes API サーバー | Kubernetes API サーバーは Pod、サービスおよびレプリケーションコントローラーのデータを検証し、設定します。また、クラスターの共有される状態を確認できる中心的な部分として機能します。 |
etcd | etcd はコントロールプレーンの永続的な状態を保存し、他のコンポーネントは etcd で変更の有無を監視して、それぞれを指定された状態に切り替えます。 |
Kubernetes コントローラーマネージャー | Kubernetes コントローラーマネージャーは etcd でレプリケーション、namespace、サービスアカウントコントローラーのオブジェクトなどのオブジェクトへの変更の有無を監視し、API を使用して指定された状態を実行します。このような複数のプロセスは、一度に 1 つのアクティブなリーダーを設定してクラスターを作成します。 |
Kubernetes スケジューラー | Kubernetes スケジューラーは、割り当て済みのノードなしで新規に作成された Pod の有無を監視し、Pod をホストする最適なノードを選択します。 |
また、コントロールプレーンで実行される OpenShift サービス (OpenShift API サーバー、OpenShift コントローラーマネージャー、OpenShift OAuth API サーバー、および OpenShift OAuth サーバー) もあります。
コンポーネント | 説明 |
---|---|
OpenShift API サーバー | OpenShift API サーバーは、プロジェクト、ルート、テンプレートなどの OpenShift リソースのデータを検証し、設定します。 OpenShift API サーバーは OpenShift API Server Operator により管理されます。 |
OpenShift コントロールマネージャー | OpenShift コントローラーマネージャーは etcd でプロジェクト、ルート、テンプレートコントローラーオブジェクトなどの OpenShift オブジェクトへの変更の有無を監視し、API を使用して指定された状態を適用します。 OpenShift コントローラーマネージャーは OpenShift Controller Manager Operator により管理されます。 |
OpenShift OAuth API サーバー | OpenShift OAuth API サーバーは、ユーザー、グループ、OAuth トークンなどの Red Hat OpenShift Service on AWS クラシックアーキテクチャーに対して認証するようにデータを検証し、設定します。 OpenShift OAuth API サーバーは Cluster Authentication Operator により管理されます。 |
OpenShift OAuth サーバー | ユーザーは OpenShift OAuth サーバーからトークンを要求し、API に対して認証します。 OpenShift OAuth サーバーは Cluster Authentication Operator により管理されます。 |
コントロールプレーンマシン上のこれらサービスの一部は systemd サービスとして実行し、それ以外は静的な Pod として実行されます。
systemd サービスは、起動直後の特定のシステムで常に起動している必要のあるサービスに適しています。コントロールプレーンマシンの場合は、リモートログインを可能にする sshd も含まれます。また、以下のようなサービスも含まれます。
- CRI-O コンテナーエンジン (crio): コンテナーを実行し、管理します。Red Hat OpenShift Service on AWS クラシックアーキテクチャー 4 は、Docker Container Engine ではなく CRI-O を使用します。
- Kubelet (kubelet): マシン上で、コントロールプレーンサービスからのコンテナー管理要求を受け入れます。
CRI-O および Kubelet は、他のコンテナーを実行する前に実行されている必要があるため、systemd サービスとしてホスト上で直接実行される必要があります。
installer-*
および revision-pruner-*
コントロールプレーン Pod は、root ユーザーが所有する /etc/kubernetes
ディレクトリーに書き込むため、root パーミッションで実行する必要があります。これらの Pod は以下の namespace に置かれます。
-
openshift-etcd
-
openshift-kube-apiserver
-
openshift-kube-controller-manager
-
openshift-kube-scheduler