1. 环境准备 (所有节点)

1.1 关闭防火墙与 SELinux

1
2
3
4
5
6
7
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭 SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

1.2 关闭 Swap (必须)

1
2
swapoff -a
sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab

1.3 允许 iptables 检查桥接流量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# 设置 sysctl 参数
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF

sudo sysctl --system

2. 安装容器运行时 (所有节点)

推荐使用 containerd

2.1 安装 containerd

1
2
3
4
5
# 以 Ubuntu 为例
apt-get update && apt-get install -y containerd

# 以 CentOS 为例
# yum install -y containerd.io

2.2 配置 Cgroup 驱动

Kubernetes 推荐使用 systemd

1
2
3
4
5
mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
# 将 SystemdCgroup 设置为 true
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
systemctl restart containerd

3. 安装 K8s 核心工具 (所有节点)

3.1 添加安装源 (以 Ubuntu 为例)

1
2
3
apt-get update && apt-get install -y apt-transport-https ca-certificates curl gpg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

3.2 执行安装

1
2
3
4
apt-get update
apt-get install -y kubelet kubeadm kubectl
# 锁定版本,防止自动更新
apt-mark hold kubelet kubeadm kubectl

4. 初始化集群 (仅 Master 节点)

4.1 初始化命令

1
2
3
4
5
# pod-network-cidr 网段通常与后续安装的 CNI 插件匹配
kubeadm init \
--apiserver-advertise-address=192.168.1.10 \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=192.168.0.0/16

注:--image-repository 指定阿里云镜像源可解决国内下载镜像难的问题。

4.2 配置 kubectl

1
2
3
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

5. 安装网络插件 (仅 Master 节点)

选择安装 Calico

1
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml

6. 加入工作节点 (仅 Worker 节点)

在所有 Worker 节点上执行 kubeadm init 最后生成的 join 命令:

1
2
kubeadm join 192.168.1.10:6443 --token <TOKEN> \
--discovery-token-ca-cert-hash sha256:<HASH>

7. 验证安装

在 Master 节点执行:

1
2
3
4
# 查看节点状态是否为 Ready
kubectl get nodes
# 查看系统组件状态
kubectl get pods -n kube-system