kind(Kubernetes in Docker)とDocker For DesktopのKubernetesの違い

kubernetes

kind(Kubernetes in Docker)と
Docker For DesktopのKubernetesは、
どちらもローカル環境で Kubernetes を動かす仕組みです。

以下は macOS での話です。

違いを一言で言うと

kind はマルチノードサポート
Docker For DesktopのKubernetesはシングルノードのサポートです。

Docker For DesktopのKubernetesで、
クラスターとノードの状態を見てみます。

% kubectl config get-clusters
NAME
docker-desktop
% kubectl get nodes
NAME             STATUS   ROLES    AGE     VERSION
docker-desktop   Ready    master   7m24s   v1.16.6-beta.0

docker-desktop というクラスターと
docker-desktop という master ノードがあります。

Docker For DesktopのKubernetesは、 このクラスタと master ノードが
固定で、別のクラスタを作ったり、別のノードを追加したりはできないです。

しかし、ワーカーノードがないのに
pod(docker containerのようなもの) を追加したら、
どうなるのかと疑問が発生します(通常 pod はワーカーノードに属するため)

PodがどのNodeで起動しているかを確認するには以下のコマンドを打ちます

% kubectl get pods -o wide

結果は、都合により表示できませんが、
マスターノードに所属していることがわかります。

これって、本来の kubernetes の姿ではないですよね。

では、kind でマルチノードをやってみましょう

インストール

$ brew install kind

以下の kind 公式ページに
Multi-node clusters の yml があります。
https://kind.sigs.k8s.io/docs/user/quick-start/

これは、1つのマスターノード(control-plane) と 2つのワーカーノード(worker) を作成する yml です。

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker

これを multi-node-cluster.yml とかに保存して、

クラスターを作成しましょう

% kind create cluster --name multi_cluster --config multi-node-cluster.yml

そうすると、以下のエラーが出て、作れません。
これできないと kind の意味があまりないのに。
よくわかりません。

✗ Starting control-plane 🕹️
ERROR: failed to create cluster: failed to init node with kubeadm: command “docker exec –privileged multi_cluster-control-plane kubeadm init –ignore-preflight-errors=all –config=/kind/kubeadm.conf –skip-token-print –v=6” failed with error: exit status 1

コメント

タイトルとURLをコピーしました