一、环境准备与前置条件
1.1 基础环境要求
建议使用CentOS 7.9或8.x最新版本作为基础系统,需满足以下条件:
- 全新安装的操作系统(避免残留配置冲突)
- 至少2核4G内存的物理机/虚拟机(生产环境建议8核16G起)
- 每个节点预留至少50GB磁盘空间(/var/lib/containerd目录)
- 静态IP地址配置(避免DHCP导致的地址变更)
- 节点间网络互通(建议关闭防火墙或配置必要端口)
1.2 关键组件版本选择
- Containerd:1.7.11(与K8s 1.30.14最佳兼容版本)
- KubeSphere:3.4.1(轻量级安装模式)
- 部署工具:kt 3.1.12(跨平台集群管理工具)
二、部署流程详解
2.1 节点初始化配置
在所有节点执行标准化配置(以root用户操作):
# 禁用SELinux(临时生效)setenforce 0sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config# 关闭Swap分区swapoff -ased -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab# 配置内核参数cat <<EOF > /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-iptables=1net.ipv4.ip_forward=1vm.swappiness=0EOFsysctl --system# 安装依赖工具yum install -y conntrack ipvsadm ipset jq sysstat curl socat ebtables
2.2 Containerd安装与配置
# 安装ContainerdVERSION=1.7.11wget https://download.某托管仓库链接/containerd-${VERSION}-linux-amd64.tar.gztar -xzf containerd-*.tar.gz -C /usr/local# 创建服务文件cat <<EOF > /etc/systemd/system/containerd.service[Unit]Description=containerd container runtimeDocumentation=https://containerd.ioAfter=network.target[Service]ExecStartPre=/sbin/modprobe overlayExecStart=/usr/local/bin/containerdRestart=alwaysRestartSec=5Delegate=yesKillMode=processOOMScoreAdjust=-999LimitNOFILE=1048576LimitNPROC=1048576[Install]WantedBy=multi-user.targetEOF# 启动服务systemctl daemon-reloadsystemctl enable --now containerd# 配置containerd(使用默认配置模板)mkdir -p /etc/containerdcontainerd config default > /etc/containerd/config.tomlsed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.tomlsystemctl restart containerd
2.3 集群配置文件优化
修改config-sample.yaml配置文件(关键参数说明):
kind: Clustermetadata:name: production-cluster # 集群名称spec:hosts:- name: master-nodeaddress: 192.168.1.100 # 外网访问地址internalAddress: 192.168.1.100 # 内网通信地址user: rootpassword: "SecurePass123!" # 建议使用SSH密钥认证privateKeyPath: "/root/.ssh/id_rsa" # 密钥文件路径roleGroups:etcd:- master-node # 建议至少3节点组成etcd集群control-plane:- master-nodeworker:- worker-node1- worker-node2# 镜像仓库配置(示例)imageRepository:registry: registry.example.comnamespace: libraryauth:username: adminpassword: "registryPass"# KubeSphere专项配置kubesphere:enabled: truestorageClass: "local-path" # 需提前配置存储类persistence:enabled: truestorageClassName: "managed-nfs-storage"
2.4 集群创建与验证
执行部署脚本(需提前上传部署包至master节点):
# 解压部署包tar -xzf k8s-deploy-package.tar.gzcd k8s-deploy-package# 执行集群创建(使用kt工具)./kt create-cluster \--config config-sample.yaml \--skip-preflight-checks \--kubesphere-version v3.4.1# 验证集群状态kubectl get nodes -o widekubectl get pods -n kubesphere-system
三、关键问题处理
3.1 常见部署错误排查
-
Containerd启动失败:
- 检查
journalctl -u containerd日志 - 确认内核模块
overlay和br_netfilter已加载 - 验证磁盘空间是否充足
- 检查
-
节点NotReady状态:
- 检查
kubectl describe node输出 - 确认
kubelet服务状态 - 验证CNI插件是否正确安装
- 检查
-
KubeSphere组件异常:
- 检查
kubectl logs -n kubesphere-system <pod-name> - 确认存储类配置正确
- 验证镜像仓库可访问性
- 检查
3.2 性能优化建议
-
Containerd配置优化:
# /etc/containerd/config.toml 优化片段[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]SystemdCgroup = true[plugins."io.containerd.grpc.v1.cri".registry.configs."registry.example.com".auth]username = "admin"password = "registryPass"
-
K8s调度优化:
# 修改kube-apiserver启动参数--feature-gates=NodeDisruptionExclusion=true--default-not-ready-toleration-seconds=300--default-unreachable-toleration-seconds=300
-
KubeSphere监控优化:
- 调整Prometheus保留策略:
kubectl edit prometheus -n monitoring k8s# 修改spec.retention为30d
- 配置告警规则阈值(通过KubeSphere控制台)
- 调整Prometheus保留策略:
四、生产环境建议
-
高可用架构:
- 部署3节点etcd集群
- 使用keepalived+haproxy实现API Server负载均衡
- 配置多Master节点
-
备份恢复方案:
- 定期备份etcd数据:
ETCDCTL_API=3 etcdctl snapshot save snapshot.db \--endpoints=https://127.0.0.1:2379 \--cacert=/etc/kubernetes/pki/etcd/ca.crt \--cert=/etc/kubernetes/pki/etcd/server.crt \--key=/etc/kubernetes/pki/etcd/server.key
- 使用Velero进行集群资源备份
- 定期备份etcd数据:
-
安全加固措施:
- 启用RBAC权限控制
- 配置NetworkPolicy限制Pod通信
- 定期轮换证书(通过KubeSphere控制台)
通过本方案部署的K8s集群,在Containerd运行时环境下表现出更高的稳定性和性能,特别适合需要避免Docker依赖或对SELinux/Swap配置有特殊要求的场景。KubeSphere的集成提供了完整的可视化管理能力,显著降低运维复杂度。