【Day9】PodとNodeのスケーリング道場:手動・自動でリソースを自在に操る
🥋 はじめに:スケーリングとは何か?
クラウドの強みは、必要に応じてリソースを増減できる「柔軟性」にあります。Kubernetes(EKS)でもこの“柔”の極意を使いこなせば、アクセス集中にも耐え、コストも最適化できる運用が実現できます。
EKSにおけるスケーリングには主に以下の2種類があります:
- Podのスケーリング:アプリケーションの処理能力を増やす
- Nodeのスケーリング:Podを動かすためのインフラ(EC2)を増やす
この2つを連携させることで、真のスケーラブルなシステムが完成します。
🌱 Horizontal Pod Autoscaler(HPA)の基礎
HPAとは?Kubernetesの「柔術」
HPA(Horizontal Pod Autoscaler)は、CPUやメモリなどのメトリクスに応じて、Podの数を自動で調整してくれる機能です。例えば、CPU使用率が50%を超えたらPod数を増やす、といったルールを設定できます。
仕組みの理解:Metrics APIが鍵
HPAは、Podのメトリクスを取得するために metrics-server というコンポーネントが必要です。これが無いと、HPAは正しく動作しません。
🔥 HPAでCPU使用率に応じたPodの自動スケーリングを体験する
ステップ①:CPU使用率を監視するDeploymentを作成
以下のDeploymentは vish/stress イメージを使って、CPUに負荷をかけるコンテナを起動します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: cpu-stress
spec:
replicas: 1
selector:
matchLabels:
app: cpu-stress
template:
metadata:
labels:
app: cpu-stress
spec:
containers:
- name: stress
image: vish/stress
args:
- -cpus
- "1"
resources:
requests:
cpu: "100m"
limits:
cpu: "200m"
kubectl apply -f cpu-stress-deployment.yaml
ステップ②:HPAを作成してCPU 50%以上でスケーリング
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: cpu-stress-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: cpu-stress
minReplicas: 1
maxReplicas: 5
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
kubectl apply -f hpa.yaml
この設定では、Pod全体の CPU使用率が50%を超えたら、新たなPodを自動追加します(最大5つまで)。
🚀 手順③:実際にスケーリングさせてみよう!
1. stressコマンドでCPUを100%使う
kubectl exec -it cpu-stress-<Podに自動で振られるID> -- /bin/sh
# コンテナ内で以下を実行
stress -c 1
💡 これにより、そのPodが1CPU分の負荷を常時かけ続けるようになります。
2. HPAが反応するまで待つ(1〜2分)
kubectl get hpa
このコマンドで CURRENT CPU% が50%以上になると、Pod数(REPLICAS)が自動で増加していくのが確認できます。
👀 スケーリング状態を確認するコマンド
kubectl get pods -l app=cpu-stress -o wide
Pod数が徐々に増えていき、Nodeにバランスよくスケジューリングされていることも確認できます。
🧘♂️ 締めの一言
「アクセスが集中したときに自動でPodが増える」──この状態こそ、HPAの真髄です。次回はこれとCluster Autoscalerを組み合わせて、Nodeも自動でスケールするシステムに仕上げましょう!
次回予告 📢:Namespaceで領域を分けよ!Kubernetes流チーム戦の極意
実はload balancer controllerなどで少し出てきたNamespace。
Namespaceって何?おいしいの?ってところからで大丈夫です!
じっくり解説していくので、明日もお楽しみに!
よければフォロー&いいねお願いします🙏
- 「面白かった」「続きが気になる!」と思ったらLGTM👍
- コメントで「聞きたい内容」「つまずきポイント」などもぜひ教えてください!
それではまた明日、EKS道場でお会いしましょう!押忍🔥
