Kubernetes

Window10(WSL)にminikubeを設定してKubernetesを動かす

概要

Kubernetes環境をDocker desktopからWSL+minikubeに移行したくて
minikubeのインストールする方法を調べた際のメモ

環境

  • WSL2(WSL バージョン: 1.2.5.0)
  • Window10(10.0.19045.3448)

前提

  • WSL2 インストール済み
  • Docker desktop アンインストール済み

minikubeについて

Minikubeとは、Kubernetes公式コミュニティで開発・運用されており
小規模なKubernetes環境を作成するために作られたパッケージみたい

https://kubernetes.io/ja/docs/setup/learning-environment/minikube/

ホストマシン(Nodes)にコンテナかVMで構築が選択できるみたいです
簡単に設定できるDockerを使ってみます

手順

docker 設定

WSLにDokcerをインストールする手順は以下ですね

Install Docker Engine on Ubuntu
https://docs.docker.com/engine/install/ubuntu/
https://docs.docker.com/engine/install/ubuntu/#uninstall-docker-engine

  • Dokcer アンインストール

手順通り既にインストールしているものを一旦削除
※バージョンが問題ない場合、これは不要

#競合するパッケージをすべてアンインストールします。
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

#アンインストールで削除されないディレクトリの削除
$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd
  • docker インストール
    ##Docker の Apt リポジトリをセットアップ
    ##Add Docker's official GPG key:
    sudo apt-get update
    sudo apt-get install ca-certificates curl gnupg
    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    sudo chmod a+r /etc/apt/keyrings/docker.gpg
    ##Add the repository to Apt sources:
    echo \
    "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
    "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    ##Docker パッケージをインストール
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • docker インストール確認
    docker version
    docker run hello-world
    sudo docker ps -a

docker 自動起動設定

WSL起動毎にdockerを手動で起動したくないのでsystemdで自動起動を設定

  • 手順は以下
    https://learn.microsoft.com/ja-jp/windows/wsl/wsl-config#systemd-support

  • systemdを有効にする(WSL上作業)

    # wsl.confの作成してsystemdを有効にする
    # ※ファイルがなければ新規作成する
    vi /etc/wsl.conf
    cat /etc/wsl.conf
    [boot]
    systemd=true
  • wsl再起動(コマンドプロンプト)

    wsl --shutdown
  • docker の自動起動設定(WSL上作業)

    ## dockerを自動起動を設定
    systemctl enable docker
    # 自動起動設定の確認
    systemctl is-enabled docker
    # dokcerが起動しているか確認
    # 「 Active: active (running)」ならOK
    systemctl status docker
    # 起動していなければ以下で起動
    systemctl start docker

minikube 設定

minikubeのインストールはとても簡単でした

公式サイトで自分の環境にあった項目を選択すると
インストールに必要なコマンドが表示されるので
それを実行するだけ

minikube start
https://minikube.sigs.k8s.io/docs/start/

  • minikubeのインストール

    ## WSL(Debian)以下を実行
    curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
    sudo dpkg -i minikube_latest_amd64.deb
  • インストール後確認

    ## バージョンが表示したらOK
    minikube version

    minikube を触ってみる

  • Kubernetes cluster作成

    minikube start
  • Pod確認

    minikube kubectl -- get po -A

minikube のいろんなコマンド

  • 動いている minikube のAdd-On が見れる

    minikube addons list
  • minikube クラスター削除

    minikube delete
  • minikube クラスター停止
    ※Status が Stopped

    minikube stop
  • 起動
    ※Status が Running

    minikube start

補足

kubectlについて

kubectl がインストールしていないくても"minikube kubectl"コマンドを実行すれば
Kubernetesクラスターと同じバージョンのkubectlがインストールされます。
kubectlをインストールして使うことも可能です。

kubectlのインストールは以下で設定できます

  • 公式サイトの以下通りに実行すればインストールできます
    https://kubernetes.io/ja/docs/tasks/tools/install-kubectl/

  • インストール

    sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
    sudo apt-get update
    sudo apt-get install -y kubectl
  • 確認

    kubectl version

kubectlインストール後すること

コマンド補完があった方が便利なので以下で設定

kubectl Cheat Sheet
https://kubernetes.io/ja/docs/reference/kubectl/cheatsheet/

  • 設定
    source <(kubectl completion bash) # 
    echo "source <(kubectl completion bash)" >> ~/.bashrc 

参考サイト

https://minikube.sigs.k8s.io/docs/start/
https://kubernetes.io/ja/docs/setup/learning-environment/minikube/

補足(追記)

PCが壊れ再作成した際に、以下エラーメッセージが表示されたが、メッセージ内の対処を行うことで解決した。

  • エラー
    $ minikube start -p test
    😄  [test] minikube v1.32.0 on Ubuntu 22.04 (amd64)
    👎  Unable to pick a default driver. Here is what was considered, in preference order:
    ▪ docker: Not healthy: "docker version --format {{.Server.Os}}-{{.Server.Version}}:{{.Server.Platform.Name}}" exit status 1: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version": dial unix /var/run/docker.sock: connect: permission denied
    ▪ docker: Suggestion: Add your user to the 'docker' group: 'sudo usermod -aG docker $USER && newgrp docker' <https://docs.docker.com/engine/install/linux-postinstall/>
    💡  Alternatively you could install one of these drivers:
    ▪ kvm2: Not installed: exec: "virsh": executable file not found in $PATH
    ▪ podman: Not installed: exec: "podman": executable file not found in $PATH
    ▪ qemu2: Not installed: exec: "qemu-system-x86_64": executable file not found in $PATH
    ▪ virtualbox: Not installed: unable to find VBoxManage in $PATH
    ❌  Exiting due to DRV_NOT_HEALTHY: Found driver(s) but none were healthy. See above for suggestions how to fix installed drivers.
    $
  • 対処
    $ sudo usermod -aG docker $USER && newgrp docker
  • 対処後
    $ minikube start -p test
    😄  [test] minikube v1.32.0 on Ubuntu 22.04 (amd64)
    ✨  Automatically selected the docker driver. Other choices: ssh, none
    📌  Using Docker driver with root privileges
    👍  Starting control plane node test in cluster test
    🚜  Pulling base image ...
    💾  Downloading Kubernetes v1.28.3 preload ...
    > preloaded-images-k8s-v18-v1...:  403.35 MiB / 403.35 MiB  100.00% 3.90 Mi
    > gcr.io/k8s-minikube/kicbase...:  453.86 MiB / 453.90 MiB  99.99% 4.35 MiB
    🔥  Creating docker container (CPUs=2, Memory=3900MB) ...
    🐳  Preparing Kubernetes v1.28.3 on Docker 24.0.7 ...
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
    🔗  Configuring bridge CNI (Container Networking Interface) ...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
    🔎  Verifying Kubernetes components...
    🌟  Enabled addons: storage-provisioner, default-storageclass
    🏄  Done! kubectl is now configured to use "test" cluster and "default" namespace by default
    $

人気記事

1

Kubernetes kubectl rollout コマンドでdeploymentをロールバックしてみる 概要 kubectl rollout コマンドでデプロイ履歴を確認してロールバックするやり方 ...

2

  terraformのバージョン管理どうすればいいのか? terraformの複数バージョンを簡単に動かしたい terraformのインストール方法が分からない と、疑問を抱えている人の疑 ...

3

本記事では どんな環境にterraformをインストールできるの? terraformのインストールどうしたらいいの? terraformのどのバージョンをインストールすればいいの? と、困っている人 ...

4

Kubernetes kubectl version コマンドでバージョンを調べてみる 概要 kubectl version は、Kubernetes の Client、Serverのバージョンを確認 ...

-Kubernetes