🐎

Ubuntu22.04(WSL2)にminikubeをインストール

2022/08/24に公開

Introduction

Ubuntu22.04 (WSL2) on Windows10の環境に、minikubeをインストールして、ローカル環境にKubernetes実行環境を構築します。

準備

Ubuntu 22.04(WSL2)にDockerがインストールされているものとします。インストールがまだの場合は、下記の記事を参考にしてください。

また、別の記事ではMicroK8sのインストール手順をまとめています。
https://zenn.dev/dynamitecoolguy/articles/e4f4554c144fb1

手順

asdf

minikubeのインストール方法はいろいろありますが、ここでは構成管理ツールasdfを使うことにします。

asdfのインストールも公式マニュアルに沿って行います。まず、GitHubからasdfをダウンロードしてきます。

Ubuntuコンソール
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.2

.bashrcファイルにasdfの設定を追加します。

Ubuntuコンソール
$ nano ~/.bashrc
~/.bashrc
...()...
↓ 一番最後に以下の三行を追加
# asdf
. ~/.asdf/asdf.sh
. ~/.asdf/completions/asdf.bash

.bashrcの設定を有効にするために、いったんexitコマンドでUbuntuコンソールを終了します。

Ubuntuコンソール
$ exit

再度、Ubuntuコンソールを開き、動作確認を兼ねて、asdfのアップデートを行います(下記はv0.10.2でアップデート済のときの表示例です)。

Ubuntuコンソール
$ 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プラグインを追加します。

Ubuntuコンソール
$ asdf plugin-add minikube
$ asdf plugin-add kubectl

以下のコマンドで現時点の最新バージョン(安定)を確認します。

Ubuntuコンソール
$ asdf latest --all
kubectl 1.25.0  missing
minikube        1.26.1   missing

では、バージョンを指定してインストールします (最新版が問題ある場合や、サポートしていない組み合わせの場合には、最新版ではなく正常に動作するバージョンの組み合わせを指定します)。

Ubuntuコンソール
$ 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

インストールしたバージョンをデフォルト値に指定します。

Ubuntuコンソール
$ 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を起動します。以下のような表示が出ていれば、クラスター起動成功です(初回は起動まで少々時間がかかります)。

Ubuntuコンソール
$ 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すると動きました(艦長、論理的ではありません)。

Ubuntuコンソール
$ minikube stop
$ minikube delete
$ rm -rf ~/.minikube
$ minikube start

Discussion