5.6. OpenStack 上の Hosted Control Plane の管理
Red Hat OpenStack Platform (RHOSP) エージェントマシンに Hosted Control Plane をデプロイした後、次のタスクを実行してホステッドクラスターを管理できます。
5.6.1. ホステッドクラスターへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
oc
CLI を使用してリソースから kubeconfig シークレットを直接抽出することにより、Red Hat OpenStack Platform (RHOSP) 上のホステッドクラスターにアクセスできます。
ホステッドクラスター (ホスティング) のリソースとアクセスシークレットは、ホステッドクラスターの namespace に格納されます。Hosted Control Plane は、Hosted Control Plane の namespace で実行されます。
シークレット名の形式は次のとおりです。
-
kubeconfig
シークレット:<hosted_cluster_namespace>-<name>-admin-kubeconfig
.たとえば、clusters-hypershift-demo-admin-kubeconfig
です。 -
kubeadmin
パスワードシークレット:<hosted_cluster_namespace>-<name>-kubeadmin-password
。たとえば、clusters-hypershift-demo-kubeadmin-password
です。
kubeconfig
シークレットには、Base64 でエンコードされた kubeconfig
フィールドが含まれています。kubeadmin
パスワードシークレットも Base64 でエンコードされています。これを抽出し、そのパスワードを使用して API サーバーまたはホステッドクラスターのコンソールにログインできます。
前提条件
-
oc
CLI がインストールされている。
手順
次のコマンドを入力して、
admin-kubeconfig
シークレットを抽出します。oc extract -n <hosted_cluster_namespace> \ secret/<hosted_cluster_name>-admin-kubeconfig \ --to=./hostedcluster-secrets --confirm
$ oc extract -n <hosted_cluster_namespace> \ secret/<hosted_cluster_name>-admin-kubeconfig \ --to=./hostedcluster-secrets --confirm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
hostedcluster-secrets/kubeconfig
hostedcluster-secrets/kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ホステッドクラスターのノードのリストを表示し、アクセスを検証します。
oc --kubeconfig ./hostedcluster-secrets/kubeconfig get nodes
$ oc --kubeconfig ./hostedcluster-secrets/kubeconfig get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.2. ホステッドクラスターのノード自動スケーリングの有効化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) 上のホステッドクラスターでさらに容量が必要になり、予備のエージェントが利用可能な場合は、自動スケーリングを有効にして新しいワーカーノードをインストールできます。
手順
自動スケーリングを有効にするには、次のコマンドを入力します。
oc -n <hosted_cluster_namespace> patch nodepool <hosted_cluster_name> \ --type=json \ -p '[{"op": "remove", "path": "/spec/replicas"},{"op":"add", "path": "/spec/autoScaling", "value": { "max": 5, "min": 2 }}]'
$ oc -n <hosted_cluster_namespace> patch nodepool <hosted_cluster_name> \ --type=json \ -p '[{"op": "remove", "path": "/spec/replicas"},{"op":"add", "path": "/spec/autoScaling", "value": { "max": 5, "min": 2 }}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいノードを必要とするワークロードを作成します。
次の例を使用して、ワークロード設定を含む YAML ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
ファイルを
workload-config.yaml
という名前で保存します。 以下のコマンドを入力して、YAML を適用します。
oc apply -f workload-config.yaml
$ oc apply -f workload-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを入力して、
admin-kubeconfig
シークレットを抽出します。oc extract -n <hosted_cluster_namespace> \ secret/<hosted_cluster_name>-admin-kubeconfig \ --to=./hostedcluster-secrets --confirm
$ oc extract -n <hosted_cluster_namespace> \ secret/<hosted_cluster_name>-admin-kubeconfig \ --to=./hostedcluster-secrets --confirm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
hostedcluster-secrets/kubeconfig
hostedcluster-secrets/kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、新しいノードが
Ready
ステータスであるかどうかを確認できます。oc --kubeconfig ./hostedcluster-secrets get nodes
$ oc --kubeconfig ./hostedcluster-secrets get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードを削除するには、次のコマンドを入力してワークロードを削除します。
oc --kubeconfig ./hostedcluster-secrets -n <namespace> \ delete deployment <deployment_name>
$ oc --kubeconfig ./hostedcluster-secrets -n <namespace> \ delete deployment <deployment_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 数分間待ちます。その間に、容量の追加が必要にならないようにします。次のコマンドを入力すると、ノードが削除されたことを確認できます。
oc --kubeconfig ./hostedcluster-secrets get nodes
$ oc --kubeconfig ./hostedcluster-secrets get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.3. アベイラビリティーゾーンのノードプールの設定 リンクのコピーリンクがクリップボードにコピーされました!
複数の Red Hat OpenStack Platform (RHOSP) Nova アベイラビリティーゾーンにノードプールを分散させると、ホステッドクラスターの高可用性を向上できます。
アベイラビリティーゾーンは必ずしも障害ドメインに対応するわけではなく、本質的に高可用性の利点を提供するものではありません。
前提条件
- ホステッドクラスターを作成した。
- 管理クラスターにアクセスできる。
-
hcp
およびoc
CLI がインストールされている。
手順
ニーズに合わせて適切な環境変数を設定します。たとえば、
az1
アベイラビリティーゾーンに 2 台の追加マシンを作成する場合は、次のように入力します。export NODEPOOL_NAME="${CLUSTER_NAME}-az1" \ && export WORKER_COUNT="2" \ && export FLAVOR="m1.xlarge" \ && export AZ="az1"
$ export NODEPOOL_NAME="${CLUSTER_NAME}-az1" \ && export WORKER_COUNT="2" \ && export FLAVOR="m1.xlarge" \ && export AZ="az1"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、環境変数を使用してノードプールを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<cluster_name>
- ホステッドクラスターの名前を指定します。
次のコマンドを実行して、クラスターの namespace 内の
nodepool
リソースをリスト表示し、ノードプールのステータスを確認します。oc get nodepools --namespace clusters
$ oc get nodepools --namespace clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE example example 5 5 False False 4.17.0 example-az1 example 2 False False True True Minimum availability requires 2 replicas, current 0 available
NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE example example 5 5 False False 4.17.0 example-az1 example 2 False False True True Minimum availability requires 2 replicas, current 0 available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ホステッドクラスターでノードが起動するのを確認します。
oc --kubeconfig $CLUSTER_NAME-kubeconfig get nodes
$ oc --kubeconfig $CLUSTER_NAME-kubeconfig get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS ROLES AGE VERSION ... example-extra-az-zh9l5 Ready worker 2m6s v1.27.4+18eadca example-extra-az-zr8mj Ready worker 102s v1.27.4+18eadca ...
NAME STATUS ROLES AGE VERSION ... example-extra-az-zh9l5 Ready worker 2m6s v1.27.4+18eadca example-extra-az-zr8mj Ready worker 102s v1.27.4+18eadca ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ノードプールが作成されたことを確認します。
oc get nodepools --namespace clusters
$ oc get nodepools --namespace clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CLUSTER DESIRED CURRENT AVAILABLE PROGRESSING MESSAGE <node_pool_name> <cluster_name> 2 2 2 False All replicas are available
NAME CLUSTER DESIRED CURRENT AVAILABLE PROGRESSING MESSAGE <node_pool_name> <cluster_name> 2 2 2 False All replicas are available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.4. ノードプールの追加ポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
SR-IOV や複数のネットワークなどの高度なネットワーク環境をサポートするために、ノードプールに追加ポートを設定できます。
5.6.4.1. ノードプールの追加ポートの使用例 リンクのコピーリンクがクリップボードにコピーされました!
ノードプールに追加ポートを設定する一般的な理由は次のとおりです。
- SR-IOV (Single Root I/O Virtualization)
- 1 つの物理ネットワークデバイスを、複数の Virtual Function (VF) として見せかけることを可能にします。追加のポートをノードプールに割り当てることで、ワークロードで SR-IOV インターフェイスを使用して、低レイテンシーで高パフォーマンスのネットワークを実現できます。
- DPDK (Data Plane Development Kit)
- カーネルを迂回して、ユーザー空間で高速なパケット処理を提供します。追加ポートが割り当てられたノードプールは、DPDK を使用してネットワークパフォーマンスを向上させるワークロード用に、インターフェイスを公開できます。
- NFS 上の Manila RWX ボリューム
-
NFS 上の
ReadWriteMany
(RWX) ボリュームをサポートし、複数のノードが共有ストレージにアクセスできるようにします。ノードプールに追加ポートを割り当てると、ワークロードが Manila によって使用される NFS ネットワークに到達できるようになります。 - Multus CNI
- Pod が複数のネットワークインターフェイスに接続できるようにします。追加ポートが割り当てられたノードプールは、デュアルスタック接続やトラフィック分離など、セカンダリーネットワークインターフェイスを必要とするユースケースに対応します。
5.6.4.2. ノードプールの追加ポートのオプション リンクのコピーリンクがクリップボードにコピーされました!
--openstack-node-additional-port
フラグを使用して、OpenStack 上のホステッドクラスター内のノードに追加ポートを割り当てることができます。このフラグは、パラメーターのコンマ区切りリストを受け取ります。パラメーターを複数回使用すると、複数の追加ポートをノードに割り当てることができます。
パラメーターは以下のとおりです。
パラメーター | 説明 | 必須 | デフォルト |
---|---|---|---|
| ノードに割り当てるネットワークの ID。 | はい | 該当なし |
|
ポートに使用する VNIC タイプ。指定されていない場合、Neutron によってデフォルトのタイプ | いいえ | 該当なし |
| ポートのポートセキュリティーを無効にするかどうか。指定されていない場合、ネットワークレベルでポートセキュリティーが明示的に無効にされていない限り、Neutron によってセキュリティーが有効化されます。 | いいえ | 該当なし |
|
ポートに割り当てる IP アドレスペアのリスト。形式は | いいえ | 該当なし |
5.6.4.3. ノードプールの追加ポートの作成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) 上で動作するホステッドクラスター用のノードプールに追加ポートを設定できます。
前提条件
- ホステッドクラスターを作成した。
- 管理クラスターにアクセスできる。
-
hcp
CLI がインストールされている。 - 追加のネットワークが RHOSP に作成されている。
- ホステッドクラスターによって使用されるプロジェクトが、追加のネットワークにアクセスできる。
- 「ノードプールの追加ポートのオプション」に記載されているオプションを確認した。
手順
hcp create nodepool openstack
コマンドに--openstack-node-additional-port
オプションを付けて実行し、追加ポートが割り当てられたホステッドクラスターを作成します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<cluster_name>
- ホステッドクラスターの名前を指定します。
<nodepool_name>
- ノードプールの名前を指定します。
<replica_count>
- 必要なレプリカの数を指定します。
<flavor>
- 使用する RHOSP フレーバーを指定します。
<sriov_net_id>
- SR-IOV ネットワーク ID を指定します。
<lb_net_id>
- ロードバランサーのネットワーク ID を指定します。
5.6.5. ノードプールの追加ポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
クラウドネイティブネットワーク機能 (CNF) などの高パフォーマンスワークロード向けに、RHOSP 上のホステッドクラスターノードのパフォーマンスをチューニングできます。パフォーマンスチューニングには、RHOSP リソースの設定、パフォーマンスプロファイルの作成、チューニング済みの NodePool
リソースのデプロイ、SR-IOV デバイスサポートの有効化が含まれます。
CNF はクラウドネイティブ環境で動作するように設計されています。CNF は、ルーティング、ファイアウォール、負荷分散などのネットワークサービスを提供できます。CNF を実行するために、高性能なコンピューティングおよびネットワークデバイスを使用してノードプールを設定できます。
5.6.5.1. ホステッドクラスターノードのパフォーマンスチューニング リンクのコピーリンクがクリップボードにコピーされました!
パフォーマンスプロファイルを作成し、チューニング済みの NodePool
リソースをデプロイして、Red Hat OpenStack Platform (RHOSP) Hosted Control Plane で高パフォーマンスワークロードを実行します。
前提条件
- 専用の CPU、メモリー、ホストアグリゲートに関する情報など、ワークロードを実行するのに必要なリソースを含む RHOSP フレーバーがある。
- SR-IOV または DPDK 対応 NIC に割り当てられた RHOSP ネットワークがある。ホステッドクラスターによって使用されるプロジェクトでネットワークが利用可能である必要があります。
手順
perfprofile.yaml
という名前のファイルに、要件を満たすパフォーマンスプロファイルを作成します。以下に例を示します。config map のパフォーマンスプロファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要HyperShift Operator の namespace、分離された CPU と予約済み CPU、および huge page 数の環境変数がまだ設定されていない場合は、パフォーマンスプロファイルを適用する前に環境変数を作成してください。
次のコマンドを実行して、パフォーマンスプロファイル設定を適用します。
oc apply -f perfprof.yaml
$ oc apply -f perfprof.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
クラスターの名前に
CLUSTER_NAME
環境変数がまだ設定されていない場合は、これを定義します。 次のコマンドを実行して、ノードプール名の環境変数を設定します。
export NODEPOOL_NAME=$CLUSTER_NAME-cnf
$ export NODEPOOL_NAME=$CLUSTER_NAME-cnf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、フレーバーの環境変数を設定します。
export FLAVOR="m1.xlarge.nfv"
$ export FLAVOR="m1.xlarge.nfv"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、パフォーマンスプロファイルを使用するノードプールを作成します。
hcp create nodepool openstack \ --cluster-name $CLUSTER_NAME \ --name $NODEPOOL_NAME \ --node-count 0 \ --openstack-node-flavor $FLAVOR
$ hcp create nodepool openstack \ --cluster-name $CLUSTER_NAME \ --name $NODEPOOL_NAME \ --node-count 0 \ --openstack-node-flavor $FLAVOR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
PerformanceProfile
リソースを参照するようにノードプールにパッチを適用します。oc patch nodepool -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ -p '{"spec":{"tuningConfig":[{"name":"cnf-performanceprofile"}]}}' --type=merge
$ oc patch nodepool -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ -p '{"spec":{"tuningConfig":[{"name":"cnf-performanceprofile"}]}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してノードプールをスケーリングします。
oc scale nodepool/$CLUSTER_NAME --namespace ${HYPERSHIFT_NAMESPACE} --replicas=1
$ oc scale nodepool/$CLUSTER_NAME --namespace ${HYPERSHIFT_NAMESPACE} --replicas=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードの準備が完了するまで待ちます。
次のコマンドを実行して、ノードの準備が完了するまで待ちます。
oc wait --for=condition=UpdatingConfig=True nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=5m
$ oc wait --for=condition=UpdatingConfig=True nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、設定の更新が完了するまで待ちます。
oc wait --for=condition=UpdatingConfig=False nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=30m
$ oc wait --for=condition=UpdatingConfig=False nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=30m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、すべてのノードが正常になるまで待ちます。
oc wait --for=condition=AllNodesHealthy nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=5m
$ oc wait --for=condition=AllNodesHealthy nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ノードに SSH 接続するか、oc debug
コマンドを使用すると、パフォーマンス設定を確認できます。
5.6.5.2. ホステッドクラスターでの SR-IOV Network Operator の有効化 リンクのコピーリンクがクリップボードにコピーされました!
SR-IOV Network Operator を有効にして、NodePool
リソースによってデプロイされたノード上の SR-IOV 対応デバイスを管理できます。この Operator はホステッドクラスターで実行され、ラベル付きのワーカーノードを必要とします。
手順
次のコマンドを実行して、ホステッドクラスター用の
kubeconfig
ファイルを生成します。hcp create kubeconfig --name $CLUSTER_NAME > $CLUSTER_NAME-kubeconfig
$ hcp create kubeconfig --name $CLUSTER_NAME > $CLUSTER_NAME-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
kubeconfig
リソースの環境変数を作成します。export KUBECONFIG=$CLUSTER_NAME-kubeconfig
$ export KUBECONFIG=$CLUSTER_NAME-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、各ワーカーノードに SR-IOV 機能を示すラベルを付けます。
oc label node <worker_node_name> feature.node.kubernetes.io/network-sriov.capable=true
$ oc label node <worker_node_name> feature.node.kubernetes.io/network-sriov.capable=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<worker_node_name>
- ホステッドクラスター内のワーカーノードの名前を指定します。
- 「SR-IOV Network Operator のインストール」の手順に従って、ホステッドクラスターに SR-IOV Network Operator をインストールします。
- インストール後、スタンドアロンクラスターと同じプロセスを使用して、ホステッドクラスターで SR-IOV ワークロードを設定します。