0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#19.DockerDesktopを使用しないKurbenetes環境を試してみた(Minikube、Kind)

Last updated at Posted at 2025-03-01

はじめに

以前にもKubernetesの記事を投稿してはいたのですが、それらすべてがDockerDesktopを使用して動作していたものなので、
今回はMinikubeとKindを使用してローカルKubernetesの環境を構築していこうと思います。

※#18は修正箇所が多かったので削除しました。

構築環境

OS:

  • Windows 11
    • WSL2 (ubuntu)

事前のWSLの準備

# PowerShell
$ wsl --install -d Ubuntu
$ wsl.exe -d Ubuntu

ユーザー名とパスワードを入力してユーザーを作成します。

Minikube実行まで

$ sudo vi /etc/resolve.conf

nameserver 8.8.8.8に変更 

ubuntuだとsnapが使用できるので以下のコマンドでkubectlのインストール

$ sudo snap install kubectl --classic

リソース不足で起動できないことがあるため、必要に応じてC:\Users\PC_User\.wslconfigの設定変更をします。

公式ドキュメントから抜粋

What you’ll need
・2 CPUs or more
・2GB of free memory
・20GB of free disk space
・Internet connection
・Container or virtual machine manager, such as: Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation

私の場合は以下のように設定しました。

[wsl2]
memory=4GB      # メモリ使用量を4GBに制限
processors=4    # 使用可能なCPUコアを4に制限
swap=2GB        # スワップ領域を2GBに設定
localhostForwarding=true  # ローカルホストへのフォワーディングを有効化

公式ドキュメントはこちら:

  • Minikubeのインストール
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
$ sudo dpkg -i minikube_latest_amd64.deb

Dockerのインストール

  • Ðocker関連のパッケージのアンインストール(競合回避)
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
  • gpgキーの追加
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc 
sudo chmod a+r /etc/apt/keyrings/docker.asc
  • リポジトリの作成
$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • Dockerインストール
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • Minikube実行
    ※root権限では使用できないので一般ユーザで実行します
$ sudo usermod -aG docker $USER && newgrp docker
$ minikube start --driver=docker
  • 各コンポーネント確認
kubectl get pod -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS      AGE
default       hello-minikube-8696bfd944-djtck    1/1     Running   1 (10h ago)   10h
kube-system   coredns-668d6bf9bc-zc8b5           1/1     Running   1 (10h ago)   10h
kube-system   etcd-minikube                      1/1     Running   1 (10h ago)   10h
kube-system   kube-apiserver-minikube            1/1     Running   1 (10h ago)   10h
kube-system   kube-controller-manager-minikube   1/1     Running   1 (10h ago)   10h
kube-system   kube-proxy-g75zz                   1/1     Running   1 (10h ago)   10h
kube-system   kube-scheduler-minikube            1/1     Running   1 (10h ago)   10h
kube-system   storage-provisioner                1/1     Running   3 (53s ago)   10h
  • ノードの確認
kubectl get nodes
NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   10h   v1.32.0

Kind実行まで

  • Kindインストール
$ [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.27.0/kind-linux-amd64
$ sudo mv ./kind /usr/local/bin/kind
$ kind version
  • クラスターの作成
$ kind create cluster --image=kindest/node:v1.32.2@sha256:f226345927d7e348497136874b6d207e0b32cc52154ad8323129352923a3142f 

最新のイメージファイルは以下のリンクから

  • ノードの確認
$ kubectl get nodes
NAME                 STATUS   ROLES           AGE   VERSION
kind-control-plane   Ready    control-plane   49s   v1.32.2
  • マルチノードクラスターの作成
    Kindを使用しているのでマルチノードクラスタの作成もしてみます。
$ kind delete cluster

先ほど作成したクラスターを削除

  • yamlファイルに定義
$ vi Multi-node-clusters.yaml

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
    image: kindest/node:v1.32.2@sha256:f226345927d7e348497136874b6d207e0b32cc52154ad8323129352923a3142f
  - role: worker
    image: kindest/node:v1.32.2@sha256:f226345927d7e348497136874b6d207e0b32cc52154ad8323129352923a3142f
  - role: worker
    image: kindest/node:v1.31.6@sha256:28b7cbb993dfe093c76641a0c95807637213c9109b761f1d422c2400e22b8e87

  • マルチノードクラスターの作成
kind create cluster --config Multi-node-clusters.yaml
  • 各コンポーネント確認
$ kubectl get pod -A
NAMESPACE            NAME                                         READY   STATUS    RESTARTS   AGE
kube-system          coredns-668d6bf9bc-7l7qm                     1/1     Running   0          26s
kube-system          coredns-668d6bf9bc-lk898                     1/1     Running   0          26s
kube-system          etcd-kind-control-plane                      1/1     Running   0          34s
kube-system          kindnet-bfdn9                                1/1     Running   0          24s
kube-system          kindnet-k6ghx                                1/1     Running   0          23s
kube-system          kindnet-tmz5p                                1/1     Running   0          26s
kube-system          kube-apiserver-kind-control-plane            1/1     Running   0          33s
kube-system          kube-controller-manager-kind-control-plane   1/1     Running   0          33s
kube-system          kube-proxy-cd4tj                             1/1     Running   0          24s
kube-system          kube-proxy-rw2kx                             1/1     Running   0          23s
kube-system          kube-proxy-sjz42                             1/1     Running   0          26s
kube-system          kube-scheduler-kind-control-plane            1/1     Running   0          34s
local-path-storage   local-path-provisioner-7dc846544d-rlm5v      1/1     Running   0          26s
  • ノードの確認
$ kubectl get nodes
NAME                 STATUS   ROLES           AGE     VERSION
kind-control-plane   Ready    control-plane   10m     v1.32.2
kind-worker          Ready    <none>          9m55s   v1.32.2
kind-worker2         Ready    <none>          9m54s   v1.31.6

まとめ

感想になるのですがこれらの動作を確認する中で、気になることが次々と増えました。
WSLはVMの扱いなのか?そもそもWSLはどのように環境を分離しているのか?`といった疑問が生まれました。
改めて確認して、時間があれば記事にまとめようと思います。
一つのことを調べると芋づる式に疑問が増えていくのは面白いですね。

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?