Hitachi

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator ユーザーズガイド


4.3.3 HPAのKubernetesマニフェストの作成

以降に示す要件を満たすように、オートスケール用HPAのKubernetesマニフェストをオートスケール機能の対象のKubernetesアプリケーションごとに作成します。このマニフェストファイルを作成することで、オートスケール機能を使用するために必要なHPAを利用できます。

HPAのKubernetesマニフェストの記述例を次に示します。HMP-PCTOとしてapiVersionに、keda.sh/v1alpha1を指定してください。

詳細な設定方法についてはKubernetesの公式のドキュメントを参照してください。

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: Prometheus-hpa
  namespace: my-namespace     …1
spec:
  scaleTargetRef:
    apiVersion: apps/v1       …2
    kind: Deployment          …3
    name: sql-participant     …4
  minReplicaCount: 1          …5
  maxReplicaCount: 2          …6
  triggers:                   …7
    - type: prometheus
      metadata:
        serverAddress: 'http://prometheus-server:8080'
        query: 'SUM(hmppcto_participant_transactions_inProcess_operations{id=~"^sql-participant-.*", status=~"NONE|PREPARING|COMMIT_VOTE|ROLLBACK_VOTE|COMMITTING|ROLLING_BACK|READ_ONLY|COMMITTED|ROLLED_BACK|ROLLED_BACK_BY_RM"})'
        threshold: "3"
  advanced:
    horizontalPodAutoscalerConfig:
      behavior:               …8
        scaleDown:
          policies:
            - type: Percent
              value: 50
              periodSeconds: 30
        scaleUp:
          policies:
            - type: Percent
              value: 50
              periodSeconds: 10

<説明>

  1. オートスケール機能の対象のKubernetesアプリケーションのKubernetesマニフェストに記載したnamespaceと同一のものを指定してください。

  2. オートスケール機能の対象のKubernetesアプリケーションのKubernetesマニフェストに記載したapiVersionと同一のものを指定してください。

  3. オートスケール機能の対象のKubernetesアプリケーションのKubernetesマニフェストに記載したkindと同一のものを指定してください。

  4. オートスケール機能の対象のKubernetesアプリケーションのKubernetesマニフェストに記載したmetadata.nameと同一のものを指定してください。この例ではsql-participantをオートスケールの対象としています。

  5. スケールインできる最小のPod数を指定します。

  6. スケールアウトできる最大のPod数を指定します

    5.、6.のPod数については、取扱説明書「HMP-PCTOテクニカルガイド」のスケールアウト/スケールインのPod数の設定範囲の説明を参照し、その範囲内で指定してください。

  7. 取得対象のメトリクスと閾値を指定します。

    • triggers.typeには、「Prometheus」を指定します。

    • triggers.metadata.serverAddressには、Prometheusのアドレスを指定します。

    • triggers.metadata.queryには、Prometheusのクエリを指定します。この例では、sql-participantのPod1台当たりの仕掛中トランザクション数を取得対象のメトリクスとしています。このクエリは、SUM関数を使用し、存在するsql-participantのすべての仕掛中トランザクション数を取得しています。

      イメージ図を次に示します。

      図4‒4 triggers.metadata.queryの設定例イメージ図

      [図データ]

      HPAは、triggers.metadata.queryで設定された値を、オートスケール機能の対象のKubernetesアプリケーションのPod数で除算し平均値を求めます。

      「hmppcto_participant_transactions_inProcess_operations」は、HMP-PCTOが提供している仕掛中トランザクション数を取得するメトリクスです。このほかに使用できるメトリクスの一覧は「(3) 出力内容」を参照してください。

      「hmppcto_participant_transactions_inProcess_operations」以降の{}で囲われている範囲はメトリクスの検索条件を指定しています。この例では、正規表現を用いて、sql-participantの仕掛中トランザクションのメトリクスに絞り込んでいます。

      クエリの書き方の詳細は、Prometheusの公式ドキュメントを参照してください。

    • triggers.metadata.thresholdには、閾値を指定します。HPAは、triggers.metadata.queryの設定で取得される平均値を、ここで指定された値に近づくように、対象のPodをオートスケールさせます。数値でもダブルクォーテーションで囲んで指定してください。

  8. スケーリングポリシーを指定します。

    設定方法は、「4.2.4 HPAのKubernetesマニフェストの作成」の項番8.を参照してください。