[Kubernetes]Kubeadm-dindを使ってローカルにマルチノード環境を用意する
コンニチハ、千葉です。
Minikubeを利用すると、シングルノードのkubernetes環境をローカルに簡単に構築することができます。
ですが、マルチノードでの検証をしたかったので、いいのがないか探していました。で、公式ドキュメントをみていると、ローカルにマルチノードkubernetesを構築するKubeadm-dindが紹介されてました。ということで、さっそく環境を作ってみました。
事前準備
まず、Kubeadm-dindという名前なんですが、dindつまり、docker in dockerでkubernetesを起動するようです。なので、ローカルにdockerをインストールする必要があります。また、kubeadmというkubernetesクラスタを構築するツールがあるのですが、こちらも利用しているとのこと。 以下インストール要件なので、適宜インストールしましょう。
- Docker 1.12以上を推奨
- Macの場合はmd5sha1sum:
$ brew install md5sha1sum
- kubectl(k8sと同じバージョンを利用を推奨)
自分の環境を確認してみました。
$ docker -v Docker version 18.03.1-ce, build 9ee9f40 $ kubectl version Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.2", GitCommit:"81753b10df112992bf51bbc2c2f85208aad78335", GitTreeState:"clean", BuildDate:"2018-05-12T04:12:12Z", GoVersion:"go1.9.6", Compiler:"gc", Platform:"darwin/amd64"}
kubectlは1.10なので、kubeadm-didも1.10を指定します。
kubeadm-didによるk8s環境の構築
k8sのバージョンは1.8, 1.9 and 1.10から選択できます。今回は1.10を利用するので、kubeadm-didのシェルのバージョンは1.10を指定します。他のバージョンを利用する場合は、wgetするファイル名のバージョンを変更しましょう。
$ wget https://cdn.rawgit.com/Mirantis/kubeadm-dind-cluster/master/fixed/dind-cluster-v1.10.sh $ chmod +x dind-cluster-v1.10.sh
dockerイメージをダウンロードしクラスタを起動します。
$ ./dind-cluster-v1.10.sh up
kubectl directoryのパスを設定します。このディレクトリにk8sへ接続するためのconfigが入っています。
$ export PATH="$HOME/.kubeadm-dind-cluster:$PATH"
ノードの状態を確認してみます。
$ kubectl get nodes NAME STATUS ROLES AGE VERSION kube-master Ready master 6m v1.10.1 kube-node-1 Ready <none> 5m v1.10.1 kube-node-2 Ready <none> 5m v1.10.1
3ノード起動していますね。次はk8sのダッシュボードが有効になっているのでブラウザでアクセスしてみます。 http://localhost:8080/api/v1/namespaces/kube-system/services/kubernetes-dashboard:/proxy
ダッシュボードが表示されました!
起動、停止、削除は以下のコマンドで実施できます。
## クラスタを再起動する $ ./dind-cluster-v1.10.sh up ## クラスタを停止する $ ./dind-cluster-v1.10.sh down ## コンテナとボリュームを削除する $ ./dind-cluster-v1.10.sh clean
さいごに
ローカル環境にkubernetesのマルチノード環境をさくっと作ることができました。とっても素敵です。オライリーから発売されている「入門 Kubernetes」を読んでいるのですが、検証環境としてガンガン使っていきたいと思います。