LoginSignup
0

More than 1 year has passed since last update.

GKEを整理したい : ノードプールについて

Posted at

前書き

Google Kubernetes Engine (GKE)はGoogle Cloudのサービスの1つで、
コンテナオーケストレーションツールであるKubernetes (K8s)を用いた、コンテナのデプロイ、管理及びスケーリングが行えるサービスです

オンプレでのK8s運用に比べると様々なことが簡単に行えるとのこと
ただ、それでも様々な機能があるゆえになかなか最初は理解しにくいです

ですので、特定の機能に絞り、自分なりの理解を整理します
今回はStandardモードのクラスタにおける、ノードプールについてです
※ Autopilotモードにおいては、ノードは自動管理されます(ドキュメント

ノードプール

ノードプールとは、クラスタ内において、ノードをグルーピングして管理するための仕組みです
1つのノードプール内のノードは全て同じ構成で、ノードのスケーリングやアップデートをひとまとめに管理することができます

ノードのマシンタイプに応じて、ローカルSSDやGPUの設定もノードプールにて行います

クラスタ作成時の制約

クラスタ作成時は必ず1のノードプールを作成する必要があります
またこの時、コンソール・gcloudコマンド共にノード数を0とすることはできません

クラスタ作成後にノード数を0とすることは可能です

# クラスタ作成直後のノード
$ kubectl get node
NAME                                                  STATUS   ROLES    AGE   VERSION
gke-dohara-test-clus-dohara-test-node-980897df-srtc   Ready    <none>   78m   v1.23.8-gke.1900

# ノード数を0個に
$ gcloud container clusters resize dohara-test-cluster --node-pool dohara-test-nodepool01 --num-nodes 0
Pool [dohara-test-nodepool01] for [dohara-test-cluster] will be resized to 0.

Do you want to continue (Y/n)?  Y

Resizing dohara-test-cluster...done.
Updated [https://container.googleapis.com/v1/projects/solid-pact-363008/zones/asia-northeast1-a/clusters/dohara-test-cluster].

# クラスタ内のノードが0に
$ kubectl get node
No resources found

Kubernetesラベル

各ノードにはノードプール名やマシンタイプ、配置可能なPod数など、ノードプールに関する設定がラベルとして付与されています
ノードプール名についてはcloud.google.com/gke-nodepoolで付与されます

また、ノードプールの設定から任意のラベルを付与することもできます

gcloudコマンド(ドキュメント

gcloud container node-pools update ${ノードプール名} --cluster ${クラスタ名} --node-labels hoge=hoge

ノードのスケーリング

手動でのスケーリング

各ノードグループのノード数は手動で変更することが可能です

gcloudコマンド(ドキュメント

gcloud container clusters resize ${ノードプール名} --cluster ${クラスタ名} --num-nodes ${希望ノード数}

クラスタオートスケーラー(ドキュメント

自動的にノード数を調整してくれる機能です

基本的には有効化した後は最小数と最大数を指定するだけですが、
応用設定として、クラスタの設定としてスケーリングの方針を指定すること等も可能です(ドキュメント

ノードのアップグレード

こちらの記事で取り扱っています

その他機能

GKE Sandbox (ドキュメント)

簡単に言うと、コンテナと、ノードのカーネルの間に仲介役を用意することで、コンテナからカーネルを保護する仕組みです

コンテナランタイムはノードにおいて強い権限で稼働していることが多く、
仮に悪意のあるコードがコンテナで実行された場合、その権限をもってノードのシステムコールを利用される可能性があります

GKE SandboxはオープンソースであるgVisorを用いて、カーネルの代わりにコンテナへシステムコールを提供する機能となります

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0