4.4. 自動スケーリングの設定
Red Hat OpenShift Dev Spaces の自動スケーリングのさまざまな側面を説明します。
4.4.1. Red Hat OpenShift Dev Spaces コンテナーのレプリカ数の設定 リンクのコピーリンクがクリップボードにコピーされました!
Kubernetes HorizontalPodAutoscaler (HPA) を使用して OpenShift Dev Spaces オペランドのレプリカの数を設定するには、デプロイメント用の HPA リソースを定義します。HPA は指定されたメトリクスに基づいてレプリカの数を動的に調整します。
手順
ターゲットメトリクスと必要なレプリカ数を指定して、デプロイメント用の
HPAリソースを作成します。apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: scaler namespace: openshift-devspaces spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: <deployment_name>1 ...- 1
<deployment_name>には、以下のデプロイメントのいずれかに対応します。-
devspaces -
che-gateway -
devspaces-dashboard -
plugin-registry -
devfile-registry
-
例4.21 devspaces デプロイメント用の HorizontalPodAutoscaler を作成する
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: devspaces-scaler
namespace: openshift-devspaces
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: devspaces
minReplicas: 2
maxReplicas: 5
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 75
この例では、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: 6001 ignoredUnrecoverableEvents:2 - FailedScheduling
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"
検証手順
ワークスペースを起動し、ワークスペース 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}' false