kubernetes

minikubeでkubernetes1.9を試してみる

minikube

https://github.com/kubernetes/minikube

ローカル環境でkubernetesを立ち上げることができるソフトウェアです。
Kubernetes1.9が出たのでminikubeを使ってお試し環境を作ろうとしたらちょっとハマったのでメモ。

いつものようにつくってみる(うまくいかない)

$ minikube start --kubernetes-version=v1.9.0
Invalid Kubernetes version.
The following Kubernetes versions are available when using the localkube bootstrapper:
    - v1.8.0
    - v1.7.5
    - v1.7.4
    - v1.7.3
    - v1.7.2
    - v1.7.0
    - v1.7.0-rc.1
    - v1.7.0-alpha.2
    - v1.6.4
    - v1.6.3
    - v1.6.0
    - v1.6.0-rc.1
    - v1.6.0-beta.4
    - v1.6.0-beta.3
    - v1.6.0-beta.2
    - v1.6.0-alpha.1
    - v1.6.0-alpha.0
    - v1.5.3
    - v1.5.2
    - v1.5.1
    - v1.4.5
    - v1.4.3
    - v1.4.2
    - v1.4.1
    - v1.4.0
    - v1.3.7
    - v1.3.6
    - v1.3.5
    - v1.3.4
    - v1.3.3
    - v1.3.0

あれ?まだサポートしていない?
どうもデフォルトの挙動であるlocalkubeを使った方式だとまだv1.9.0には対応していないようだ。

--bootstrapper=kubeadm で作ってみる(うまくいく)

--bootstrapper=kubeadm を指定することでlocalkubeの代わりにkubeadmを使って構築してくれる。

$ minikube start --kubernetes-version=v1.9.0 --bootstrapper=kubeadm
Starting local Kubernetes v1.9.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
Loading cached images from config file.

本当にできているか確認

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.1", GitCommit:"3a1c9449a956b6026f075fa3134ff92f7d55f812", GitTreeState:"clean", BuildDate:"2018-01-04T19:59:01Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T20:55:30Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}

確かに Server Versionが1.9.0になっている。

はまったところ

minikubeで作ったクラスタが既にある場合は、deleteしてから実行しないとうまくいかないことがあった。

$ minikube start --kubernetes-version=v1.9.0 --bootstrapper=kubeadm
Starting local Kubernetes v1.9.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Downloading kubeadm v1.9.0
Downloading kubelet v1.9.0
Finished Downloading kubeadm v1.9.0
Finished Downloading kubelet v1.9.0
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
E1226 16:01:38.782453   98149 start.go:270] Error restarting cluster:  restarting kube-proxy: waiting for kube-proxy to be up for configmap update: timed out waiting for the condition

kube-proxyがうまくアップデートできない

minikubeの状況を確認

$ minikube status
minikube: Running
cluster: Stopped
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.103

ひとまず削除する。

$ minikube delete
Deleting local Kubernetes cluster...
Machine deleted.

これで、上の手順を実行したらうまく動きました。
よくわからないときは一度deleteしましょう。