Mímisbrunnr知恵の泉

← クラウドインフラ 一覧

🎓 レベル:発展 | 重要度:A(必須)

📎 前提:Pod・Deployment・ReplicaSet | 関連:コストとスケーリングの考え方キャパシティと信頼性設計

要点(BLUF)

概念 ── 「数」と「中身」の両方を守る

ReplicaSet は「3つ動いている」を守りますが、3つとも内部でフリーズしているかもしれません。プロセスは生きているのに応答しない——これを検知できないと、利用者にはエラーが届きます。そこで K8s は**ヘルスチェック(probe)**で中身の健全性も監視します。

flowchart TB
    subgraph heal["自己修復の2層"]
      rs["ReplicaSet:Pod数を保つ(外形)"]
      probe["Probe:Podの中身が健全か(内実)"]
    end
    probe -->|"liveness 失敗"| restart["コンテナを再起動"]
    probe -->|"readiness 失敗"| drain["Serviceの振り分けから外す"]

仕組み① ── liveness と readiness

probe問い失敗時の動作
livenessプロセスは生きて応答するかコンテナを再起動
readiness今リクエストを受けられるかService の振り分けから外す(再起動はしない)
startup起動完了したか起動が遅いアプリの誤殺を防ぐ

肝は readiness と liveness の違い。起動直後やDB接続待ちの間は「生きてるが受付不可」。ここで liveness を厳しくすると起動中に殺され続ける。受付可否は readiness、生死は liveness と役割を分けます。

# Deployment の containers 内
livenessProbe:
  httpGet: { path: /healthz, port: 80 }
  initialDelaySeconds: 10     # 起動直後は猶予
  periodSeconds: 10
readinessProbe:
  httpGet: { path: /ready, port: 80 }
  periodSeconds: 5

仕組み② ── HPA(水平オートスケール)

HPA はメトリクス(CPU使用率など)を監視し、Pod数を minmax の間で自動調整します。負荷が上がれば増やし、収まれば減らす。調整ループ(Kubernetesの全体像(宣言的・調整ループ))の応用です。

flowchart LR
    metric["メトリクス(CPU平均)"] --> hpa["HPA:目標と比較"]
    hpa -->|"超過なら増やす"| up["replicas 増"]
    hpa -->|"下回れば減らす"| down["replicas 減"]
    up --> metric
    down --> metric
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: web
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web
  minReplicas: 2              # 可用性の床
  maxReplicas: 10             # 暴走の天井
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 60

HPA が CPU を読むには Metrics Server(または相当)がクラスタに要ります(要最新確認)。Pod数でなくノード自体を増減する Cluster Autoscaler と組み合わせると、計算資源そのものも弾力化します。

なぜ自己修復+オートスケールなのか

⚠️ よくある誤解・落とし穴

対応ラボ

cloud-infra-study/labs/04-05_hpa.yaml04-05_probes_patch.yaml(Deployment に liveness/readiness を付け、HPA を定義。負荷をかけて Pod 数が増えるのを観察。Metrics Server 必要・kind/minikube で)。

関連

第4章 Kubernetes 目次