Kind とは?
-
Docker
上でKubernetes
を動かすもの -
Kubernetes
の各ノードはコンテナとして動く - 構築が非常に楽(ほぼワンライナー)
- コンテナが動くだけなので環境を汚さない
- 使い捨てしやすいので学習に適している
- etc...
今回の環境
- Ubuntu Server 20.04 on VMware ESXi
いざ挑戦
Kind の入手
シングルバイナリで公開されているのでダウンロードして配置します。
$ curl -L -o kind https://github.com/kubernetes-sigs/kind/releases/download/v0.8.1/kind-$(uname)-amd64
$ sudo chmod +x kind
$ sudo mv kind /usr/bin/kind
$ kind version
kind v0.8.1 go1.14.2 linux/amd64
Kubectl の入手
これもシングルバイナリで公開されているのでダウンロードして配置します。
$ curl -L https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
$ sudo chmod +x kubectl
$ sudo mv kubectl /usr/bin/kubectl
$ kubectl version --short --client
Client Version: v1.18.6
Kind で構築
Kind
用の設定ファイルを作成します。
今回は コントロールプレーン *1
と ワーカーノード *3
で構築します。
kind.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
- role: worker
作成した設定ファイルを Kind
に食わせて構築させます。
$ kind create cluster --config kind.yaml
Creating cluster "kind" ...
✓ Ensuring node image (kindest/node:v1.18.2) 🖼
✓ Preparing nodes 📦 📦 📦 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
✓ Joining worker nodes 🚜
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
Not sure what to do next? 😅 Check out https://kind.sigs.k8s.io/docs/user/quick-start/
少々待つと完了します。
kubectl
を Kind
で作った Kubernetes
に向けるために設定します。
$ kubectl cluster-info --context kind-kind
Kubernetes master is running at https://127.0.0.1:34841
KubeDNS is running at https://127.0.0.1:34841/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
動作確認
実際に構築されたものを確認してみましょう。
$ kubectl get no -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
kind-control-plane Ready master 27m v1.18.2 172.18.0.5 <none> Ubuntu 19.10 5.4.0-42-generic containerd://1.3.3-14-g449e9269
kind-worker Ready <none> 26m v1.18.2 172.18.0.2 <none> Ubuntu 19.10 5.4.0-42-generic containerd://1.3.3-14-g449e9269
kind-worker2 Ready <none> 26m v1.18.2 172.18.0.3 <none> Ubuntu 19.10 5.4.0-42-generic containerd://1.3.3-14-g449e9269
kind-worker3 Ready <none> 26m v1.18.2 172.18.0.4 <none> Ubuntu 19.10 5.4.0-42-generic containerd://1.3.3-14-g449e9269
しっかり4台動いていることが確認できました。
docker ps
で実際に動いているコンテナを確認できます。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b3d0f094fa3 kindest/node:v1.18.2 "/usr/local/bin/entr…" 30 minutes ago Up 29 minutes kind-worker
2dac19ed7ef8 kindest/node:v1.18.2 "/usr/local/bin/entr…" 30 minutes ago Up 29 minutes 127.0.0.1:34841->6443/tcp kind-control-plane
695c6175fdd5 kindest/node:v1.18.2 "/usr/local/bin/entr…" 30 minutes ago Up 29 minutes kind-worker3
8564350b333f kindest/node:v1.18.2 "/usr/local/bin/entr…" 30 minutes ago Up 29 minutes kind-worker2
各ノードがコンテナとして動いていることが確認できます。
コントロールプレーンだけ Kubernetes API
のためにポートが開いています。
後片付け
構築が簡単なので壊すのも簡単です。
$ kind delete cluster
Deleting cluster "kind" ...
以上です。