はじめに
HorizontalPodAutoscalerは、Kubernetesの機能であり、リソースの利用状況に基づいてデプロイメント内のポッド数を自動的にスケールすることができます。この実験では、HorizontalPodAutoscalerを使用してデプロイメントを自動的にスケールする方法を学びます。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
HorizontalPodAutoscalerは、Kubernetesの機能であり、リソースの利用状況に基づいてデプロイメント内のポッド数を自動的にスケールすることができます。この実験では、HorizontalPodAutoscalerを使用してデプロイメントを自動的にスケールする方法を学びます。
リソースを作成する前に、動作中のKubernetesクラスタが必要です。Minikubeは、ローカルマシン上で動作する軽量のKubernetes環境です。
作業ディレクトリに移動する:
ターミナルを開き、デフォルトのプロジェクトフォルダに移動します。
cd /home/labex/project
Minikubeを起動する:
Minikubeを起動してKubernetesクラスタを初期化します。
minikube start
Minikubeが動作していることを確認する:
Minikubeクラスタの状態を確認します。
minikube status
kubelet
やapiserver
などのコンポーネントがRunning
と表示されていることを確認します。minikube start
を再度実行します。Minikubeの起動に問題がある場合は、必要に応じてminikube delete
を使用して環境をリセットします。
まず、HorizontalPodAutoscalerを適用するデプロイメントを作成する必要があります。
deployment.yaml
という名前のデプロイメントファイルを作成します。apiVersion: apps/v1
kind: Deployment
metadata:
name: hpa-demo
spec:
replicas: 1
selector:
matchLabels:
app: hpa-demo
template:
metadata:
labels:
app: hpa-demo
spec:
containers:
- name: hpa-demo
image: nginx
resources:
limits:
cpu: "1"
memory: 512Mi
requests:
cpu: "0.5"
memory: 256Mi
---
apiVersion: v1
kind: Service
metadata:
name: hpa-demo
spec:
selector:
app: hpa-demo
ports:
- name: http
port: 80
targetPort: 80
このデプロイメントは、CPUとメモリのリソース制限と要求を持つNginxコンテナの単一レプリカを指定しています。
kubectl apply -f deployment.yaml
これでデプロイメントができたので、HorizontalPodAutoscalerを作成してデプロイメントを自動的にスケールすることができます。
hpa.yaml
という名前のHorizontalPodAutoscalerファイルを作成します。apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-demo
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: hpa-demo
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
averageUtilization: 1
type: Utilization
このHorizontalPodAutoscalerは、hpa-demo
デプロイメントを1から10のレプリカにスケールするように指定しており、平均CPU使用率を50%にすることを目標としています。
kubectl apply -f hpa.yaml
これでHorizontalPodAutoscalerができたので、デプロイメントに負荷をかけることでテストすることができます。
minikube addons enable metrics-server
kubectl run -i --tty load-generator --image=busybox /bin/sh
while true; do wget -q -O- http://hpa-demo; done
kubectl get hpa
hpa-demo
のコピー数が10
に拡大されていることがわかります。次のコマンドでレプリカ数を確認することができます。
kubectl get pods -l app=hpa-demo
ctrl+c
を入力して負荷生成を停止します。この実験では、HorizontalPodAutoscalerを使ってリソースの利用状況に基づいてデプロイメントを自動的にスケールする方法を学びました。デプロイメントを作成し、HorizontalPodAutoscalerを作成し、デプロイメントに負荷をかけることでテストしました。また、HorizontalPodAutoscalerが増えた負荷に応じてデプロイメントをどのようにスケールするかも見ました。