Kubernetesクラスタのオンプレミスノード障害時に、自動的にGCP VMを作成してフェイルオーバーするOperator。
- オンプレミスノードの障害検知(NotReady監視)
- GCP VMの自動作成とクラスタへの参加
- オンプレミスノード復旧時の自動クリーンアップ
| 値 |
付与先 |
意味 |
作用 |
onpremise |
オンプレミスノード |
監視対象 |
NotReady時にGCP VM作成 |
gcp-permanent |
永久的なGCPノード |
Operator配置先 |
Operator Podのスケジュール先 |
gcp-temporary |
自動作成VM |
フェイルオーバーノード |
自動付与、クリーンアップ対象 |
| 値 |
付与先 |
意味 |
作用 |
game-runner |
GameServer実行ノード |
Kata Containers対応 |
Agones nodeSelectorで使用 |
| 値 |
付与先 |
意味 |
作用 |
gcp |
GCP側全ノード |
場所識別 |
統計・監視・スケジューリング制約用 |
# オンプレミスノード
kubectl label node uc-k8s4p node-type=onpremise hardware=game-runner
# GCPノード(Operator配置先)
kubectl label node gcp-worker node-type=gcp-permanent node-location=gcp
以下の値を設定:
GCP_PROJECT_ID: GCPプロジェクトID
GCP_NETWORK: VPC名
GCP_SUBNET: サブネット名
GCP_IMAGE_NAME: カスタムイメージ名
K8S_API_SERVER: APIサーバーアドレス
GCP_NODE_COPY_LABELS: コピーするラベルのカンマ区切りリスト
Service Accountには以下のIAM権限が必要:
| 権限 |
理由 |
roles/compute.instanceAdmin.v1 |
VM作成・削除・起動・停止 |
https://www.googleapis.com/auth/compute - Compute Engine API
gcloud iam service-accounts create node-operator \
--display-name "Node Failover Operator" \
--project YOUR_PROJECT_ID
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
--member="serviceAccount:node-operator@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/compute.instanceAdmin.v1"
gcloud iam service-accounts keys create key.json \
--iam-account=node-operator@YOUR_PROJECT_ID.iam.gserviceaccount.com
kubectl create secret generic gcp-credentials \
--from-file=key.json=./key.json
# 確認
kubectl get secret gcp-credentials