部署 kubernetes 需要对系统进行某些必要的配置,此文档适用于所有需要部署 kubernetes 节点。

1. 环境验证

1.1. 验证机器属性

部署 Kubernetes 需要保证机器硬件 UUID 和网卡 MAC 地址是独一无二的,如果这些值在每个节点上一致,可能会导致部署失败。可使用如下命令确认:

1
2
3
4
# 查看硬件 UUID
cat /sys/class/dmi/id/product_uuid
# 查看网卡 MAC
ip link

1.2. 验证网络联通性

各个节点之间需要能够相互通信,你可以 使用 ping 或者 traceroute 等工具进行测试。

2. 配置系统

2.1. 启用内核模块

kubernetes 需要 br_netfilter 模块才能工作,Debian 内核已带有此模块,可使用 lsmod | grep br_netfilter 验证是否加载,装入以下配置以显式加载模块。

1
2
3
4
cat <<EOF | tee /etc/modules-load.d/kubernetes.conf
br_netfilter
EOF
modprobe br_netfilter

2.2. 配置内核参数

为了让节点上的 iptables 能够正确地查看桥接流量,你需要确保 sysctl 配置中将 net.bridge.bridge-nf-call-iptables 设置为 1。

1
2
3
4
5
6
7
cat <<EOF | tee /etc/sysctl.d/zz-kubernetes.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

2.3. 部署附加软件包

kubernetes 部分组件在运行中需要某些软件支撑,否则将导致 kubernetes 无法正常运行。

1
2
# cni 插件 需要 wireguard 软件包,rook-nfs 需要 nfs-common 软件包 ,kubernetes 需要 conntrack 软件包
apt-get install -y wireguard wireguard-tools nfs-common conntrack lvm2 iptables