しかつきかふぇ

ちょっとした休憩時間に

openSUSE で Podman を触ってみよう!(K8sはどうなった!?)

やはり何かがおかしい今日この頃。

鹿野です。

・・・・・・。
おかしい。

仕事は今月ず〜っとお休みのはずなんだけど、なぜか仕事してる???

というわけでクリスマスイブ!!
クリスマスツリー、ではなく、うちの観葉植物・・・でもなく、、
ふつーに冬のリコリスの影に隠れたぎーこくんなのでした。

今日は openSUSE Advent Calendar 2022 の 23日目の記事となります。(日付おかしいけどそこは気にしない!
前々回 の記事に引き続いて、 Tumbleweed に Kubernetes をインストールしてみよう!
・・・のはずだったのですが、 諸事情 により、路線変更して Podman に触ってみよう!!
という記事にしていきたいと思います。

※もちろん諸事情の理由から行きます!!!!!!

結局 Kubernetes はどうなった???

はい。いろいろ試しました。
が、にっちもさっちもいかなくなったので、とりあえず棚上げです!!!

openSUSE Tumbleweed には patterns-kubernetes-kubeadm というパッケージが存在します。
基本的にはこれをインストールすれば、確かに kubeadm、kubelet といった必要なものがインストールされるわけです。

というわけで kubeadm init を実行してみます!!

> sudo kubeadm init --cri-socket=/var/run/containerd/containerd.sock --apiserver-advertise-address=192.168.0.99 --pod-network-cidr=10.128.0.0/16
W1224 07:51:08.536731    3035 initconfiguration.go:120] Usage of CRI endpoints without URL scheme is deprecated and can cause kubelet errors in the future. Automatically prepending scheme "unix" to the "criSocket" with value "/var/run/containerd/containerd.sock". Please update your configuration!
[init] Using Kubernetes version: v1.23.4
[preflight] Running pre-flight checks
        [WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may not function correctly
        [WARNING SystemVerification]: missing optional cgroups: blkio
        [WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR ImagePull]: failed to pull image registry.opensuse.org/kubic/kube-apiserver:v1.23.4: output: E1224 07:51:14.025513    3094 remote_image.go:238] "PullImage from image service failed" err="rpc error: code = NotFound desc = failed to pull and unpack image \"registry.opensuse.org/kubic/kube-apiserver:v1.23.4\": failed to resolve reference \"registry.opensuse.org/kubic/kube-apiserver:v1.23.4\": registry.opensuse.org/kubic/kube-apiserver:v1.23.4: not found" image="registry.opensuse.org/kubic/kube-apiserver:v1.23.4"
time="2022-12-24T07:51:14+09:00" level=fatal msg="pulling image: rpc error: code = NotFound desc = failed to pull and unpack image \"registry.opensuse.org/kubic/kube-apiserver:v1.23.4\": failed to resolve reference \"registry.opensuse.org/kubic/kube-apiserver:v1.23.4\": registry.opensuse.org/kubic/kube-apiserver:v1.23.4: not found"
, error: exit status 1
        [ERROR ImagePull]: failed to pull image registry.opensuse.org/kubic/kube-controller-manager:v1.23.4: output: E1224 07:51:18.584372    3132 remote_image.go:238] "PullImage from image service failed" err="rpc error: code = NotFound desc = failed to pull and unpack image \"registry.opensuse.org/kubic/kube-controller-manager:v1.23.4\": failed to resolve reference \"registry.opensuse.org/kubic/kube-controller-manager:v1.23.4\": registry.opensuse.org/kubic/kube-controller-manager:v1.23.4: not found" image="registry.opensuse.org/kubic/kube-controller-manager:v1.23.4"
time="2022-12-24T07:51:18+09:00" level=fatal msg="pulling image: rpc error: code = NotFound desc = failed to pull and unpack image \"registry.opensuse.org/kubic/kube-controller-manager:v1.23.4\": failed to resolve reference \"registry.opensuse.org/kubic/kube-controller-manager:v1.23.4\": registry.opensuse.org/kubic/kube-controller-manager:v1.23.4: not found"
, error: exit status 1
        [ERROR ImagePull]: failed to pull image registry.opensuse.org/kubic/kube-scheduler:v1.23.4: output: E1224 07:51:23.106705    3171 remote_image.go:238] "PullImage from image service failed" err="rpc error: code = NotFound desc = failed to pull and unpack image \"registry.opensuse.org/kubic/kube-scheduler:v1.23.4\": failed to resolve reference \"registry.opensuse.org/kubic/kube-scheduler:v1.23.4\": registry.opensuse.org/kubic/kube-scheduler:v1.23.4: not found" image="registry.opensuse.org/kubic/kube-scheduler:v1.23.4"
time="2022-12-24T07:51:23+09:00" level=fatal msg="pulling image: rpc error: code = NotFound desc = failed to pull and unpack image \"registry.opensuse.org/kubic/kube-scheduler:v1.23.4\": failed to resolve reference \"registry.opensuse.org/kubic/kube-scheduler:v1.23.4\": registry.opensuse.org/kubic/kube-scheduler:v1.23.4: not found"
, error: exit status 1
        [ERROR ImagePull]: failed to pull image registry.opensuse.org/kubic/kube-proxy:v1.23.4: output: E1224 07:51:27.758898    3209 remote_image.go:238] "PullImage from image service failed" err="rpc error: code = NotFound desc = failed to pull and unpack image \"registry.opensuse.org/kubic/kube-proxy:v1.23.4\": failed to resolve reference \"registry.opensuse.org/kubic/kube-proxy:v1.23.4\": registry.opensuse.org/kubic/kube-proxy:v1.23.4: not found" image="registry.opensuse.org/kubic/kube-proxy:v1.23.4"
time="2022-12-24T07:51:27+09:00" level=fatal msg="pulling image: rpc error: code = NotFound desc = failed to pull and unpack image \"registry.opensuse.org/kubic/kube-proxy:v1.23.4\": failed to resolve reference \"registry.opensuse.org/kubic/kube-proxy:v1.23.4\": registry.opensuse.org/kubic/kube-proxy:v1.23.4: not found"
, error: exit status 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher

じゃ〜ん!!
見ての通り、Leap 15.4 で試したときと、ほぼ同じエラーが出てしまいました(汗

どうしてこうなった!?!???

前回ちゃんと追わなかったのでもうすこしちゃんと調べてみた

そもそもこのコンテナレジストリにイメージがないと言われるんですよね。

openSUSE Registry

いや、あるじゃん!! ちゃんとコンテナレジストリあったやん!!

だとすると、 kubic/kube-scheduler ってイメージがないのかな?

いやいや、ふつーにあるじゃん!!!

だとすると・・・自ずと答えは出てくるわけで、案の定と言いますか・・・

コンテナレジストリに v1.23.4 のバージョンのイメージが存在しない!

となるわけですorz (Leap のときもバージョンこそ違うものの同じ理由ぽかった

なんでやねん!??

もうちょいちゃんと調べてみた

実は kubeadm init を叩いた際の別の場所にややおかしな箇所を見つけていました。
どこかというとこの部分。

[init] Using Kubernetes version: v1.23.4

まぁこれが原因で、 v1.23.4 のイメージを落とそうとしたのでしょうけど、これにはそもそもの話がありまして。。。

そもそも kubeadm は v1.24.3 をインストールしようとしたんだけどそれはどこへ行った!??

上の画像を見てもらってもわかるかと思いますね。 patterns-kubernetes-kubeadm に紐付いているのは v1.24.3 だったのです。
ところが実際に動いているものはどういうわけか v1.23.4 っぽい?
しかも何度入れ直しても v.1.23.4 が動いてしまいます。。。

で、コンテナレジストリには v.1.24.3 のイメージだったらちゃんと存在するのにな〜って。

う〜〜〜ん・・・・・。。。
というわけですみませんがここら辺で調査終了とさせていただきます。まるっと。

本題。Podman について

ところで先程の openSUSE Registry のページにこんな表記がありました。

podman pull registry.opensuse.org/kubic/kube-scheduler:v1.23.9

ようはコンテナイメージを podman というコマンドを使って pull してきてね!みたいな話のようですね

というわけで簡単に Podman について調べてみたので、早速試してみようかと。
以下のページがわかりやすく説明されていて、とても参考になりました。

medium.com

Podman とは Docker や Containerd のようなコンテナランタイムなのかな〜と思ったのですが、 Kubernetes で Pod は動かせないらしい。
というか、 Kubernetes のコンテナランタイムには現状なりえないってことなんでしょうね。

・・・なんだかなぁ〜・・・(いや言いたいことは山ほどあるけどここでは割愛!!

基本的には Docker とコマンドが一緒のようですね。というわけで早速試してみたいと思います。

まずは zypper を使ってインストール。

sudo zypper install podman

インストールできたら続いて Docker っぽく Hello world を動かしてみましょう〜

podman run docker.io/hello-world:latest

こんな風に表示されれば OK ですね!

ERRO[0000] User-selected graph driver "btrfs" overwritten by graph driver "overlay" from database - delete libpod local files to resolve.  May prevent use of images created by other tools 
ERRO[0000] User-selected graph driver "btrfs" overwritten by graph driver "overlay" from database - delete libpod local files to resolve.  May prevent use of images created by other tools 
Trying to pull docker.io/library/hello-world:latest...
Getting image source signatures
Copying blob 2db29710123e done  
Copying config feb5d9fea6 done  
Writing manifest to image destination
Storing signatures

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

docker.io のイメージを使用したので、 Docker と同じように表示されるはずです。
(はて?一番上のエラーは何だろっと。←未確認

ついでに pull したイメージも確認してみましょう
podman images で確認します。

> podman images

ERRO[0000] User-selected graph driver "btrfs" overwritten by graph driver "overlay" from database - delete libpod local files to resolve.  May prevent use of images created by other tools 
REPOSITORY                                           TAG         IMAGE ID      CREATED        SIZE
registry.opensuse.org/kubic/kube-controller-manager  v1.24.3     4e8306ed345f  27 hours ago   145 MB
registry.opensuse.org/kubic/kube-controller-manager  v1.23.9     943caf147096  27 hours ago   172 MB
docker.io/library/hello-world                        latest      feb5d9fea6a5  15 months ago  19.9 kB

ふつーに Docker っぽく使えますね!

最後に

はぁ〜・・・。
本日のお話はこれにて終了とします。

openSUSE Tumbleweed で Kubernetes を動かそうとしても、とりあえず今は動きませんでしたっと。

が、なんとなくですが、、そのうち修正されるような気がしますね。はい。

最後に宣伝!

「Geeko Magazine Special Edition 2022 冬」に 一年ぶり に寄稿させていただきました。

blog.geeko.jp

いつものように、私の記事は一番最後の小説です(笑)
こんなやつ??? 注:挿絵イラストのカラー版です

まだ本編小説は未公開となっていますが、そのうちリンクする小説をどこかで公開する予定です。
その際は追って報告いたします!