kindというのは,Kubernetesクラスタを簡単に作れるツール.kindは,Kubernetes IN Dockerの略.つまり,KubernetesクラスタがDockerコンテナ上で動作するということになる.
ローカル環境でKubernetesを利用できるツールとしてはminikubeやmicrok8sと同様のもの.但し,kindにはマルチノードクラスタを作れるという他のツールには無い大きな特長がある.また,kindはKubernetesの公式ツールでもある.つまり,Kubernetesの挙動を確認したい場合やCI[Continuous Integration]環境で新しいビルドとリリースプロセスをテストしたいという場合にはkindが適している.
multipassにkindをインストールする.但し,このインストールの前にkubectlのインストールをしておく必要がある.
ubuntu@DEV:/home$ sudo curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-linux-amd64
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 86 100 86 0 0 117 0 --:--:-- --:--:-- --:--:-- 120
100 9697k 100 9697k 0 0 3242k 0 0:00:02 0:00:02 --:--:-- 7121k
ubuntu@DEV:/home$ chmod +x ./kind
ubuntu@DEV:sudo mv ./kind /usr/local/bin/kind
ubuntu@DEV:/home$ kind --version
kind version 0.26.0-alpha+74acdf744a3566
一行目のコマンドで,kindのバイナリをダウンロードしている.次に,ダウンロードしたバイナリに実行権限を付与.そして,ダウンロードしたバイナリを/usr/local/bin/kindディレクトリに移動.
これで,問題なく,kindがインストールされている.
次に,いよいよ,クラスターを作成してみる.
ubuntu@DEV:kind create cluster --image=kindest/node:v1.29.0
Creating cluster "kind" ...
✓ Ensuring node image (kindest/node:v1.29.0)
✓ Preparing nodes
✓ Writing configuration
✓ Starting control-plane
✓ Installing CNI
✓ Installing StorageClass
Set kubectl context to "kind-kind"
クラスターが作成されているかを確認する.
ubuntu@DEV:~$ sudo kubectl cluster-info --context kind-kind
Kubernetes control plane is running at https://127.0.0.1:46537
CoreDNS is running at https://127.0.0.1:46537/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
コントロールプレーンノード[control-plane]はクラスターの管理と制御を担当する特別なノード.APIサーバー,コントローラーマネージャー,スケジューラー等のクラスターを管理するためのコアコンポーネントである.これに対して,アプリケーションコンテナが配置され,実行されるノードはワーカーノードと呼ばれ,このワーカーノードにクラスター内のアプリケーションがデプロイされる.kindではノードをDockerコンテナとして起動される.Dockerコンテナとしてのノードが起動される,その内部でcontainerdが初期化が行われる.そして,KubernetesのAPIサーバーからの要求に応じてPodの実行や管理を行う.コンテナ間でのネットワーク機能はCNI[Container Network Interface]が担う.
また,CoreDNSはKubernetesクラスターのDNSとして機能するDNSサーバーである.
コンテキスト[context]というのは,kubectlがどのKubernetesクラスタと通信するかを示すもの.kindを用いると,新しいコンテキストが自動設定される.
127.0.0.1はネットワークにおいて自分自身のコンピューターに割り当てられたIPアドレス,すなわち,ループバックアドレスの一つ.127.0.0.1を表すホスト名はlocalhostとなる.
なお,IPv4では上記の通り,127.0.0.1が最も一般的に使用されるループバックアドレスとなるが,127.0.0.0から127.255.255.255の全範囲がループバック用として予約されている.また,IPv6では::1[0:0:0:0:0:0:0:1]が使用される.
Mathematics is the language with which God has written the universe.