Magicode logo
Magicode
0
3 min read

ProxmoxVEのLXCでKubernetesクラスタを構築する。

CTを作成

ところどころ大事な部分があるのでその場所を紹介します。

General

特権コンテナでないといけないのでUnpriviledgedのチェックは外します。

Template

今回はUbuntu 22.04 を使います。 Ubuntuであればとりあえず動くと思います。

Memory

Memoryはお好きな値に、Swapは0にします。

Kubernetesをインストール

https://kubernetes.io/ja/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

このページを参考にインストールします。

🔽全部のプロセスをまとめたスクリプト

https://gist.github.com/ddPn08/bea6db25e64cd3f93799f6cac4629c61

エラー対応

kubeadm init --pod-network-cidr=10.244.0.0/16

このように普通に初期化しようとするとエラーが出ます。

[ERROR SystemVerification]: failed to parse kernel config: unable to load kernel module: "configs", output: "modprobe: FATAL: Module configs not found in directory /lib/modules/5.3.10-1-pve\n", err: exit status 1

オプションを追加して無視します。

kubeadm init \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=SystemVerification

けれどまだエラーが出ます。

failed to start OOM watcher open /dev/kmsg: no such file or directory

これを回避するために/dev/kmsgに、/dev/consoleのリンクを張る必要があります。

ln -s /dev/console /dev/kmsg
echo 'L /dev/kmsg - - - - /dev/console' > /etc/tmpfiles.d/kmsg.conf # 再機動に対応

最後に、LXCではswapoff -aが使えないので、スワップのエラーを無視するように設定します。

sed -i '9s/^/Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"\n/' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

この状態で初期化します。

kubeadm init \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=SystemVerification

するとエラー無く通るはずです。 ワーカーノードでも同じように設定してから、joinします。

kubeadm join 10.1.100.11:6443 \
--ignore-preflight-errors=SystemVerification \
--token xxxxxx.xxxxxxxxxxxxx \
--discovery-token-ca-cert-hash sha256:xxxxxxx

Discussion

コメントにはログインが必要です。