自動スケーリングの管理

自動スケーリング・ノードを検証、監視、スケーリングおよび削除する方法について学習します。

静的就業者が使用不可の場合のコントロール・プレーン・スケジューリング

自動スケーリングは、OpenShift Container Platform 4.22以降でサポートされています。OpenShift Container Platformマイナー・バージョンのクラスタと一致するRHCOSワーカー・イメージを使用します。

自動スケーリングを有効にしてクラスタがインストールされ、静的ワーカーがない場合、コントロールプレーン・ノードはワーカー・ロールを受け取り、スケジュール可能なままにできます。コントロール・プレーン・ノードでスケジュールされたワークロードは、保留中の需要を満たし、自動スキャラのスケールアップを防止できます。専用自動スケーリング・ワーカーの準備が整ったら、Red Hat Solution 4564851に従って、ワーカー・ロールをコントロールプレーン・ノードから削除します。

自動スケーリングの検証

コンソールから、次のコマンドを使用して、自動スケーリング・ノードが動作していることを確認します:

oc get ns oci-openshift-autoscaling-operator
oc get pods -n oci-openshift-autoscaling-operator

自動スケーリングのモニタリング

インスタンス・プロビジョニング・プロセスを調査または監視するには:

  1. ENVのエクスポート:
    export STACK_NAMESPACE=oci-openshift-autoscaling-operator
    export AUTOSCALER_NAME=ociclusterautoscaler
  2. プロビジョニング・チェーンを確認します。
    oc get ociclusterautoscaler -n ${STACK_NAMESPACE} ${AUTOSCALER_NAME} -o yaml
    oc get machinedeployments.cluster.x-k8s.io -n ${STACK_NAMESPACE}
    oc get machinesets.cluster.x-k8s.io -n ${STACK_NAMESPACE}
    oc get machines.cluster.x-k8s.io -n ${STACK_NAMESPACE} -o wide
    oc get ocimachines.infrastructure.cluster.x-k8s.io -n ${STACK_NAMESPACE} -o wide
    oc get nodes -o wide
  3. プロビジョニングの失敗をチェックするイベント:
    oc get events -n ${STACK_NAMESPACE} --sort-by=.lastTimestamp
    
    ## For a specific stuck Machine:
    
    export MACHINE_NAME=<machine-name>
    oc describe machine.cluster.x-k8s.io -n ${STACK_NAMESPACE} ${MACHINE_NAME}
    oc get event -n ${STACK_NAMESPACE} \
      --field-selector involvedObject.name=${MACHINE_NAME} \
      --sort-by=.lastTimestamp
    
    ## Find the related OCIMachine:
    
    oc get machine.cluster.x-k8s.io -n ${STACK_NAMESPACE} ${MACHINE_NAME} \
      -o jsonpath='{.spec.infrastructureRef.name}{"\n"}'
    
    export OCI_MACHINE_NAME=<ocimachine-name>
    oc describe ocimachine.infrastructure.cluster.x-k8s.io -n ${STACK_NAMESPACE} ${OCI_MACHINE_NAME}
    oc get ocimachine.infrastructure.cluster.x-k8s.io -n ${STACK_NAMESPACE} ${OCI_MACHINE_NAME} -o yaml
  4. コントローラのログを確認します:
    # OCI CAPI operator logs
    oc logs -n ${STACK_NAMESPACE} \
      deployment/oci-capi-operator-controller-manager \
      -c manager \
      --tail=300
    
    # CAPOCI provider logs: most useful for OCI provisioning errors
    oc logs -n ${STACK_NAMESPACE} \
      deployment/capoci-controller-manager \
      --tail=500
    
    # CAPI controller logs
    oc logs -n ${STACK_NAMESPACE} \
      deployment/capi-manager \
      --tail=500
    
    # Cluster Autoscaler logs: useful if no Machine was created
    oc logs -n ${STACK_NAMESPACE} \
      deployment/oci-cluster-autoscaler \
      --tail=500

最も一般的な障害シグナルは次のとおりです。

# No new Machine:
oc logs -n ${STACK_NAMESPACE} deployment/oci-cluster-autoscaler --tail=500

# Machine exists, but OCIMachine has no providerID:
oc describe ocimachine.infrastructure.cluster.x-k8s.io -n ${STACK_NAMESPACE} ${OCI_MACHINE_NAME}
oc logs -n ${STACK_NAMESPACE} deployment/capoci-controller-manager --tail=500

# OCI instance exists, but no OpenShift node joined:
oc get csr
oc get nodes
oc get mcp
oc get co machine-config

インスタンスがプロビジョニングされているがクラスタに参加できない場合は、OCIコンソールで「OS管理」を選択し、「コンソール履歴」を選択します。ここでは、OSレベルのエラー・メッセージを確認できます。

スケール・アップまたはスケール・ダウン

次のコマンドを使用して、自動スケーリング・リソースのスケール・アップおよびスケール・ダウンを監視します:

oc get machinedeployments.cluster.x-k8s.io -n oci-openshift-autoscaling-operator
oc get machinesets.cluster.x-k8s.io -n oci-openshift-autoscaling-operator
oc get machines.cluster.x-k8s.io -n oci-openshift-autoscaling-operator -o wide
oc get nodes

自動スケーリング・インスタンス内のノードの最小数または最大数(あるいはその両方)を変更するには:

  1. 現在の最小値と最大値を確認します。
    oc get ociclusterautoscaler.capi.openshift.io -n oci-openshift-autoscaling-operator ociclusterautoscaler \
    	-o jsonpath='{.spec.autoscaling.minNodes}{" "}{.spec.autoscaling.maxNodes}{"\n"}'
  2. このコマンドで新しい最小値または最大値(あるいはその両方)を設定します。この例では、新しい最小1ノードと最大3ノードが設定されています。必要に応じて値を変更します。
    oc patch ociclusterautoscaler.capi.openshift.io -n oci-openshift-autoscaling-operator ociclusterautoscaler \
    	--type=merge \
    	-p '{"spec":{"autoscaling":{"minNodes":1,"maxNodes":3}}}'