第3章 カスタマイズによる OpenStack へのクラスターのインストール
OpenShift Container Platform バージョン 4.22 では、Red Hat OpenStack Platform (RHOSP) にカスタマイズしたクラスターをインストールできます。インストールをカスタマイズするには、クラスターをインストールする前に install-config.yaml でパラメーターを変更します。
次の前提条件を満たしていることを確認します。
- OpenShift Container Platform のインストールおよび更新プロセスの詳細を確認した。
- クラスターインストール方法の選択およびそのユーザー向けの準備を確認している。
- OpenShift Container Platform クラスターでサポートされるプラットフォーム セクションを使用して、OpenShift Container Platform 4.22 が RHOSP バージョンと互換性があることを確認した。RHOSP サポートマトリックスの OpenShift Container Platform on RHOSP を参照して、プラットフォームのサポートを異なるバージョン間で比較することもできます。
- ブロックストレージ (Cinder) またはオブジェクトストレージ (Swift) などのストレージサービスが RHOSP にインストールされている。オブジェクトストレージは、OpenShift Container Platform レジストリークラスターデプロイメントに推奨されるストレージ技術です。詳細は、「ストレージの最適化」を参照してください。
- クラスターのスケーリング、コントロールプレーンのサイジング、および etcd のパフォーマンスおよびスケーラビリティーに関する理解がある。詳細は、「クラスターのスケーリングに関する推奨プラクティス」を参照してください。
- RHOSP でメタデータサービスが有効化されている。
カスタマイズを使用して RHOSP にクラスターをインストールした後、次の設定を完了できます。
- クラスターをカスタマイズします。
- リモートヘルスレポートを有効にします。
- ノードポートを使用して Ingress クラスタートラフィックを設定します。
- Floating IP アドレス上でアプリケーショントラフィックを受け入れるように RHOSP を設定していない場合は、Floating IP アドレスを使用して RHOSP アクセスを設定します。
3.1. OpenShift Container Platform を RHOSP にインストールするリソースのガイドライン リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform のインストールをサポートするために、Red Hat OpenStack Platform (RHOSP) クォータは特定の要件を満たす必要があります。
| リソース | 値 |
|---|---|
| Floating IP アドレス | 3 |
| ポート | 15 |
| ルーター | 1 |
| サブネット | 1 |
| RAM | 88 GB |
| vCPU | 22 |
| ボリュームストレージ | 275 GB |
| インスタンス | 7 |
| セキュリティーグループ | 3 |
| セキュリティーグループルール | 60 |
| サーバーグループ | 2 - 各マシンプールの追加のアベイラビリティーゾーンごとに 1 つ追加 |
クラスターは推奨されるリソースよりもリソースが少ない場合にも機能する場合がありますが、その場合のパフォーマンスは保証されません。
RHOSP Object Storage (swift) が利用可能で、swiftoperator ロールを持つユーザーアカウントによって操作されている場合、Swift は OpenShift Container Platform イメージレジストリーのデフォルトバックエンドとして使用されます。この場合、ボリュームストレージ要件は 175 GB です。Swift 領域要件は、イメージレジストリーのサイズによって異なります。
デフォルトで、セキュリティーグループおよびセキュリティーグループルールのクォータは低く設定される可能性があります。問題が生じた場合には、管理者として openstack quota set --secgroups 3 --secgroup-rules 60 <project> を実行して値を増やします。
OpenShift Container Platform デプロイメントは、コントロールプレーンマシン、コンピュートマシン、およびブートストラップマシンで構成されます。
3.1.1. コントロールプレーンマシン リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、OpenShift Container Platform インストールプロセスは 3 つのコントロールプレーンマシンを作成します。
それぞれのマシンには以下が必要です。
- RHOSP クォータからのインスタンス
- RHOSP クォータからのポート
- 少なくとも 16 GB のメモリーと 4 つの vCPU を備えたフレーバー
- RHOSP クォータから少なくとも 100 GB のストレージ容量
3.1.2. コンピュートマシン リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、OpenShift Container Platform インストールプロセスは 3 つのコンピューティングマシンを作成します。
それぞれのマシンには以下が必要です。
- RHOSP クォータからのインスタンス
- RHOSP クォータからのポート
- 少なくとも 8 GB のメモリーと 2 つの vCPU を備えたフレーバー
- RHOSP クォータから少なくとも 100 GB のストレージ容量
コンピュートマシンは、OpenShift Container Platform で実行されるアプリケーションをホストします。できるだけ多くのアプリケーションを実行することが意図されています。
3.1.3. ブートストラップマシン リンクのコピーリンクがクリップボードにコピーされました!
インストール時に、ブートストラップマシンは一時的にプロビジョニングされ、コントロールプレーンを初期化します。実稼働環境用のコントロールプレーンの準備ができた後に、ブートストラップマシンのプロビジョニングは解除されます。
ブートストラップマシンには以下が必要です。
- RHOSP クォータからのインスタンス
- RHOSP クォータからのポート
- 少なくとも 16 GB のメモリーと 4 つの vCPU を備えたフレーバー
- RHOSP クォータから少なくとも 100 GB のストレージ容量
3.1.4. user-provisioned infrastructure の負荷分散要件 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform をインストールする前に、デフォルトの内部ロードバランシングソリューションの代わりに使用する独自の API およびアプリケーション Ingress ロードバランシングインフラストラクチャーをプロビジョニングできます。実稼働のシナリオでは、API およびアプリケーション Ingress ロードバランサーを個別にデプロイし、それぞれのロードバランサーインフラストラクチャーを分離してスケーリングすることができます。
Red Hat Enterprise Linux (RHEL) インスタンスを使用して API およびアプリケーション Ingress ロードバランサーをデプロイする場合は、RHEL サブスクリプションを別途購入する必要があります。
負荷分散インフラストラクチャーは以下の要件を満たす必要があります。
API ロードバランサー: プラットフォームと対話およびプラットフォームを設定するためのユーザー向けの共通のエンドポイントを提供します。以下の条件を設定します。
- Layer 4 の負荷分散のみ。これは、Raw TCP または SSL パススルーモードと呼ばれます。
- ステートレス負荷分散アルゴリズム。オプションは、ロードバランサーの実装によって異なります。
API ロードバランサーのセッションの永続性は設定しないでください。Kubernetes API サーバーのセッション永続性を設定すると、OpenShift Container Platform クラスターとクラスター内で実行される Kubernetes API の過剰なアプリケーショントラフィックによりパフォーマンスの問題が発生する可能性があります。
API ロードバランサーのフロントとバックの両方で以下のポートを設定します。
| ポート | バックエンドマシン (プールメンバー) | 内部 | 外部 | 説明 |
|---|---|---|---|---|
|
|
ブートストラップおよびコントロールプレーン。ブートストラップマシンがクラスターのコントロールプレーンを初期化した後に、ブートストラップマシンをロードバランサーから削除します。API サーバーのヘルスチェックプローブの | X | X | Kubernetes API サーバー |
|
| ブートストラップおよびコントロールプレーン。ブートストラップマシンがクラスターのコントロールプレーンを初期化した後に、ブートストラップマシンをロードバランサーから削除します。 | X | マシン設定サーバー |
ロードバランサーは、API サーバーが /readyz エンドポイントをオフにしてからプールから API サーバーインスタンスを削除するまで最大 30 秒かかるように設定する必要があります。/readyz の後の時間枠内でエラーが返されたり、正常になったりする場合は、エンドポイントが削除または追加されているはずです。5 秒または 10 秒ごとのプロービングで、2 回連続成功すると正常、3 回連続失敗すると異常と判断する設定は、十分にテストされた値です。
Application Ingress ロードバランサー: クラスター外から送られるアプリケーショントラフィックの Ingress ポイントを提供します。Ingress ルーターの作業用の設定が OpenShift Container Platform クラスターに必要です。以下の条件を設定します。
- Layer 4 の負荷分散のみ。これは、Raw TCP または SSL パススルーモードと呼ばれます。
- 選択可能なオプションやプラットフォーム上でホストされるアプリケーションの種類に基づいて、接続ベースの永続化またはセッションベースの永続化が推奨されます。
クライアントの実際の IP アドレスがアプリケーション Ingress ロードバランサーによって確認できる場合、ソースの IP ベースのセッション永続化を有効にすると、エンドツーエンドの TLS 暗号化を使用するアプリケーションのパフォーマンスを強化できます。
ロードバランサーのフロントとバックの両方で以下のポートを設定します。
| ポート | バックエンドマシン (プールメンバー) | 内部 | 外部 | 説明 |
|---|---|---|---|---|
|
| デフォルトで Ingress コントローラー Pod、コンピュート、またはワーカーを実行するマシン。 | X | X | HTTPS トラフィック |
|
| デフォルトで Ingress コントローラー Pod、コンピュート、またはワーカーを実行するマシン。 | X | X | HTTP トラフィック |
ゼロ (0) コンピュートノードで 3 ノードクラスターをデプロイする場合、Ingress コントローラー Pod はコントロールプレーンノードで実行されます。3 ノードクラスターデプロイメントでは、HTTP および HTTPS トラフィックをコントロールプレーンノードにルーティングするようにアプリケーション Ingress ロードバランサーを設定する必要があります。
3.1.4.1. ユーザー管理のロードバランサーを使用してデプロイされたクラスターのロードバランサー設定の例 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、ユーザー管理のロードバランサーを使用してデプロイされたクラスターのロードバランシング要件を満たす API およびアプリケーションの Ingress load balancer 設定の例を示します。この例は、HAProxy ロードバランサーの /etc/haproxy/haproxy.cfg 設定です。この例では、特定の負荷分散ソリューションを選択するためのアドバイスを提供することを目的としていません。
HAProxy をロードバランサーとして使用する場合は、HAProxy ノードで netstat -nltupe を実行して、ポート 6443、22623、443、および 80 で haproxy プロセスがリッスンしていることを確認することができます。
この例では、同じロードバランサーが Kubernetes API およびアプリケーションの Ingress トラフィックに使用されます。実稼働のシナリオでは、API およびアプリケーション Ingress ロードバランサーを個別にデプロイし、それぞれのロードバランサーインフラストラクチャーを分離してスケーリングすることができます。
HAProxy をロードバランサーとして使用し、SELinux が enforcing に設定されている場合は、setsebool -P haproxy_connect_any=1 を実行して、HAProxy サービスが設定済みの TCP ポートにバインドできることを確認する必要があります。
API およびアプリケーション Ingress ロードバランサーの設定例
global
log 127.0.0.1 local2
pidfile /var/run/haproxy.pid
maxconn 4000
daemon
defaults
mode http
log global
option dontlognull
option http-server-close
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
listen api-server-6443
bind *:6443
mode tcp
option httpchk GET /readyz HTTP/1.0
option log-health-checks
balance roundrobin
server bootstrap bootstrap.ocp4.example.com:6443 verify none check check-ssl inter 10s fall 2 rise 3 backup
server master0 master0.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3
server master1 master1.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3
server master2 master2.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3
listen machine-config-server-22623
bind *:22623
mode tcp
server bootstrap bootstrap.ocp4.example.com:22623 check inter 1s backup
server master0 master0.ocp4.example.com:22623 check inter 1s
server master1 master1.ocp4.example.com:22623 check inter 1s
server master2 master2.ocp4.example.com:22623 check inter 1s
listen ingress-router-443
bind *:443
mode tcp
balance source
server compute0 compute0.ocp4.example.com:443 check inter 1s
server compute1 compute1.ocp4.example.com:443 check inter 1s
listen ingress-router-80
bind *:80
mode tcp
balance source
server compute0 compute0.ocp4.example.com:80 check inter 1s
server compute1 compute1.ocp4.example.com:80 check inter 1s
各項目の説明:
listen api-server-6443-
ポート
6443は Kubernetes API トラフィックを処理し、コントロールプレーンマシンを参照します。トラフィックをルーティングする前に、API サーバーが利用可能であることを確認するために、このポートでヘルスチェックを設定する必要があります。 server bootstrap bootstrap.ocp4.example.com- ブートストラップエントリーは、OpenShift Container Platform クラスターのインストール前に有効にし、ブートストラッププロセスの完了後にそれらを削除する必要があります。
listen machine-config-server-
ポート
22623はマシン設定サーバートラフィックを処理し、コントロールプレーンマシンを参照します。 listen ingress-router-443-
ポート
443は HTTPS トラフィックを処理し、Ingress コントローラー Pod を実行するマシンを参照します。Ingress コントローラー Pod はデフォルトでコンピュートマシンで実行されます。 listen ingress-router-80ポート
80は HTTP トラフィックを処理し、Ingress コントローラー Pod を実行するマシンを参照します。Ingress コントローラー Pod はデフォルトでコンピュートマシンで実行されます。注記コンピュートノードをゼロにしたコンパクトな 3 ノードクラスターをデプロイする場合、Ingress コントローラー Pod はコントロールプレーンノード上で実行されます。3 ノードクラスターデプロイメントでは、HTTP および HTTPS トラフィックをコントロールプレーンノードにルーティングするようにアプリケーション Ingress ロードバランサーを設定する必要があります。