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時間まで