openSUSE Leap 16

Kubernetes : Kubeadm インストール2025/11/07

 

マルチノード Kubernetes クラスターを構成します。

当例では以下のように 4 台のノードを使用して設定します。

前提条件として、各ノードの [Hostname], [MAC address], [Product_uuid] は一意である必要があります。
[MAC address] と [Product_uuid] は、通常の物理マシンや一般的な方法で作成した仮想マシンであれば、通常は一意となっています。
[Product_uuid] は [dmidecode -s system-uuid] コマンドで確認できます。

+----------------------+   +----------------------+
|  [ ctrl.srv.world ]  |   |   [ dlp.srv.world ]  |
|     Manager Node     |   |     Control Plane    |
+-----------+----------+   +-----------+----------+
        eth0|10.0.0.25             eth0|10.0.0.30
            |                          |
------------+--------------------------+-----------
            |                          |
        eth0|10.0.0.51             eth0|10.0.0.52
+-----------+----------+   +-----------+----------+
| [ node01.srv.world ] |   | [ node02.srv.world ] |
|     Worker Node#1    |   |     Worker Node#2    |
+----------------------+   +----------------------+

[1] Manager ノードを除く Kubernetes クラスターを構成する全ノードで、CGROUPS のコントローラーを追加しておきます。
dlp:~ #
cat /proc/cgroups

#subsys_name    hierarchy       num_cgroups     enabled
cpu     0       54      1
blkio   0       54      1
net_cls 0       54      1
perf_event      0       54      1
net_prio        0       54      1
hugetlb 0       54      1
pids    0       54      1
rdma    0       54      1
misc    0       54      1

dlp:~ #
zypper -n install kernel-source gcc make zlib-devel ncurses-devel
dlp:~ #
cd /usr/src/linux

dlp:/usr/src/linux #
make menuconfig


#1 [General setup] を選択して Enter
     General setup  --->

#2 [Control Group support] を選択して Enter
 [*] Control Group support  --->

#3 以下 3 項目にチェックを入れる
 [*]   Freezer controller
 [*]   Device controller
 [*]   Simple CPU accounting controller
 
#4 以下のチェックを外す
 [ ]   RDMA controller

#5 [Exit] する

dlp:/usr/src/linux #
vi .config
# 11059行目 : 以下のように変更 (値を空にする)
CONFIG_MODULE_SIG_KEY=""

# make してインストール
# * make には数時間かかる

dlp:/usr/src/linux #
make

dlp:/usr/src/linux #
make modules_install

dlp:/usr/src/linux #
make install

  INSTALL /boot
renamed '/boot/config-6.12.0-160000.5-default' -> '/boot/config-6.12.0-160000.5-default.old'
Module signing not enabled for this kernel.  Skipping.

dlp:/usr/src/linux #
dlp:~ #
cat /proc/cgroups

#subsys_name    hierarchy       num_cgroups     enabled
cpu     0       50      1
cpuacct 0       50      1
blkio   0       50      1
devices 0       50      1
freezer 0       50      1
net_cls 0       50      1
perf_event      0       50      1
net_prio        0       50      1
hugetlb 0       50      1
pids    0       50      1
misc    0       50      1
[2] Manager ノードを除く Kubernetes クラスターを構成する全ノードで、システム要件を満たすよう各設定を適用しておきます。
dlp:~ #
cat > /etc/sysctl.d/99-k8s-cri.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables=1
EOF

dlp:~ #
sysctl --system
# firewalld は無効化

dlp:~ #
systemctl disable --now firewalld
# Swap オフの設定

dlp:~ #
swapoff -a

dlp:~ #
vi /etc/fstab
# Swap 行はコメント化
#UUID=579cbec6-00f9-420a-b025-5dc2c4e15275  swap                    swap   defaults

dlp:~ #
systemctl mask swap.target
[3] Manager ノードを除く Kubernetes クラスターを構成する全ノードで、コンテナーランタイム, Kubeadm, Kubelet をインストールします。
コンテナーランタイムには、当例では Containerd を利用します。
dlp:~ #
zypper -n install containerd
dlp:~ #
containerd config default | tee /etc/containerd/config.toml

dlp:~ #
vi /etc/containerd/config.toml
# 67行目 : 変更
sandbox_image = "registry.k8s.io/pause:3.10.1"

# 139行目 : 変更
SystemdCgroup = true

dlp:~ #
systemctl enable --now containerd
dlp:~ #
cat <<'EOF' > /etc/zypp/repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/repodata/repomd.xml.key
EOF

dlp:~ #
zypper refresh
.....
.....
Do you want to reject the key, trust temporarily, or trust always? [r/t/a/?] (r): a
.....
.....
dlp:~ #
zypper -n install kubeadm kubelet kubectl
dlp:~ #
systemctl enable kubelet
関連コンテンツ