有参考 https://blog.frognew.com/2023/06/kubeadm-install-kubernetes-1.27.html (opens in a new tab)
机器要求
如果是本地私有部署, 在资源紧张的情况下, 可通过 PVE 虚拟化出三台
Linux
机器 (可视情况进行内存超配)
三台主机 (一台 Master, 两台 Worker). 推荐 Master 节点为 2C4G. Master 节点配置可更高 要求:
- 系统为
Ubuntu 22.04
- 内网互通
Root
权限 (非 Root 未验证)
域名配置
非必需品, 但如果要进行 ingress 配置, 最好拥有一个域名
版本说明
Containerd: v1.7.2
Kubernetes: 1.28.2
目前三台节点的配置如下.
角色 | 主机名 | 网络 |
---|---|---|
Master | Master | inet 192.168.88.101 netmask 255.255.255.0 broadcast 192.168.88.255 |
Worker 1 | Worker 1 | inet 192.168.88.102 netmask 255.255.255.0 broadcast 192.168.88.255 |
Worker 2 | Worker 2 | inet 192.168.88.103 netmask 255.255.255.0 broadcast 192.168.88.255 |
系统配置
Master, Worker 1, Worker 2 节点配置
创建 /etc/modules-load.d/containerd.conf
配置文件,确保在系统启动时自动加载所需的内核模块,以满足容器运行时的要求:
cat << EOF > /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
执行以下命令使配置生效:
modprobe overlay
modprobe br_netfilter
创建/etc/sysctl.d/99-kubernetes-cri.conf
配置文件:
cat << EOF > /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
user.max_user_namespaces=28633
EOF
执行以下命令使配置生效:
sysctl -p /etc/sysctl.d/99-kubernetes-cri.conf
在文件名/etc/sysctl.d/99-kubernetes-cri.conf
中,“99”
代表文件的优先级或顺序。sysctl是Linux内核参数的配置工具,它可以通过修改/proc/sys/
目录下的文件来设置内核参数。
在/etc/sysctl.d/
目录中,可以放置一系列的配置文件,以便在系统启动时自动加载这些参数。这些配置文件按照文件名的字母顺序逐个加载。数字前缀用于指定加载的顺序,较小的数字表示较高的优先级。
配置服务器支持开启ipvs 由于ipvs已经加入到了内核的主干,所以为kube-proxy开启ipvs的前提需要加载以下的内核模块:
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
创建/etc/modules-load.d/ipvs.conf
文件,保证在节点重启后能自动加载所需模块:
cat > /etc/modules-load.d/ipvs.conf <<EOF
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
EOF
执行以下命令使配置立即生效:
modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
使用lsmod | grep -e ip_vs -e nf_conntrack
命令查看是否已经正确加载所需的内核模块。
接下来还需要确保各个节点上已经安装了ipset软件包,为了便于查看ipvs的代理规则,最好安装一下管理工具ipvsadm。
apt install -y ipset ipvsadm
配置 NFS 共享存储
- 在Master 上安装 NFS 服务器
- 在 Worker 1 / Worker 2 上挂载 NFS 共享目录