一、前置条件

  1. 3 台 CentOS 7.9 服务器(最低配置:2GB RAM,2 CPU,20GB 硬盘)
    • Master: 192.168.91.198
    • Worker1: 192.168.91.199
    • Worker2: 192.168.91.200
  1. 所有节点需满足以下配置
    • 关闭 Swap
    • 唯一主机名
    • 开启 IPv4 转发
    • 关闭 SELinux
    • 时间同步

二、所有节点通用配置

1. 关闭 Swap
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab  # 永久关闭
2. 设置主机名
  • Master 节点
hostnamectl set-hostname master
  • Worker1 节点
hostnamectl set-hostname worker1
  • Worker2 节点
hostnamectl set-hostname worker2
3. 配置 hosts 文件

在所有节点执行:

cat >> /etc/hosts <<EOF
192.168.91.198 master
192.168.91.199 worker1
192.168.91.200 worker2
EOF
4. 关闭防火墙和 SELinux
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
5. 配置内核参数
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
6. 时间同步
yum install -y ntpdate
ntpdate ntp.aliyun.com

三、所有节点安装 Docker 运行时

1. 安装 Docker CE
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
2. 配置 Docker 使用 systemd cgroup 驱动
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  }
}
EOF
3. 启动 Docker
systemctl enable docker && systemctl start docker

四、所有节点安装 kubeadm/kubelet/kubectl(Kubernetes 1.23 版本)

1. 添加 Kubernetes 仓库
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF
2. 安装 1.23.x 版本工具
yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
systemctl enable kubelet

五、Master 节点初始化

1. 初始化集群
kubeadm init \
  --apiserver-advertise-address=192.168.91.198 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.23.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=192.168.0.0/16
2. 配置 kubectl
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
3. 安装网络插件(Calico)
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.20.0/manifests/calico.yaml

六、Worker 节点加入集群

Worker1Worker2 节点执行以下命令(替换为实际 token 和证书哈希):

kubeadm join 192.168.91.198:6443 \
  --token <your-token> \
  --discovery-token-ca-cert-hash sha256:<your-cert-hash>

七、验证集群状态

在 Master 节点执行:

kubectl get nodes
# 所有节点状态应为 Ready
kubectl get pods -A
# 检查所有 Pod 是否正常运行

关键说明

  1. 为何选择 Kubernetes 1.23
Kubernetes 1.24+ 移除了对 Docker 的原生支持,
必须使用 cri-dockerd。选择 1.23 或更低版本可避免依赖 cri-dockerd
  1. Docker 配置要求
必须配置 Docker 使用 systemd cgroup 驱动,与 kubelet 保持一致。
  1. 版本兼容性
Calico 网络插件需与 Kubernetes 版本匹配(此处使用 v3.20.0)

更多推荐