去年の年末あたりからそろそろk8sから逃れられないと感じ始めたので2020年は遂にk8sを始めます。
ということで今年最初の記事はmacOSにminikubeをインストールするところまでです。
macOSにminikubeをインストールする流れは以下の通りです。
- kubectlのインストール
- minikubeのインストール
kubectlのインストール
以下にドキュメントに従うと最新バージョンがインストールされることになるが
最初からkubectlもバージョン管理した方がいいと思うのでkubectlのバージョンを管理するツールを探すところから始めましょう
それで見つかった記事がこれ
https://medium.com/faun/using-different-kubectl-versions-with-multiple-kubernetes-clusters-a3ad8707b87b
上記の記事で紹介されてたのがasdf
asdf
asdfを使って最新の安定バージョン(2020年1月4日現在v1.17.0)のkubectlをインストールします。
※厳密にいうとasdfのkubectlプラグインを使ってになります。
ちなみに最新の安定バージョンの情報はここにあります
https://storage.googleapis.com/kubernetes-release/release/stable.txt
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.7.6
$ echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bashrc
$ echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc
$ source ~/.bashrc
$ asdf plugin-add kubectl
$ asdf install kubectl 1.17.0
$ asdf list kubectl
1.17.0
とりあえずグローバルでv1.17.0を使うようにします
$ asdf global kubectl 1.17.0
$ kubectl version --short --client
Client Version: v1.17.0
minikubeのインストール
minikubeは単一のバイナリファイルとして用意されているのでhomebrewを使わずに以下のコマンドでインストールします
ちなみに2020年1月4月現在以下のコマンドだとv1.6.2のminikubeがインストールされます
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 && sudo install minikube-darwin-amd64 /usr/local/bin/minikube
$ minikube version
minikube version: v1.6.2
commit: 54f28ac5d3a815d1196cd5d57d707439ee4bb392
kubectlのバージョンとk8sのバージョンには以下のようの関係性があるので注意が必要です!!
※だからこそkubectlのバージョン管理が必要になってきます
You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.2 client should work with v1.1, v1.2, and v1.3 master. Using the latest version of kubectl helps avoid unforeseen issues.
つまり今回kubectlのバージョンがv1.17.0なのでk8sのバージョンはv1.16.x 〜 v1.18.xであるべきということです。
とりあえずminikubeのv1.6.2のk8sのバージョンは確認します
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready master 5m45s v1.17.0
単純にminikube start
したらv1.17.0が入ってくれました。
ただ少し調べてみるとminikube start
時にk8sのバージョンを指定することができるようなので以下のコマンドでminikubeで作られるk8sのバージョンをv1.17.0に指定しました
$ minikube start --kubernetes-version v1.17.0
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready master 28m v1.17.0
とりあえずmacOS上にk8sクラスタ環境ができました。
この環境を使って今後色々試していきたいと思います。