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
コメント