Fedora 37
Sponsored Link

Kubernetes : Kubeadm インストール
2022/11/22
 
Kubeadm をインストールして、マルチノード Kubernetes クラスターを構成します。
当例では以下のように 3 台のノードを使用して設定します。
前提条件として、各ノードの [Hostname], [MAC address], [Product_uuid] は一意である必要があります。
[MAC address] と [Product_uuid] は、通常の物理マシンや一般的な方法で作成した仮想マシンであれば、通常は一意となっています。
[Product_uuid] は [dmidecode -s system-uuid] コマンドで確認できます。
また、当例では Firewalld は無効の設定で進めます。
-----------+---------------------------+--------------------------+------------
           |                           |                          |
       eth0|10.0.0.30              eth0|10.0.0.51             eth0|10.0.0.52
+----------+-----------+   +-----------+----------+   +-----------+----------+
|   [ dlp.srv.world ]  |   | [ node01.srv.world ] |   | [ node02.srv.world ] |
|     Control Plane    |   |      Worker Node     |   |      Worker Node     |
+----------------------+   +----------------------+   +----------------------+

[1] 全ノードで、システム要件を満たすよう各設定を適用しておきます。
[root@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
[root@dlp ~]#
echo -e overlay\\nbr_netfilter > /etc/modules-load.d/k8s.conf
[root@dlp ~]#
dnf -y install iptables-legacy

[root@dlp ~]#
alternatives --config iptables


There are 2 programs which provide 'iptables'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/sbin/iptables-nft
   2           /usr/sbin/iptables-legacy

# [iptables-legacy] に切り替え
Enter to keep the current selection[+], or type selection number: 2

# Swap オフの設定

[root@dlp ~]#
touch /etc/systemd/zram-generator.conf
# Cgroup v1 への切り替え (デフォルトは v2)

[root@dlp ~]#
grubby --update-kernel ALL --args systemd.unified_cgroup_hierarchy=0
# [firewalld] は無効化

[root@dlp ~]#
systemctl disable --now firewalld
# デフォルトの [systemd-resolved] は無効化

[root@dlp ~]#
systemctl disable --now systemd-resolved
[root@dlp ~]#
vi /etc/NetworkManager/NetworkManager.conf
# [main] セクション配下に追記

[main]
dns=default
[root@dlp ~]#
unlink /etc/resolv.conf

[root@dlp ~]#
touch /etc/resolv.conf
# 再起動して変更を適用

[root@dlp ~]#
reboot

[2] 全ノードで、コンテナーランタイム, Kubeadm, Kubelet, Kubectl をインストールします。
コンテナーランタイムには、当例では CRI-O を利用します。
[root@dlp ~]#
dnf module -y install cri-o:1.24/default
[root@dlp ~]#
systemctl enable --now crio
[root@dlp ~]#
dnf -y install kubernetes-kubeadm kubernetes-node kubernetes-client cri-tools iproute-tc container-selinux
[root@dlp ~]#
vi /etc/kubernetes/kubelet
# 5行目 : 変更

KUBELET_ADDRESS="--address=
0.0.0.0
"
# 8行目 : コメント解除

KUBELET_PORT="--port=10250"
# 11行目 : 自身のホスト名に変更

KUBELET_HOSTNAME="--hostname-override=
dlp.srv.world
"
[root@dlp ~]#
vi /etc/systemd/system/kubelet.service.d/kubeadm.conf
# 6行目 : 追記

Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=systemd
--container-runtime=remote --container-runtime-endpoint=unix:///var/run/crio/crio.sock
"
[root@dlp ~]#
systemctl enable kubelet
[3] 全ノードで、SELinux を有効にしている場合は、ポリシーの変更が必要です。
[root@dlp ~]#
vi k8s.te
# 以下の内容で新規作成

module k8s 1.0;

require {
        type cgroup_t;
        type iptables_t;
        class dir ioctl;
}

#============= iptables_t ==============
allow iptables_t cgroup_t:dir ioctl;

[root@dlp ~]#
checkmodule -m -M -o k8s.mod k8s.te

[root@dlp ~]#
semodule_package --outfile k8s.pp --module k8s.mod

[root@dlp ~]#
semodule -i k8s.pp

関連コンテンツ