CentOS 7环境下基于containerd部署K8s 1.30.14集群及KubeSphere指南

一、环境准备与节点规划

1.1 服务器基础配置要求

部署Kubernetes集群需满足以下硬件标准:

  • 控制平面节点:建议配置4核CPU、8GB内存、100GB存储空间
  • 工作节点:至少2核CPU、4GB内存、50GB存储空间
  • 网络要求:所有节点需处于同一子网,确保22(SSH)、6443(K8s API)、10250(Kubelet)等端口互通

示例节点规划表:
| 主机类型 | 操作系统 | 配置 | IP地址 | 角色分配 |
|——————|——————|———————-|———————|————————————|
| 控制平面 | CentOS 7 | 4核8G/100GB | 192.168.85.164 | etcd/control-plane/worker |
| 镜像仓库 | Ubuntu 20.04 | 2核4G/50GB | 192.168.85.201 | Harbor专用节点 |

1.2 操作系统优化

全新安装的CentOS 7系统需执行以下优化:

  1. # 禁用SELinux(永久生效)
  2. sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  3. # 关闭Swap分区
  4. sudo swapoff -a && sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  5. # 配置内核参数
  6. cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
  7. net.bridge.bridge-nf-call-ip6tables = 1
  8. net.bridge.bridge-nf-call-iptables = 1
  9. net.ipv4.ip_forward = 1
  10. EOF
  11. sudo sysctl --system

二、离线资源部署方案

2.1 资源包准备

建议准备以下离线资源包:

  • Kubernetes 1.30.14二进制文件(含kubeadm、kubelet、kubectl)
  • containerd 1.7.12安装包
  • CNI插件(Calico/Cilium)
  • KubeSphere 3.4.0安装包
  • 自动化部署工具包(含配置模板与脚本)

资源包可通过某对象存储服务下载后,使用scp命令传输至控制平面节点:

  1. scp -r /path/to/k8s-offline-package root@192.168.85.164:/opt/k8s-install

2.2 自动化部署工具配置

使用某开源集群部署工具(如kk)时,需准备以下配置文件结构:

  1. /opt/k8s-install/
  2. ├── config-sample.yaml # 集群配置模板
  3. ├── kk # 部署工具二进制
  4. ├── packages/ # 离线资源包
  5. ├── kubernetes-v1.30.14.tar.gz
  6. ├── containerd-1.7.12.tar.gz
  7. └── kubesphere-v3.4.0.tar.gz
  8. └── scripts/ # 自动化脚本
  9. ├── init-node.sh
  10. └── deploy-cluster.sh

三、集群配置文件详解

3.1 核心配置参数说明

config-sample.yaml文件需包含以下关键配置:

  1. apiVersion: kubekey.dev/v1alpha2
  2. kind: Cluster
  3. metadata:
  4. name: sample
  5. spec:
  6. hosts:
  7. - name: master-node
  8. address: 192.168.85.164
  9. internalAddress: 192.168.85.164
  10. user: root
  11. password: "SecurePassword123"
  12. roleGroups:
  13. etcd:
  14. - master-node
  15. control-plane:
  16. - master-node
  17. worker:
  18. - master-node
  19. containerManager: containerd
  20. network:
  21. plugin: calico
  22. kubePodsCIDR: 10.233.64.0/18
  23. kubeServiceCIDR: 10.233.0.0/18

3.2 多节点集群配置示例

扩展至3节点集群的配置示例:

  1. hosts:
  2. - {name: node1, address: 192.168.85.164, ...}
  3. - {name: node2, address: 192.168.85.165, ...}
  4. - {name: node3, address: 192.168.85.166, ...}
  5. roleGroups:
  6. etcd:
  7. - node1
  8. - node2
  9. - node3
  10. control-plane:
  11. - node1
  12. worker:
  13. - node2
  14. - node3

四、容器运行时部署

4.1 containerd安装与配置

  1. # 安装依赖包
  2. sudo yum install -y device-mapper-persistent-data lvm2
  3. # 添加容器仓库并安装
  4. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  5. sudo yum install -y containerd.io-1.7.12
  6. # 生成默认配置
  7. sudo mkdir -p /etc/containerd
  8. containerd config default | sudo tee /etc/containerd/config.toml
  9. # 修改Cgroup驱动为systemd
  10. sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
  11. # 启用并启动服务
  12. sudo systemctl enable containerd && sudo systemctl start containerd

4.2 CRI配置验证

执行以下命令验证containerd的CRI接口:

  1. sudo ctr images ls
  2. sudo crictl ps -a
  3. sudo crictl info | grep "runtimeName"

五、Harbor镜像仓库部署

5.1 独立节点部署方案

建议在专用节点部署Harbor镜像仓库:

  1. 安装Docker Engine(仅用于Harbor运行)
  2. 部署Harbor 2.9.0版本
  3. 配置HTTPS证书与存储后端

5.2 集群镜像拉取配置

在集群节点配置镜像拉取秘钥:

  1. # 创建secret
  2. kubectl create secret docker-registry regcred \
  3. --docker-server=harbor.example.com \
  4. --docker-username=admin \
  5. --docker-password=HarborPass123 \
  6. --docker-email=admin@example.com
  7. # 在Pod定义中引用
  8. imagePullSecrets:
  9. - name: regcred

六、集群安装与验证

6.1 自动化安装流程

  1. # 初始化部署工具
  2. cd /opt/k8s-install && chmod +x kk
  3. # 执行集群部署
  4. ./kk create cluster -f config-sample.yaml -y
  5. # 验证组件状态
  6. kubectl get pods -n kube-system
  7. kubectl get nodes

6.2 KubeSphere集成

在集群初始化完成后,通过以下命令安装KubeSphere:

  1. kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/kubesphere-installer.yaml
  2. kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/cluster-configuration.yaml
  3. # 验证安装进度
  4. kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

七、常见问题处理

7.1 节点状态异常排查

  • NotReady状态:检查kubelet日志与CNI插件状态
  • 证书过期:使用kubeadm certs renew all更新证书
  • 网络连通性问题:验证防火墙规则与核心DNS解析

7.2 存储类配置错误

当使用某云存储服务时,需正确配置StorageClass参数:

  1. apiVersion: storage.k8s.io/v1
  2. kind: StorageClass
  3. metadata:
  4. name: csi-standard
  5. provisioner: csi-driver-name
  6. parameters:
  7. type: standard
  8. fsType: xfs
  9. reclaimPolicy: Delete

通过以上完整流程,运维人员可在CentOS 7环境下快速构建生产级Kubernetes集群,并集成可视化管控平台。实际部署时建议先在测试环境验证配置,再逐步推广至生产环境。