LoginSignup
5
4

More than 3 years have passed since last update.

[Kubernetes] Kind (Kubernetes in Docker) を試してみた

Posted at

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/

少々待つと完了します。
kubectlKind で作った 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" ...

以上です。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4