一、环境准备
1. 配置软件仓库
# 同步Docker和K8s软件包到本地仓库
rsync -av docker/ 192.168.88.240:/var/ftp/rpms/docker/
rsync -av kubernetes/packages/ 192.168.88.240:/var/ftp/rpms/k8s/
# 更新仓库元数据(在仓库服务器执行)
ssh 192.168.88.240
createrepo --update /var/ftp/rpms/
2. 系统基础配置
# 所有节点配置yum源
cat > /etc/yum.repos.d/k8s.repo <
二、主控节点(Master)安装
1. 安装基础软件
# 配置主机解析
cat >> /etc/hosts <
2. 配置容器运行时(containerd)
# 生成默认配置并修改关键参数
containerd config default > /etc/containerd/config.toml
sed -i 's#k8s.gcr.io/pause#harbor:443/k8s/pause#g' /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
# 添加镜像仓库配置
cat >> /etc/containerd/config.toml <
三、集群初始化
1. 内核参数优化
# 加载内核模块
echo -e "br_netfilter
xt_conntrack" > /etc/modules-load.d/containerd.conf
systemctl start systemd-modules-load
# 设置网络参数
cat > /etc/sysctl.d/99-kubernetes-cri.conf <
2. 初始化Master节点
# init.yaml配置文件关键参数
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.88.50 # 主节点IP
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: v1.29.2
controlPlaneEndpoint: "master:6443"
imageRepository: "harbor:443/k8s"
# 执行初始化(先测试后正式)
kubeadm init --config=init.yaml --dry-run 2>error.log
kubeadm init --config=init.yaml | tee init.log
# 配置kubectl权限
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
四、网络插件部署(Calico)
1. 镜像准备
# 加载并推送Calico镜像
docker load -i calico.tar.xz
docker tag calico/cni:v3.26.4 harbor:443/plugins/cni:v3.26.4
docker push harbor:443/plugins/cni:v3.26.4
2. 应用网络配置
# 修改Calico镜像路径
sed -ri 's,docker.io/calico/,harbor:443/plugins/,g' calico.yaml
# 部署网络插件
kubectl apply -f calico.yaml
五、工作节点加入集群
1. 生成加入命令
# 创建永久Token(在Master执行)
kubeadm token create --ttl=0 --print-join-command
# 手动获取CA证书哈希(备用)
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der | openssl dgst -sha256 -hex
2. 节点加入操作
# 在工作节点执行加入命令(示例)
kubeadm join 192.168.88.50:6443
--token
--discovery-token-ca-cert-hash sha256:
六、验证集群状态
# 查看节点状态
kubectl get nodes -o wide
# 检查核心Pod运行状态
kubectl get pods -n kube-system
# 查看集群组件健康状态
kubectl get componentstatuses
注意事项
- 版本一致性:所有节点kubeadm/kubelet/kubectl版本必须严格一致
- 网络要求:确保节点间6443/10250端口互通,Calico默认使用BGP协议需放行TCP 179端口
- 镜像安全:私有仓库需配置TLS证书,生产环境建议使用Harbor等安全仓库
- 资源预留:Master节点建议至少2核4GB内存,生产环境启用高可用架构