gke-reliability について
gke-reliabilityは、GKEクラスターとワークロードの可用性を高める設定手順を、主に本番環境の運用担当者向けに提供します。Podの分散、ヘルスプローブ、グレースフルシャットダウン、メンテナンス時間を扱います。
主な機能
- 01クラスターのリージョンとノード分散の確認
- 02Pod Disruption Budgetの設定
- 03コンテナのヘルスプローブ確認
- 04トポロジー分散とメンテナンス時間の設定
活用シーン
- 01ノード更新中のサービス停止を抑制
- 02本番ワークロードのヘルスプローブを点検
- 03GKE自動アップグレードの時間帯を設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ googlecloudplatform/ gke-mcp --skill gke-reliabilityインストール後、Claude Code で/gke-reliabilityを入力して読み込まれたか確認します。
詳細
GKE の信頼性に関するスキル
このスキルでは、高可用性と信頼性を実現するために、GKE クラスターとワークロードを構成するワークフローを紹介します。
ワークフロー
1. クラスターの高可用性を確認する
クラスターがリージョナルであるか、ノードプールが複数のゾーンにまたがっているかを確認します。
コマンド:
gcloud container clusters describe <cluster-name> --region <region> --format="json(location, locations)"
location がリージョン(例:us-central1)の場合、コントロールプレーンはリージョナルです。
locations に複数のエントリがある場合、ノードは複数のゾーンに分散しています。
2. Pod Disruption Budget(PDB)を構成する
PDB は、ノードのアップグレードなど、任意の中断が発生している間に、最低限の数のポッドが利用可能であることを保証します。
既存の PDB を確認する:
kubectl get pdb -n <namespace>
マニフェストの例:
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: my-app-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: my-app
3. ヘルスプローブを構成する
本番環境のすべてのコンテナに、Liveness、Readiness、および必要に応じて Startup プローブが設定されていることを確認します。
- Readiness プローブ:コンテナがトラフィックを受け入れる準備ができたことを判定します。
- Liveness プローブ:コンテナを再起動するタイミングを判定します。
- Startup プローブ:アプリの起動が完了するまで、Liveness と Readiness のチェックを無効にします。
ワークロードのプローブを確認する:
kubectl get deployment <app-name> -n <namespace> -o yaml | grep -E "livenessProbe|readinessProbe|startupProbe"
4. グレースフルシャットダウン
アプリケーションが SIGTERM シグナルを適切に処理し、terminationGracePeriodSeconds が適切に設定されていることを確認します(デフォルトは 30s です)。
5. トポロジー分散制約
関連する障害を避けるため、ポッドがゾーンまたはノードに分散されていることを確認します。
マニフェストの記述例:
spec:
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule # or ScheduleAnyway
labelSelector:
matchLabels:
app: my-app
6. メンテナンス時間枠と除外期間
ピーク時間を避けるため、GKE が自動アップグレードを実施できる時間帯を構成します。
メンテナンス時間枠を設定するコマンド:
gcloud container clusters update <cluster-name> \
--region <region> \
--maintenance-window-start <start-time> \
--maintenance-window-recurrence "FREQ=DAILY"
ベストプラクティス
- リージョナルクラスター:ゾーン障害に備えるため、本番環境のワークロードには必ずリージョナルクラスターを使用します。
- すべてのコンテナにプローブを設定する:本番環境のポッドに含まれるすべてのコンテナに、少なくとも Readiness プローブを設定します。
- 重要なアプリには PDB を設定する:自動ノードアップグレード中のダウンタイムを防ぐため、PDB を使用します。
- ゾーン間で分散する:リージョナルクラスターであっても、ポッドがゾーン間で分散されるように、必ず
topologySpreadConstraintsを使用します。 - メンテナンスをスケジュールする:トラフィックが少ない時間帯にアップグレードが実施されるよう、メンテナンス時間枠を設定します。