しかつきかふぇ

ちょっとした休憩時間に

openSUSE で Kubernetes を構築してみよう(2) 〜Leapでは無理!?編〜

なんだろう・・・ほんとにここ最近・・・

鹿野です。
ここ最近、いろいろと釈然としない日々が続いております。。。

休みの日のはずが、全然休めてないというか、トラブル続きというか・・・

それはそうと、ついに出ましたね!

今日はこのお話・・・ではなく、 openSUSE Advent Calendar 2022 9日目 のお話です。

前回 に引き続き、openSUSEKubernetes をインストールするぞ!!

って話のはずだったのだけど、ちょっと待って〜!!という事態に陥ったので、その結果報告をっと。

結論! 現状、Leapではちょっと無理!?

挫折したので、一番はじめに結論を書きました(汗)

そもそも Kubernetes と呼ばれるをインストールするには、

  • kubeadm : ノード構築に必要
  • kubelet : 各ノード内の制御に必要
  • kubectl : コマンド投入に必要

上の3つが必要なわけです。

とりわけ重要なのが kubeadm と呼ばれるもの。
これがないと、そもそもノードが構築できないので、にっちもさっちもいきません。
クラウド上にノードを作れば kubeadm は不要かもしれませんが、その話は今は置いておいて)

で、openSUSE Leap 15.4 では、この kubeadm がインストールできないのではなく、そもそも動かないのです。。。

前回のおさらい

で、 前回 は Docker をインストールして、 kubeadm を叩くところまでやってみました。
その際に出てきたエラーはこんな具合。

error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR KubeletVersion]: the kubelet version is higher than the control plane version. This is not a supported version skew and may lead to a malfunctional cluster. Kubelet version: "1.20.13" Control plane version: "1.18.18"

なにって、 kubeadm と kubelet のバージョンが違うって怒られたわけです(汗)

いやいやちょっと待って。
私がインストールしたのは kubernetes-kubeadmkubernetes-kubelet の2パッケージなわけで、そんなバージョン指定なんてしとらんがな〜!! というのが前回のオチでした。(前回の私の記事を読んでこのオチまで気づいた方がいらっしゃいましたらきっと笑いの才能があると思います。←そういう問題ではない!!

で、今回やってみたことは当然、バージョンを合わせればいいんですよね!
って。

kubeadm, kubelet のバージョンを合わせてみた

こんな風にやってみた。

kubeadm:

kubelet:

つまり、 1.20 系でバージョンを合わせたのです。それ以外のバージョンのものは無印のものも含めて全て削除っと。

これで改めてやってみます!

> sudo kubeadm init --apiserver-advertise-address=192.168.0.99 --pod-network-cidr=10.128.0.0/16
Found multiple CRI sockets, please use --cri-socket to select one: /var/run/dockershim.sock, /var/run/crio/crio.sock
To see the stack trace of this error execute with --v=5 or higher
tsukimi@localhost:~> sudo kubeadm init --cri-socket=/var/run/dockershim.sock --apiserver-advertise-address=192.168.0.99 --pod-network-cidr=10.128.0.0/16
I1210 06:26:27.021047   23112 version.go:254] remote version is much newer: 1.23.4; falling back to: stable-1.20
[init] Using Kubernetes version: v1.20.13
[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 IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
        [WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.17-ce. Latest validated version: 19.03
[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.20.13: output: Error response from daemon: Get "https://registry.opensuse.org/v2/": dial tcp: lookup registry.opensuse.org on [::1]:53: read udp [::1]:57667->[::1]:53: read: connection refused
, error: exit status 1
        [ERROR ImagePull]: failed to pull image registry.opensuse.org/kubic/kube-controller-manager:v1.20.13: output: Error response from daemon: Get "https://registry.opensuse.org/v2/": dial tcp: lookup registry.opensuse.org on [::1]:53: read udp [::1]:55901->[::1]:53: read: connection refused
, error: exit status 1
        [ERROR ImagePull]: failed to pull image registry.opensuse.org/kubic/kube-scheduler:v1.20.13: output: Error response from daemon: Get "https://registry.opensuse.org/v2/": dial tcp: lookup registry.opensuse.org on [::1]:53: read udp [::1]:46388->[::1]:53: read: connection refused
, error: exit status 1
        [ERROR ImagePull]: failed to pull image registry.opensuse.org/kubic/kube-proxy:v1.20.13: output: Error response from daemon: Get "https://registry.opensuse.org/v2/": dial tcp: lookup registry.opensuse.org on [::1]:53: read udp [::1]:36941->[::1]:53: read: connection refused
, error: exit status 1
        [ERROR ImagePull]: failed to pull image registry.opensuse.org/kubic/pause:3.2: output: Error response from daemon: Get "https://registry.opensuse.org/v2/": dial tcp: lookup registry.opensuse.org on [::1]:53: read udp [::1]:59533->[::1]:53: read: connection refused
, error: exit status 1
        [ERROR ImagePull]: failed to pull image registry.opensuse.org/kubic/etcd:3.4.13-0: output: Error response from daemon: Get "https://registry.opensuse.org/v2/": dial tcp: lookup registry.opensuse.org on [::1]:53: read udp [::1]:53328->[::1]:53: read: connection refused
, error: exit status 1
        [ERROR ImagePull]: failed to pull image registry.opensuse.org/kubic/coredns:1.7.0: output: Error response from daemon: Get "https://registry.opensuse.org/v2/": dial tcp: lookup registry.opensuse.org on [::1]:53: read udp [::1]:60041->[::1]:53: read: connection refused
, 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

何が起きたか?
Retired してしまったという Kubic のコンテナレジストリからイメージを落とそうとして、見事失敗してしまったわけですな(汗)

そもそものお話、openSUSE Leap15.4 では Kubernetes の公式パッケージが存在しません。

https://software.opensuse.org/package/kubernetes

ひょっとするとこれが理由で公式パッケージが存在しないのかもしれませんね。

回避策

openSUSE 公式パッケージのものは使えない(と私は判断した)ですが、もうちょい頑張れば以下の方法で Leap でも Kubernetes が使えるかもしれません。

  • snap からインストールする
  • セルフビルドする

実は snap からインストールも試みたのです。
ですが、snap はそもそも Ubuntu 向けに作られてる節があるしで、やはり snap install でえいっとインストールできるかというとそうでもなさそうです。もし openSUSE で snap から Kubernetes を動かしてみたなんてことがありましたら、ぜひご報告を。

次回。

いやどうしようか・・・と思ったのですが、ここまで来たら最後の手段。

Tumbleweed に zypper でインストールしてみよう!

で行ってみようと思います。

・・・というのも、上のをみるとどういうわけか Leap 15.4 のパッケージはなくても、 Tumbleweed のパッケージなら存在するっぽいのです。(そもそも遠山先生のご報告もそっちで動かした的な報告でしたし)

果たしてそんなことは可能なのか!? ←そこからかよ?

クリスマスまでにはやってみたいと思うので、乞うご期待???