Kubernetes Learning 第25章:Replica数と冗長性の設計 〜止まらないシステムのために〜

Kubernetesを使うと、アプリケーションの冗長化(=同じアプリを複数動かす)がとても簡単になります。この冗長性は、障害が起きてもサービスを止めない仕組みの基本です。その中核となるのが Replica(レプリカ)数 の設計です。


✅ Replicaとは?

Replica(レプリカ)とは、Pod(アプリケーションの実行単位)を何個動かすかの数です。たとえば:

replicas: 3

と指定すると、Kubernetes は同じPodを常に3つ動かし続けます。


🧠 なぜ複数必要なの?

以下のような場面を考えてみてください:

  • 1つのPodが突然落ちた
  • ノードが再起動された
  • トラフィックが急増して負荷が上がった

Podが1つしかないと、すぐにサービス停止に直結します。

でも、3つあれば?

  • 1つ落ちても、他の2つが生きていればサービスは継続
  • Serviceが自動でトラフィックを他のPodに振り分ける

これが**冗長性(Redundancy)**の考え方です。


📦 実際のマニフェスト例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp-container
        image: myapp:latest

⚖️ 適切なReplica数の考え方

冗長性を確保するには、最低でも2つ以上のReplicaが推奨されます。

Replica数冗長性主な用途
1なしテスト環境や単純なツール
2〜3あり小規模本番サービス
5以上負荷分散・高可用性が必要な大規模サービス

また、**水平オートスケーリング(HPA)**を併用すれば、負荷に応じて自動でPod数を増減することもできます(→後述章で解説)。


☁️ ノード単位の冗長性も意識しよう

冗長性を考える際、Replica数を増やすだけでは不十分なこともあります。例えば:

  • Replica 3個がすべて同じノードに載っていたら、そのノードが死んだら全滅です。

Kubernetesでは、Podはなるべく異なるノードに分散配置されるようにスケジューリングされますが、より厳密にしたい場合は PodAntiAffinity などの設定を加えることもあります。


🧪 テスト方法

たとえば、Replicaが3つあるとき、1つのPodを強制削除してみてください:

kubectl delete pod myapp-xxxxx

→ 数秒後にはKubernetesが自動で新しいPodを立ち上げて、常に3つになるように調整してくれます。


💡 まとめ

ポイント内容
Replica数同じPodをいくつ動かすか
冗長性Podが落ちてもサービスが継続する仕組み
最低限の推奨本番は2以上(1つでは片肺飛行)
オートスケーリング後述のHPAで自動化可能
ノード分散Podが同じノードに集まりすぎないように注意

Replica数の設計は、サービスの安定稼働を支える第一歩です。特に本番環境では「1つ落ちても大丈夫」という設計が必須となります。シンプルな設定ですが、システム全体の信頼性を大きく左右する重要な要素です。

mh

Related Posts

Kubernetes Learning 第26章:標準的なログ取得方法(kubectl logs)〜Podの中で何が起きているかをのぞいてみよう〜

Kubernetes Learning 第24章:Liveness / Readiness Probe 〜Podの健康チェック〜

You Missed

Google Cloud Platform エンジニア向け教科書:実践から認定まで : はじめに

  • 投稿者 mh
  • 5月 30, 2025
  • 1 views

現場で使えるChrome DevTools実践ガイド 第6章:Sourcesパネルでのブレークポイントとステップ実行

  • 投稿者 mh
  • 5月 30, 2025
  • 11 views

Kubernetes Learning 第26章:標準的なログ取得方法(kubectl logs)〜Podの中で何が起きているかをのぞいてみよう〜

  • 投稿者 mh
  • 5月 30, 2025
  • 3 views

Android application development 第30章:Firebase Crashlytics でのクラッシュレポート

  • 投稿者 mh
  • 5月 30, 2025
  • 3 views

Kubernetes Learning 第25章:Replica数と冗長性の設計 〜止まらないシステムのために〜

  • 投稿者 mh
  • 5月 29, 2025
  • 15 views

Android application development 第29章:キーストアと署名

  • 投稿者 mh
  • 5月 29, 2025
  • 15 views