LoginSignup
1
0

More than 3 years have passed since last update.

GKEでもCluster Autoscalerの動きを意識しよう

Posted at

はじめに

GKEなりEKSなりフルマネージドk8sサービスを使ってるケースだと、ほぼ間違いなくCluster Autoscalerも活用してると思います。

EKSだとCluster Autoscalerを自分でデプロイする必要があります。結構大変ですね。
https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/cluster-autoscaler.html

ですが、GKEだとCluster Autoscalerの部分までマネージドなので、ものすごく簡単にAutoscalerを設定できます。以下、公式の引用です。

自動スケーリングを使用してクラスタを作成するには、--enable-autoscaling フラグを使用して --min-nodes と --max-nodes を指定します。

このように、オプションをいくつか指定するだけです。Cloud Console経由で作成する場合でもチョンチョンチョンくらいで設定できます。
とても簡単に設定できてよろしいのですが、だからこそCluster Autoscalerの存在を意識せずに運用している人も多いのではないでしょうか?

そもそもGKEのCluster Autoscalerとは何なのか

フルマネージド故に普段意識することはないですが、Cluster Autoscalerの実態はこいつです。

Cluster Autoscalerのログの見方

GKE Cluster Autoscalerのログはstackdriver loggingで見ることができます。

詳しくはここに書いてありますね。
https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-autoscaler-visibility

例えば以下のようなイベントログを見ることができます。

イベント 説明
status 定期的にnodeの状態を取得
scaleUp スケールアップ時に発生
scaleDown スケールダウン時に発生
noScaleUp 何らかの理由でスケールアップできない時に発生

GKEにおけるexpanderの動作

expanderとは、「どのような基準でclusterをスケールアップするか」というルールですね。詳しくは以下。

cluster autoscalerそのもののデフォルトとしては、randomというルールが設定されます。文字通りランダムに選択されるというルールですね。

ですがGKEだと、priceというルールが適応されます。これは、選択可能なノードプールの内、最もコストの安いノードプールを拡張させるという物です。
この設定のおかげで、プリエンプティブVMで構成されたノードプールが選択可能な場合は、通常のVMよりもプリエンプティブVMが優先して立ち上がる訳ですね。
ちなみに、GKE以外だとpriceは設定できないようです。

最後に

というわけで、GKEにおけるCluster Autoscalerの裏側?に関して簡単に書きました。ちなみに、一応GKEでも自分で(GKEマネージドでない)Cluster Autoscalerをデプロイして動かすことも可能だと思われます(ちょっと工夫は必要)。

1
0
0

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
1
0