Ccmmutty logo
Commutty IT
3 min read

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

https://cdn.magicode.io/media/notebox/e1e68634-6a1a-402a-9299-aded671175bd.jpeg

CTを作成

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

General

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

Template

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

Memory

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

Kubernetesをインストール

このページを参考にインストールします。
🔽全部のプロセスをまとめたスクリプト

エラー対応

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

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