GKEでクラスターの作成から削除まで

2024-08-31に公開

仕事でGKEを使用する必要があるので、
自分用にまとめていきたいと思います。

便利な機能

  • リリースチャネル
  • Nodeの自動アップデート、自動修復機能
  • Nodeの自動プロビジョニング機能(ノードのインスタンスタイプを自動で決定してくれる)など

Nodeについて

  • GCE(Goole Compute Engine)が利用されている
  • GCEはプリエンプティブルインスタンス(起動時間に24時間制限ありの低コストインスタンス)
  • プリエンプティブルインスタンスの場合、ちゃんと設定しないとNodeが停止することがある
  • プリエンプティブルインスタンスの場合、24時間後に全Nodeが停止する可能性があるため、Preempible-killer(ランダムに徐々にNodeを入れ替える)の利用を検討する

GKE

  • Cloud Loggingがデフォルトで連携
  • 高性能なHttp loadbalancer(Ingress)
  • GPUの利用もできる

NodePoolについて

クラスタ内のNodeにラベル付けし、グルーピングするような機能 ex:

  • vCPU数が多い => NodePoolA
  • メモリ容量が多い => NodePoolB こんな感じでグループ分けできる

GCP SDK

# GCP SDK install
curl https://sdk.cloud.google.com | bash

# gcloudコマンドを使用できるようにシェルを再起動
exec -l $SHELL

# gcloud CLI認証
gcloud init

# GKEで利用可能なk8sのバージョンを確認
gcloud container get-server-config --zone asia-northeast1-a

クラスターを作成

gcloud container clusters create k8s \
--cluster-version 1.29.7-gke.1104000 \
--zone asia-northeast1-a \
--num-nodes 3

# gke-gcloud-auth-pluginが見つからないとエラーになるとき
gcloud components update
gcloud components install gke-gcloud-auth-plugin

# 上記で作成したk8sクラスターにアクセス
gcloud container clusters get-credentials k8s --zone asia-northeast1-a

Fetching cluster endpoint and auth data. kubeconfig entry generated for k8s. 👆のようにk8sの名前になっていればOK


GCPユーザー

# 現在のユーザー確認
gcloud config get-value core/account
# 変更がなかったら環境変数に追加
GCP_USER=`gcloud config get-value core/account`

# 上記のユーザーにクラスタ管理者権限を付与
kubectl create --save-config clusterrolebinding iam-cluster-admin-binding \
--clusterrole=cluster-admin \
--user=${GCP_USER}

clusterrolebinding.rbac.authorization.k8s.io/iam-cluster-admin-binding created 👆このようになればOK


クラスターの削除

gcloud container clusters delete k8s --zone asia-northeast1-a

GKEの詳細情報 https://cloud.google.com/kubernetes-engine/?hl=ja

その他のプライグラウンド

  • 最大5台のインスタンスの起動OK
  • 連続利用時間が4時間まで

https://labs.play-with-k8s.com/