2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初心者でも分かる!EKS道場【Day9】PodとNodeのスケーリング道場:手動・自動でリソースを自在に操る

Posted at

【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

image.png

このコマンドで 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道場でお会いしましょう!押忍🔥

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?