ローカル環境においてKubernetesクラスタの動作検証するときの手段の1つとしてkindがある。 kindはdocker in dockerの仕組みを利用して簡単にkubernetesクラスタを構築・利用することができる。
クラスタノードを制御する
kindはマルチノードクラスタにも対応しており、複数のノードで構成されたクラスタを構築することができる。 また、ノードごとにKubernetesバージョンを指定したり、ディスクマウントやポートマッピングを設定したり、ノードへのラベル付けやkubeadmに追加のパラメータを渡すこともできる。 これによりある程度複雑なクラスタを構成することができる。
ノードのリソースは制御できない
kindでクラスタを構築するときに制御できない要素としてノードリソースがある。 例えば、CPU、メモリ、ストレージなどはkindを実行するホストのリソースがすべて渡される。8GBメモリのVM上で3つのノードで構成されるクラスタを構築するとき、ノード毎のメモリを2GBに制限するみたいなことはできない。すべてのノードがホストリソースを共有することになる。
kubeletのオプションとして system-reservedなどを指定する方法も提案されているが、これはあくまでシステム(OS)向けの設定なのでクラスタ上に作成するpodの割り当てを制御することはできない。
また、kindは複数ホストで分散して実行することはスコープ外としている。 このため、ノードごとに必要なリソースをVMで作成して複数VMでクラスタを構築する、ということはkindでは実現できない。
こういった課題を解決するため、kubeletに新しいオプションを定義してリソースを制限できるようにすることが提案されている。 こういったオプションが実装されて始めてホストリソース以外のリソース制限を適用できるようになる。