🐄

WSL2にMicroK8sをインストール

2022/08/25に公開

Introduction

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

準備

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

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

手順

Ubuntuですので、公式ガイド( https://microk8s.io )にしたがっていけば、さくさくインストールが可能です。

microk8sインストール

以下のコマンドでMicroK8sの安定最新版がインストールされます。

Ubuntuコンソール
$ sudo snap install microk8s --classic

また、以前のバージョンをインストールする場合は、以下の通りになります。

Ubuntuコンソール
$ sudo snap install microk8s --classic --channel=1.22/stable

なお、アップデートは以下のコマンドです。

Ubuntuコンソール
$ sudo snap refresh microk8s

microk8sをsudo無しで実行する

microk8sコマンドをsudo無しで実行できるようにするために、以下のコマンドをを実行します。

Ubuntuコンソール
$ sudo usermod -a -G microk8s $USER
$ sudo chown -f -R $USER ~/.kube
$ newgrp microk8s

microk8s動作確認

microk8sの動作確認を行います。

Ubuntuコンソール
$ microk8s status --wait-ready
microk8s is running
...()...

なお、microk8sの停止と開始は以下のコマンドです。

Ubuntuコンソール
$ microk8s stop                              ← microk8sを停止
Stopped.
$ microk8s start                             ← microk8sを開始
Started.

Add-onの有効化

microk8sのAdd-onとして、dashboard機能などを有効にしてみます。

Ubuntuコンソール
$ microk8s enable dashboard registry ingress rbac

Kubernetesコマンド

kubernetesコマンドは、以下のように実行します。

Ubuntuコンソール
$ microk8s kubectl get all --all-namespaces
NAMESPACE     NAME                                             READY   STATUS    RESTARTS   AGE
kube-system   pod/calico-node-244n6                            1/1     Running   0          3h16m
kube-system   pod/calico-kube-controllers-6679759fd9-tz82d     1/1     Running   0          3h16m
kube-system   pod/metrics-server-5f8f64cb86-cr686              1/1     Running   0          3h2m
kube-system   pod/kubernetes-dashboard-765646474b-5c2pj        1/1     Running   0          3h1m
kube-system   pod/dashboard-metrics-scraper-6b6f796c8d-7s98s   1/1     Running   0          3h1m

NAMESPACE     NAME                                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
default       service/kubernetes                  ClusterIP   10.152.183.1     <none>        443/TCP    3h16m
kube-system   service/metrics-server              ClusterIP   10.152.183.202   <none>        443/TCP    3h2m
kube-system   service/kubernetes-dashboard        ClusterIP   10.152.183.218   <none>        443/TCP    3h2m
kube-system   service/dashboard-metrics-scraper   ClusterIP   10.152.183.26    <none>        8000/TCP   3h2m

NAMESPACE     NAME                         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
kube-system   daemonset.apps/calico-node   1         1         1       1            1           kubernetes.io/os=linux   3h16m

NAMESPACE     NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/calico-kube-controllers     1/1     1            1           3h16m
kube-system   deployment.apps/metrics-server              1/1     1            1           3h2m
kube-system   deployment.apps/kubernetes-dashboard        1/1     1            1           3h2m
kube-system   deployment.apps/dashboard-metrics-scraper   1/1     1            1           3h2m

NAMESPACE     NAME                                                   DESIRED   CURRENT   READY   AGE
kube-system   replicaset.apps/calico-kube-controllers-9969d55bb      0         0         0       3h16m
kube-system   replicaset.apps/calico-kube-controllers-6679759fd9     1         1         1       3h16m
kube-system   replicaset.apps/metrics-server-5f8f64cb86              1         1         1       3h2m
kube-system   replicaset.apps/kubernetes-dashboard-765646474b        1         1         1       3h1m
kube-system   replicaset.apps/dashboard-metrics-scraper-6b6f796c8d   1         1         1       3h1m

ダッシュボードの実行

MicroK8sのダッシュボードAdd-onを実行してみます。終了するときはコンソール上でCtrl+Cを押してください。

Ubuntuコンソール
$ microk8s dashboard-proxy
Checking if Dashboard is running.
Infer repository core for addon dashboard
Waiting for Dashboard to come up.
Create token for accessing the dashboard
secret/microk8s-dashboard-proxy-token created
Waiting for secret token (attempt 0)
Dashboard will be available at https://127.0.0.1:10443
Use the following token to login:
hogehoge

実際には、最後のhogehogeの部分にはログイン用のトークン文字列が表示されます。
ブラウザで https:// 127.0.0.1:10443 にアクセスしたらログイン画面が表示されますので、トークン欄にこの文字列を貼り付けてください。

docker側の設定変更

dockerに、MicroK8sのprivate repositoryを信頼できるレジストリとして登録します。

以下のファイルを作成または編集します。
別記事の手順でdockerをインストールしている場合は、daemon.jsonに"bip"と"fixed-cidr"の設定がしてあるので、その後ろに"insecure-registries"を追加します(fixed-cidrの最後の","を忘れずに)。"bip", "fixed-cidr"の設定が無い場合は、"insecure-registries"の行だけ追加します。

Ubuntuコンソール
$ sudo nano /etc/docker/daemon.json
/etc/docker/daemon.json
{
    "bip": "192.168.96.254/24",
    "fixed-cidr": "192.96.128.0/24",
    "insecure-registries" : ["localhost:32000"]
}

この設定を有効にするために、dockerを再起動します。

Ubuntuコンソール
$ sudo systemctl restart docker

Discussion