4.3.5 HPAのKubernetesマニフェストの作成
オートスケール用HPAのKubernetesマニフェストをオートスケール対象のKubernetesアプリケーションごとに作成します。
- 〈この項の構成〉
(1) オンプレミス環境、Red Hat OpenShift Container Platform環境、またはMicrosoft Azure環境の場合
オンプレミス環境、Red Hat OpenShift Container Platform環境、またはMicrosoft Azure環境の場合、以降に示す要件を満たすように、オートスケール用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
<説明>
-
オートスケール対象のKubernetesアプリケーションのKubernetesマニフェストに記載するnamespaceと同一のものを指定してください。
-
オートスケール対象のKubernetesアプリケーションのKubernetesマニフェストに記載するapiVersionと同一のものを指定してください。
-
オートスケール対象のKubernetesアプリケーションのKubernetesマニフェストに記載するkindと同一のものを指定してください。
-
オートスケール対象のKubernetesアプリケーションのKubernetesマニフェストに記載するmetadata.nameと同一のものを指定してください。この例ではsql-participantをオートスケールの対象としています。
-
スケールインできる最小のPod数を指定します。
-
スケールアウトできる最大のPod数を指定します
5.、6.のPod数については、取扱説明書「HMP-PCTOテクニカルガイド」のスケールアウト/スケールインのPod数の設定範囲の説明を参照し、その範囲内で指定してください。
-
「triggers:」の行から「threshold: "3"」の行で、取得対象のメトリクスと閾値を指定します。
-
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をオートスケールさせます。数値でもダブルクォーテーションで囲んで指定してください。
-
-
「behavior:」の行から「periodSeconds: 10」の行で、スケーリングポリシーを指定します。
設定方法は、「4.2.4 HPAのKubernetesマニフェストの作成」の項番8.を参照してください。
(2) Google Cloud Platform環境の場合
Google Cloud Platform環境の場合、オートスケール用HPAのKubernetesマニフェストをオートスケール対象のKubernetesアプリケーションごとに作成します。このマニフェストファイルを作成することで、オートスケールを使用するために必要なHPAを利用できます。
PromQLクエリ(sumなど)を使用するときは、マネージドルールを作成し、HPAマニフェストの指標として指定してください。詳細な手順については、Google Cloud Platformの公式ドキュメントを参照してください。