メインコンテンツへスキップ
  1. Blogs/

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

4 分
Kubernetes
0222-nnn
著者
0222-nnn
猫が好き
目次

概要
#

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/ ※気がついたらURLが変わってました https://kubernetes.io/ja/docs/tasks/tools/install-kubectl-linux/

  • インストール

    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
    $
    

関連記事

minikubeのコマンド補完を有効にする方法
1 分
Kubernetes
Kubernetes kubectl rollout コマンドでdeploymentをロールバックしてみる
8 分
Kubernetes
Kubernetes kubectl create deploymentでコマンドラインだけでdeploymentを作成してみる
5 分
Kubernetes
Kubernetes kubectl api-resources コマンドでAPI リソースを調べてみる
9 分
Kubernetes
Kubernetes kubectl version コマンドでバージョンを調べてみる
2 分
Kubernetes