試すためのDeploymentを作成
apiVersion: apps/v1 kind: Deployment metadata: name: php-apache spec: selector: matchLabels: run: php-apache template: metadata: labels: run: php-apache spec: containers: - name: php-apache image: registry.k8s.io/hpa-example ports: - containerPort: 80 resources: limits: cpu: 500m requests: cpu: 200m --- apiVersion: v1 kind: Service metadata: name: php-apache labels: run: php-apache spec: ports: - port: 80 selector: run: php-apache
適用
kubectl apply -f hpa.yaml
オートスケールを設定
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
kubectl get hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache /50% 1 10 0 7s
負荷コマンドを実行する
kubectl run -i --tty load-generator --rm --image=busybox --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"
Pod数を確認すると、増えていることがわかる。
kubectl get pod -A -o wide | grep php default php-apache-598b474864-8tdfd 1/1 Running 0 7m45s 10.1.128.253 microk8s <none> <none> default php-apache-598b474864-wzkt4 1/1 Running 0 5m55s 10.1.128.206 microk8s <none> <none> default php-apache-598b474864-szmf4 1/1 Running 0 5m55s 10.1.128.199 microk8s <none> <none> default php-apache-598b474864-4mq97 1/1 Running 0 5m55s 10.1.128.202 microk8s <none> <none> default php-apache-598b474864-c2pfr 1/1 Running 0 5m40s 10.1.128.200 microk8s <none> <none> default php-apache-598b474864-hg9bw 1/1 Running 0 5m10s 10.1.128.215 microk8s <none> <none> default php-apache-598b474864-qnjfz 1/1 Running 0 4m55s 10.1.128.217 microk8s <none> <none> default php-apache-598b474864-h8cvh 1/1 Running 0 4m55s 10.1.128.218 microk8s <none> <none>