Ubuntu22.04(WSL2)にminikubeをインストール
Introduction
Ubuntu22.04 (WSL2) on Windows10の環境に、minikubeをインストールして、ローカル環境にKubernetes実行環境を構築します。
準備
Ubuntu 22.04(WSL2)にDockerがインストールされているものとします。インストールがまだの場合は、下記の記事を参考にしてください。
また、別の記事ではMicroK8sのインストール手順をまとめています。
手順
asdf
minikubeのインストール方法はいろいろありますが、ここでは構成管理ツールasdfを使うことにします。
asdfのインストールも公式マニュアルに沿って行います。まず、GitHubからasdfをダウンロードしてきます。
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.2
.bashrcファイルにasdfの設定を追加します。
$ nano ~/.bashrc
...(略)...
↓ 一番最後に以下の三行を追加
# asdf
. ~/.asdf/asdf.sh
. ~/.asdf/completions/asdf.bash
.bashrcの設定を有効にするために、いったんexitコマンドでUbuntuコンソールを終了します。
$ exit
再度、Ubuntuコンソールを開き、動作確認を兼ねて、asdfのアップデートを行います(下記はv0.10.2でアップデート済のときの表示例です)。
$ asdf update
HEAD is now at 7e7a1fa chore: release 0.10.2 (#1233)
Updated asdf to release v0.10.2
minikubeインストール
それでは、asdfを使って、minikubeをインストールします。
まず、asdf用のminikubeプラグインとkubectlプラグインを追加します。
$ asdf plugin-add minikube
$ asdf plugin-add kubectl
以下のコマンドで現時点の最新バージョン(安定)を確認します。
$ asdf latest --all
kubectl 1.25.0 missing
minikube 1.26.1 missing
では、バージョンを指定してインストールします (最新版が問題ある場合や、サポートしていない組み合わせの場合には、最新版ではなく正常に動作するバージョンの組み合わせを指定します)。
$ asdf install minikube 1.26.1
####################################### 100.0%
$ asdf install kubectl 1.25.0
Downloading kubectl from https://dl.k8s.io/release/v1.25.0/bin/linux/amd64/kubectl
インストールしたバージョンをデフォルト値に指定します。
$ asdf global minikube 1.26.1
$ asdf global kubectl 1.25.0
$ asdf current ← 念のためバージョン確認
kubectl 1.25.0 /home/hogehoge/.tool-versions
minikube 1.26.1 /home/hogehoge/.tool-versions
minikube起動
以下のコマンドでminikubeを起動します。以下のような表示が出ていれば、クラスター起動成功です(初回は起動まで少々時間がかかります)。
$ minikube start
😄 minikube v1.26.1 on Ubuntu 22.04
✨ Automatically selected the docker driver. Other choices: none, ssh
📌 Using Docker driver with root privileges
👍 Starting control plane node minikube in cluster minikube
🚜 Pulling base image ...
💾 Downloading Kubernetes v1.24.3 preload ...
> gcr.io/k8s-minikube/kicbase: 386.60 MiB / 386.61 MiB 100.00% 3.35 MiB p
> preloaded-images-k8s-v18-v1...: 405.75 MiB / 405.75 MiB 100.00% 3.31 Mi
🔥 Creating docker container (CPUs=2, Memory=12800MB) ...
🐳 Preparing Kubernetes v1.24.3 on Docker 20.10.17 ...
▪ Generating certificates and keys ...
▪ Booting up control plane ...
▪ Configuring RBAC rules ...
🔎 Verifying Kubernetes components...
▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟 Enabled addons: storage-provisioner, default-storageclass
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
Troubleshooting
minikube startできない
minikube startしたとき、以下のような表示が出て開始できない場合があります(条件はよく分かっていない)。
stderr:
W0826 08:27:40.090971 1479 initconfiguration.go:120] Usage of CRI endpoints without URL scheme is deprecated and can cause kubelet errors in the future. Automatically prepending scheme "unix" to the "criSocket" with value "/var/run/cri-dockerd.sock". Please update your configuration!
[WARNING Swap]: swap is enabled; production deployments should disable swap unless testing the NodeSwap feature gate of the kubelet
[WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
[WARNING DirAvailable--var-lib-minikube-etcd]: /var/lib/minikube/etcd is not empty
error execution phase certs/apiserver-kubelet-client: [certs] certificate apiserver-kubelet-client not signed by CA certificate ca: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "minikubeCA")
To see the stack trace of this error execute with --v=5 or higher
ひとまず怪しそうなものを全部削除して、もう一度minikube startすると動きました(艦長、論理的ではありません)。
$ minikube stop
$ minikube delete
$ rm -rf ~/.minikube
$ minikube start
Discussion