Rancher2.x で 起動可能ポッド数 max-pods を変更する方法


毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体も関係ございません。

0. はじめに

KubernetesのワーカーノードでのPodの数は、100とされています。

Building Large Clusters - Kubernetes
https://kubernetes.io/docs/setup/cluster-large/

GKEでは、110です。
Rancher GUIからKubernetesクラスターをデプロイした場合も 110になります。
IPアドレスの/24 CIDRブロック(256アドレス)によるものだと書かれています。

Optimizing IP address allocation  |  Kubernetes Engine  |  Google Cloud
https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr

1. Rancher の場合

Rancher 2.xで Kubernetesクラスターのワーカーノードの Pod数を変更にはどうすればいいでしょうか?
多くしたい場合も、少なくしたい場合もあると思います。
ということで起動可能なPod数を変更する方法について調べました。

注意:
 起動可能Pod数制限は、Kubernetesのkubeletが起動する時に指定します。
 変更する方法は、Pod数制限を変更したKubeletのコンテナーを新しく起動する必要があります。
 Pod数を大きくしすぎてしまうと1ホストで動くPodの起動が多くなりすぎ、ホストダウン時に
 その起動しているPodが全て別のホストに移動することになりますので余裕を持った
 リソース配分をお勧めします。

1-1. Rancher UIでKubernetesをデプロイする場合

このUIで変更できる場合と変更できない場合があります。

上記が、Rancherのクラスター追加画面ですが、以下の青枠で囲んであるものはPod数を変更できます。
赤枠の場合は変更できません。

1-1-1. 変更できないパターン

  • 赤枠のGKE、EKSなどのクラウドと既存クラスターインポート

Rancher UIから変更できません。理由は、各Kubernetesサービス事業者がKubernetesの実行時の設定を指定しているからです。既存のKubernetesをインポートする場合もUIから変更できません。変更したい場合は下の方法で行う必要があります。

1-1-2. 変更できるパターン

  • 青枠側のクラウドとCustomでのインポート

上記の場合、クラスターオプションの上に以下のような「Edit as YAML」というリンクが出てきます。
この機能により設定できます。

上記をクリックすると以下のようにHTMLフォームでの設定ではなく、YAMLで設定することができるようになります。

この画面は、普通のエディターのように編集することができます。
55行目に services: がありますので、kubeletの項目を以下のように追加します。他の項目を消さないよう注意してください。(この例ではPod数を250にしていしています。IPアドレスのレンジも考えて起動可能Pod数を指定してください)

services:
  kubelet:
    extra_args:
      max-pods: 250

1.2 Rancher CLI RKEで変更する場合

RKEで Kubernetes をデプロイしていた場合、1-1-2 同様にrke コマンドで指定するcluster.yml で上記と同じようにmax-pods を指定してください。

services:
  kubelet:
    extra_args:
      max-pods: 250

2. サンプル Cluster.yml ファイル

上記 cluster.yml ファイルのサンプルは以下のページにあります。

Example Cluster.ymls | Rancher Labs
https://rancher.com/docs/rke/v0.1.x/en/example-yamls/