3
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?

More than 1 year has passed since last update.

macOS の podman で kind をやってみる

Last updated at Posted at 2022-05-02

概要

  • kind を一言でいうと、コンテナを k8s ノードと見なしてクラスタを実行させる箱庭的な便利ツール
  • kind を試すのに docker 使うのは普通ですが、 ここはやっぱり podman machine でやってみたい
  • 仕事で使う macOS で kind が動くところまで検証した

検証した環境

macOS のバージョン

$ sw_vers
ProductName:	macOS
ProductVersion:	12.3.1
BuildVersion:	21E258

podman の導入

導入方法は以前書いた以下記事を参照ください :pray:

podman machine による QEMU インスタンスをセットアップする

  • pod を起動すると、リソースを使うので QEMU には大きめにリソースを割り当てておく
  • podman machine init コマンドを使用して初期セットアップを行う
  • podman machin で実行する Fedora CoreOS の仮想マシンイメージ(qcow2)がダウンロードされる
$ podman machine init --cpus 2 --disk-size 20 --memory 8192

作った QEMU インスタンスを起動する

$ podman machine start

正常に起動していることが確認できる

$ podman machine ls
NAME                     VM TYPE     CREATED         LAST UP            CPUS        MEMORY      DISK SIZE
podman-machine-default*  qemu        23 minutes ago  Currently running  2           8.59GB      21.47GB

podman machine との接続設定

  • podman machine への接続エントリが追加されていることが確認できる
  • これらは起動時に自動で追加され、イメージを削除すると自動でエントリも削除される
$ podman system connection list
Name                         URI                                                                Identity                                              Default
podman-machine-default       ssh://core@localhost:57656/run/user/1849830061/podman/podman.sock  /Users/tigerroll/.ssh/podman-machine-default  true
podman-machine-default-root  ssh://root@localhost:57656/run/podman/podman.sock                  /Users/tigerroll/.ssh/podman-machine-default  false

docker 互換のツールと接続するためにDOCKER_HOST に socket のパスを設定する
もちろん、この設定を .bash_profile に追加しても良いだろう

$ export DOCKER_HOST="unix:///Users/${LOGNAME}/.local/share/containers/podman/machine/podman-machine-default/podman.sock"

podman machine のバージョン情報を確認

$ podman version
Client:       Podman Engine
Version:      4.0.3
API Version:  4.0.3
Go Version:   go1.18
Built:        Sat Apr  2 00:28:59 2022
OS/Arch:      darwin/amd64

Server:       Podman Engine
Version:      4.0.3
API Version:  4.0.3
Go Version:   go1.18
Built:        Sat Apr  2 03:21:54 2022
OS/Arch:      linux/amd64

kind コマンドのインストール

brew でインストールする

$ brew install kind

kind のバージョン確認

$ kind --version
kind version 0.12.0

podman で kind を起動する

kind デフォルトの provider は docker なので、KIND_EXPERIMENTAL_PROVIDER にて podman を指定する
この設定を .bash_profile に追加しても良いだろう

$ export KIND_EXPERIMENTAL_PROVIDER=podman

kind の設定ファイルを用意する(4 node 起動する)

$ cat <<'EOF'> kind-1m3w.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
networking:
  disableDefaultCNI: false
nodes:
- role: control-plane
- role: worker
- role: worker
- role: worker
EOF

先程用意したファイルをベースにクラスタを起動する

$ kind create cluster --config kind-1m3w.yaml
using podman due to KIND_EXPERIMENTAL_PROVIDER
enabling experimental podman provider
Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.23.4) 🖼
 ✓ Preparing nodes 📦 📦 📦 📦
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing StorageClass 💾
 ✓ Joining worker nodes 🚜
Set kubectl context to "kind-kind"
You can now use your cluster with:

kubectl cluster-info --context kind-kind

Not sure what to do next? 😅  Check out https://kind.sigs.k8s.io/docs/user/quick-start/

podman ps で node の動作を確認すると正常に node が起動されていることが確認できる

$ podman ps
CONTAINER ID  IMAGE                                                                                           COMMAND     CREATED            STATUS                PORTS                      NAMES
9e3a46da0fb3  docker.io/kindest/node@sha256:0e34f0d0fd448aa2f2819cfd74e99fe5793a6e4938b328f657c8e3f81ee0dfb9              About an hour ago  Up About an hour ago                             kind-worker3
a418ff9339d9  docker.io/kindest/node@sha256:0e34f0d0fd448aa2f2819cfd74e99fe5793a6e4938b328f657c8e3f81ee0dfb9              About an hour ago  Up About an hour ago                             kind-worker
9f188aa52f62  docker.io/kindest/node@sha256:0e34f0d0fd448aa2f2819cfd74e99fe5793a6e4938b328f657c8e3f81ee0dfb9              About an hour ago  Up About an hour ago  127.0.0.1:55153->6443/tcp  kind-control-plane
e0bbda18d4d5  docker.io/kindest/node@sha256:0e34f0d0fd448aa2f2819cfd74e99fe5793a6e4938b328f657c8e3f81ee0dfb9              About an hour ago  Up About an hour ago                             kind-worker2

以上で cluster の構築は完了

kubectl で cluster を操作する

cluster-info で動作できてることを確認

$ kubectl cluster-info --context kind-kind
Kubernetes control plane is running at https://127.0.0.1:55153
CoreDNS is running at https://127.0.0.1:55153/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

get pods -A で全ての pods の状態を取得する

$ kubectl get pods -A
NAMESPACE            NAME                                         READY   STATUS    RESTARTS   AGE
kube-system          coredns-64897985d-gfrdv                      0/1     Pending   0           1m
kube-system          coredns-64897985d-l7nrf                      0/1     Pending   0           1m
kube-system          etcd-kind-control-plane                      1/1     Running   0           1m
kube-system          kube-apiserver-kind-control-plane            1/1     Running   0           1m
kube-system          kube-controller-manager-kind-control-plane   1/1     Running   0           1m
kube-system          kube-proxy-k8hlj                             1/1     Running   0           1m
kube-system          kube-proxy-qgl4x                             1/1     Running   0           1m
kube-system          kube-proxy-qp8cj                             1/1     Running   0           1m
kube-system          kube-proxy-rth6c                             1/1     Running   0           1m
kube-system          kube-scheduler-kind-control-plane            1/1     Running   0           1m
local-path-storage   local-path-provisioner-5ddd94ff66-rq4v7      0/1     Pending   0           1m

kind が動いている :star2:

podman machie 環境で kind を動かした感想

  • podman machine でも kind ができるのはありがたい :pray: 感謝!!
  • 脱 Docker :whale: を求めてる人には、とても相性が良いと思う
  • podman で kind を動かすのは想像よりも簡単だった :smile:
3
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
3
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?