4.4. 自動スケーリングの設定
Red Hat OpenShift Dev Spaces の自動スケーリングのさまざまな側面を説明します。
4.4.1. Red Hat OpenShift Dev Spaces コンテナーのレプリカ数の設定 リンクのコピーリンクがクリップボードにコピーされました!
Kubernetes HorizontalPodAutoscaler
(HPA) を使用して OpenShift Dev Spaces オペランドのレプリカの数を設定するには、デプロイメント用の HPA
リソースを定義します。HPA
は指定されたメトリクスに基づいてレプリカの数を動的に調整します。
手順
ターゲットメトリクスと必要なレプリカ数を指定して、デプロイメント用の
HPA
リソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<deployment_name>
には、以下のデプロイメントのいずれかに対応します。-
devspaces
-
che-gateway
-
devspaces-dashboard
-
plugin-registry
-
devfile-registry
-
例4.21 devspaces デプロイメント用の HorizontalPodAutoscaler
を作成する
この例では、HPA は devspaces という名前のデプロイメントをターゲットにしており、レプリカは最小 2 つ、最大 5 つで、CPU 使用率に基づいてスケーリングされます。
4.4.2. マシンの自動スケーリングの設定 リンクのコピーリンクがクリップボードにコピーされました!
リソースのニーズに応じてノードの数を調整するようにクラスターを設定した場合は、OpenShift Dev Spaces ワークスペースのシームレスな操作を維持するために追加の設定が必要です。
Autoscaler がノードを追加および削除する場合、ワークスペースには特別な考慮が必要です。
autoscaler によって新しいノードが追加されている場合、ノードのプロビジョニングが完了するまで、ワークスペースの起動に通常よりも時間がかかることがあります。
逆に、ノードが削除される場合、ワークスペースの使用中に中断が発生し、保存されていないデータが失われる可能性を回避するために、ワークスペース Pod を実行しているノードは Autoscaler によって削除されないことが理想的です。
4.4.2.1. Autoscaler が新しいノードを追加する場合 リンクのコピーリンクがクリップボードにコピーされました!
新しいノードが追加されている間にワークスペースが適切に起動するようにするには、OpenShift Dev Spaces インストールに追加の設定を行う必要があります。
手順
CheCluster カスタムリソースで、Autoscaler が新しいノードをプロビジョニングするときにワークスペースが適切に起動できるように、次のフィールドを設定します。
spec: devEnvironments: startTimeoutSeconds: 600 ignoredUnrecoverableEvents: - FailedScheduling
spec: devEnvironments: startTimeoutSeconds: 600
1 ignoredUnrecoverableEvents:
2 - FailedScheduling
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.2.2. Autoscaler がノードを削除する場合 リンクのコピーリンクがクリップボードにコピーされました!
Autoscaler がノードを削除する必要がある場合にワークスペース Pod が削除されないようにするには、すべてのワークスペース Pod に "cluster-autoscaler.kubernetes.io/safe-to-evict": "false"
アノテーションを追加します。
手順
CheCluster カスタムリソースで、
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
アノテーションをspec.devEnvironments.workspacesPodAnnotations
フィールドに追加します。spec: devEnvironments: workspacesPodAnnotations: cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
spec: devEnvironments: workspacesPodAnnotations: cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
ワークスペースを起動し、ワークスペース Pod に
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
アノテーションが含まれていることを確認します。oc get pod <workspace_pod_name> -o jsonpath='{.metadata.annotations.cluster-autoscaler\.kubernetes\.io/safe-to-evict}'
$ oc get pod <workspace_pod_name> -o jsonpath='{.metadata.annotations.cluster-autoscaler\.kubernetes\.io/safe-to-evict}' false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow