前回、Macでkindのインストールして少し使ってみました。今回はもう少しだけ進んで、ノードに割り当てるリソースを定義して、複数ノードのクラスタを構築する方法をメモしておきます。
やってみる
Docker Desktopが割り当てるリソース
Kindを使う場合、Kubernetesクラスターの各ノードはDockerコンテナとして構築されます。そのため、まずはDocker Desktopの設定で、Dockerが利用できるリソースを設定しておきます。適当にCPU 4コア、メモリ 8GBくらいにしておきます。
kindの設定ファイル作成
ドキュメントのConfiguring Your kind Clusterを見ればだいたい分かると思います。
複数ノードの定義
とりあえず、Master1台、Worker1台構成にしてみます。nodes
の要素を増やすだけです。
1 2 3 4 5 |
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: worker |
ノードに割り当てるリソースの定義
kubeadmでクラスタが構築されているので、メモリの割当を定義したい場合は、このIssueのようにしれば一応いけるらしい。ただし、kubelet configuration object is not respected per node in kubeadm currently, only from init
というコメントがあるように、正式な方法ではなさそうですね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane kubeadmConfigPatches: - | kind: InitConfiguration nodeRegistration: kubeletExtraArgs: system-reserved: memory=4Gi - role: worker kubeadmConfigPatches: - | kind: JoinConfiguration nodeRegistration: kubeletExtraArgs: system-reserved: memory=4Gi |
設定ファイルを用いたクラスタの作成
--config
オプションで指定するだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ kind create cluster --name=demo --config=$HOME/kind-config.yaml Creating cluster "demo" ... ✓ Ensuring node image (kindest/node:v1.19.1) ✓ Preparing nodes ✓ Writing configuration ✓ Starting control-plane ️ ✓ Installing CNI ✓ Installing StorageClass ✓ Joining worker nodes Set kubectl context to "kind-demo" You can now use your cluster with: kubectl cluster-info --context kind-demo Not sure what to do next? Check out <https://kind.sigs.k8s.io/docs/user/quick-start/> |
kubectl describe node
で見てみると、ちゃんと割り当てられています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$ kubectl get node NAME STATUS ROLES AGE VERSION demo-control-plane Ready master 76s v1.19.1 demo-worker Ready <none> 41s v1.19.1 $ kubectl describe node demo-control-plane Name: demo-control-plane [...] Allocatable: cpu: 4 ephemeral-storage: 61255492Ki hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 3958900Ki pods: 110 [...] $ kubectl describe node demo-worker Name: demo-worker [...] Allocatable: cpu: 4 ephemeral-storage: 61255492Ki hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 3958900Ki pods: 110 |
以上.
コメント