【k8s】Kubernetes ~ MicroK8s / 環境構築編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2024/01/02/005053

で、MinikubeによるKubeneticsの環境構築した。
今回は、MicroK8s ってのがあるらしいので
Windows/WSL環境で、試してみた。

ちなみに、MicroK8s を知ったきっかけだが、
以下のWSLを起動したときのメッセージで知った。
こういったメッセージは普段うっとおしいが
今回は、いいきっかけになった。
# なお、うっとおしい場合、"touch /home/user/.hushlogin" で消せる

WSLを起動したときのメッセージ

Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.146.1-microsoft-standard-WSL2 x86_64)
・・・
 ↓★このメッセージで知った★
 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
   just raised the bar for easy, resilient and secure K8s cluster deployment.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

This message is shown once a day. To disable it please create the
/home/user/.hushlogin file.

目次

【1】MicroK8s
【2】Minikubeとの違い
【3】構築手順
 1)WSLインストール / Ubuntuインストール
 2)systemd の有効化
 3)MicroK8s インストール
 4)構築状況確認
 5)ダッシュボード表示
【4】任意設定
 1)kubectlでのエイリアス設定
 2)sudo なし実行

【1】MicroK8s

* ローカル環境で実行するように設計された
 軽量Kubernetesディストリビューション
* マイクロ ケー エイト エス

【2】Minikubeとの違い

項目 Minikube microk8s
初期起動 minikube startが必要 はインストールすると自動的にシングルクラスターが立ち上がる

【3】構築手順

* 以下のサイトを参考にした

https://microk8s.io/docs/install-wsl2

1)WSLインストール / Ubuntuインストール

* 以下の関連記事を参照

WSL2 ~ Docker-CE / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2021/11/14/224428
WSL ~ Docker-CE + Genie / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2021/11/03/003836

# Update WSL
wsl --update
wsl --set-default-version 2

2)systemd の有効化

# systemd 有効
echo -e "[boot]\nsystemd=true" | sudo tee /etc/wsl.conf

# WSL再起動
wsl --shutdown
wsl

3)MicroK8s インストール

$ sudo apt update

# snapがなければ、snapインストール
# $ sudo apt install snapd

# MicroK8s インストール
$ sudo snap install microk8s --classic
# 特定のVersionをインストールしたい場合
# sudo snap install microk8s --channel=1.25/stable --classic

4)構築状況確認

# クラスタにインストールされているアドオンの状態を表示
$ sudo microk8s status --wait-ready
microk8s is running
high-availability: no
  datastore master nodes: 127.0.0.1:19001
  datastore standby nodes: none
addons:
  ・・・

sudo microk8s kubectl get node -o wide

5)ダッシュボード表示

# Add-on を有効化
sudo microk8s enable dns
sudo microk8s enable storage
sudo microk8s enable dashboard


$ sudo microk8s dashboard-proxy
...
Waiting for secret token (attempt 0)
Dashboard will be available at https://127.0.0.1:10443
Use the following token to login:
xxxxxxxxx...

# ブラウザで以下にアクセスし、
# 表示されているTokenを使ってログインする

https://127.0.0.1:10443

6)Nginx起動

sudo microk8s kubectl create deploy --image nginx --replicas 2 nginx

sudo microk8s kubectl get deploy,svc,pod

【4】任意設定

「sudo microk8s kubectl get deploy,svc,pod」だと、
本番運用に使えないし、何より長いので、
「kubectl get deploy,svc,pod」で実行できるようにする

1)kubectlでのエイリアス設定

「microk8s kubectl」⇒「kubectl」で実行できるように
エイリアス設定する

設定例
https://stackoverflow.com/questions/73157526/microk8s-kubectl-alias

# Yeah, there is a way to create an alias for kubectl in microk8s, run this command
# and you will be able to use kubectl directly.
$ sudo snap alias microk8s.kubectl kubectl
Added:
  - microk8s.kubectl as kubectl

# To confirm
$ sudo kubectl get deploy,svc,pod

2)sudo なし実行

ついでに、sudo なし実行でいるようにする

 やり方だが、例えば、
sudoなしで「kubectl get deploy,svc,pod」を実行すると
丁寧にやりかたを教えてくれる

sudoなしで実行した場合

$ kubectl get deploy,svc,pod
Insufficient permissions to access MicroK8s.
You can either try again with sudo or add the user user to the 'microk8s' group:

    sudo usermod -a -G microk8s user
    sudo chown -R user ~/.kube

After this, reload the user groups either via a reboot or by running 'newgrp microk8s'.

設定例

とはいえ、やったことは、以下の関連記事でやった感じでできる

https://dk521123.hatenablog.com/entry/2023/11/22/000000

# Step1: ユーザーアカウントの情報を変更 (user部分は、使用ユーザ)
$ sudo usermod -a -G microk8s user

# [補足]
# usermod コマンド: ユーザーアカウントの情報を変更する
#  -a (--append) : 「-G」オプションで指定したグループをセカンダリーグループに追加する
#  -G (--groups): GROUP    セカンダリーグループを変更する

# Step2: 隠しディレクトリ「.kube」の権限を使用ユーザに変更
sudo chown -R user ~/.kube

# Step3: 自分のグループを一時的にmicrok8sへ変更する
$ newgrp microk8s

# To confirm
$ kubectl get deploy,svc,pod

参考文献

https://devops-blog.virtualtech.jp/entry/20221222/1671677112

関連記事

KubernetesLinux / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2024/01/02/005053
KubernetesWindows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/05/01/000000
Kubernetes ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/27/224624
Kubernetes ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/05/04/013529
KubernetesKubernetes Dashboard
https://dk521123.hatenablog.com/entry/2023/05/27/144144
Kubernetes ~ 基本編 / minikube ~
https://dk521123.hatenablog.com/entry/2023/05/07/214515
Kubernetes ~ 基本編 / kubectlコマンド ~
https://dk521123.hatenablog.com/entry/2022/01/12/110555
WSL2 ~ Docker-CE / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2021/11/14/224428
WSL ~ Docker-CE + Genie / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2021/11/03/003836
WSL2 ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/01/29/000000
Docker ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2017/09/23/235818
Docker ~ docker を sudo なしで実行する ~
https://dk521123.hatenablog.com/entry/2023/11/22/000000