本文へスキップ
BecomeCoder

Kubernetesコース · 第3章 ワークロード ― 複製と無停止デプロイ · レッスン16

スケール ― 手動でPod数を増減

ブラウザで完結

導入

アクセスが増えたら Pod を増やし、落ち着いたら減らす。この スケール(scaling) も、Deployment なら簡単です。やり方には「命令的」と「宣言的」の2通りがあり、両方知っておくと使い分けられます。

説明

Pod の数を増やすことを スケールアウト、減らすことを スケールイン と呼びます(同じ Pod を横に並べて増やすので 水平スケール とも)。方法は2つあります。

1. コマンドで直接変える(命令的・手早い)

# web-deploy のPodを5個にする
kubectl scale deployment web-deploy --replicas=5

# 反映を確認
kubectl get deployment web-deploy
# NAME         READY   UP-TO-DATE   AVAILABLE   AGE
# web-deploy   5/5     5            5           10m

2. マニフェストの replicas を書き換えて apply(宣言的・記録が残る)

spec:
  replicas: 5      # 3 から 5 に変更
kubectl apply -f deploy.yaml

2つの違いは、あるべき状態がどこに残るかです。コマンド(方法1)は手早い反面、マニフェストのファイルは古いまま(3個)なので、あとで誰かがそのファイルを apply すると3個に戻ってしまいます。第1章で学んだ宣言的の考え方に忠実なのは方法2で、マニフェストこそが正という運用(Gitで管理するなど)ではこちらを使います。

ここまでは人間が数字を決める手動スケールです。「アクセス量に応じて Kubernetes が自動で個数を増減する」自動スケール(HPA / Horizontal Pod Autoscaler) もありますが、これは第6章で扱います。まずは「replicas を変えれば、あとは Kubernetes が数を合わせてくれる」感覚を掴んでください。

実際に動かしてみよう

上がマニフェスト(YAML)エディタ、下が kubectl の端末です。エディタの内容は `manifest.yaml` として保存され、下で `kubectl apply -f manifest.yaml` を実行するとクラスタに反映されます(pod.yaml / deploy.yaml / service.yaml も最初から置いてあります)。`kubectl get pods` / `describe` / `scale` / `rollout` などで結果を確かめましょう(本物のKubernetesではなく、動きを再現した軽量なシミュレータです)。各レッスンは毎回まっさらな状態から始まり、「最初からやり直す」で戻せます。

kubectl(シミュレート)

マニフェスト(YAML)を書いて kubectl コマンドを試せる学習用クラスタを読み込みます(本物のKubernetesではなく、apply/get/describe/scale/rollout などの動きを再現した軽量な自作シミュレータです)。
スクロールして表示された時点でも自動で読み込まれます。