はじめに
v2.20.1に準拠 ([3])。コマンドは稼働中の Kubernetes クラスタと、そこに向けて設定済みのkubectlを想定する。
前提
- Kubernetes クラスタと、cluster-admin 権限を持つ
kubectl。 - チャートで入れる場合は
helmv3 ([7])。 - スケール対象のワークロード (下記では Deployment を使う)。
インストール
Helm で入れる ([7]):
bash
helm repo add kedacore https://kedacore.github.io/charts
helm repo update
helm install keda kedacore/keda --namespace keda --create-namespaceまたはリリース済みマニフェストを直接適用する ([7]):
bash
kubectl apply --server-side -f https://github.com/kedacore/keda/releases/download/v2.20.1/keda-2.20.1.yaml最初の動く構成
何かをスケールさせる最短経路。外部依存が要らない内蔵の cron scaler を使う。
スケール対象の Deployment を作る。
bashkubectl create deployment nginx --image=nginx --replicas=0毎日の時間帯に Deployment を 5 レプリカへ、時間外は 0 へ戻す
ScaledObjectを作る。yamlapiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: nginx-cron spec: scaleTargetRef: name: nginx minReplicaCount: 0 maxReplicaCount: 5 triggers: - type: cron metadata: timezone: Etc/UTC start: 0 6 * * * end: 0 20 * * * desiredReplicas: "5"適用する。
bashkubectl apply -f scaledobject.yaml
動作確認
KEDA がリソースを作りワークロードを管理していることを確かめる。
bash
kubectl get scaledobject nginx-cron
kubectl get hpaScaledObject が READY かつ ACTIVE を示し、keda-hpa-nginx-cron という HPA があれば KEDA が配線済みだ。0→1 の遷移は operator 自身が駆動し、1 レプリカ超のスケールは HPA が担う。
次に読むもの
HA・scaler の全カタログ・TriggerAuthentication・ScaledJob は公式の deploy / concepts ドキュメント ([7]) とプロジェクトリポジトリ ([1]) を参照。HTTP リクエストベースのスケールは HTTP add-on を見る ([8])。