Cloud Native(云原生) 🔥
部署 k8s 集群 (1.28.2)
1. 安装准备

有参考 https://blog.frognew.com/2023/06/kubeadm-install-kubernetes-1.27.html (opens in a new tab)

机器要求

如果是本地私有部署, 在资源紧张的情况下, 可通过 PVE 虚拟化出三台 Linux 机器 (可视情况进行内存超配)

三台主机 (一台 Master, 两台 Worker). 推荐 Master 节点为 2C4G. Master 节点配置可更高 要求:

  1. 系统为 Ubuntu 22.04
  2. 内网互通
  3. Root 权限 (非 Root 未验证)

域名配置

非必需品, 但如果要进行 ingress 配置, 最好拥有一个域名

版本说明

Containerd: v1.7.2

Kubernetes: 1.28.2

目前三台节点的配置如下.

角色主机名网络
MasterMasterinet 192.168.88.101 netmask 255.255.255.0 broadcast 192.168.88.255
Worker 1Worker 1inet 192.168.88.102 netmask 255.255.255.0 broadcast 192.168.88.255
Worker 2Worker 2inet 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 共享存储

  1. 在Master 上安装 NFS 服务器
  2. 在 Worker 1 / Worker 2 上挂载 NFS 共享目录

配置 NFS 共享存储

禁止 Swap 交换分区

禁止 Swap 交换分区