[Kubernetes]Kubeadm-dindを使ってローカルにマルチノード環境を用意する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンニチハ、千葉です。

Minikubeを利用すると、シングルノードのkubernetes環境をローカルに簡単に構築することができます。

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」を読んでいるのですが、検証環境としてガンガン使っていきたいと思います。

参考