CentOS节点选型指南(Kubernetes集群)
一、操作系统版本选择
- 推荐版本:优先选择CentOS 7.9及以上(如7.9、8.5)或CentOS Stream 8/9(滚动更新版本,更贴近上游支持)。
- 兼容性注意:
- CentOS 7需升级内核至4.x及以上(解决cgroup内存泄露等问题);
- CentOS 8需注意与较新Kubernetes版本(如1.26+)的依赖兼容性,建议通过
yum-utils工具管理依赖。
二、节点角色与硬件配置
1. 控制平面节点(Master)
控制平面运行etcd(集群数据存储)、kube-apiserver(API入口)等核心组件,其稳定性直接影响集群可用性。
- 基础配置(实验/测试环境):2核CPU、4GB内存、30GB SSD(用于etcd数据存储)。
- 生产配置(推荐):
- 集群规模≤100节点:4核CPU+8GB内存+100GB SSD(满足etcd高并发写入需求);
- 集群规模100-500节点:8核CPU+16GB内存+100GB SSD;
- 集群规模>500节点:16核CPU+32GB内存+200GB SSD以上(需考虑etcd集群扩展)。
- 高可用要求:生产环境必须部署≥3台Master节点(分布在不同可用区),通过
kube-apiserver负载均衡实现高可用。
2. 工作节点(Worker)
工作节点运行kubelet(节点代理)、容器运行时(如containerd)及业务Pod,配置需匹配业务负载类型:
- 基础配置(实验/测试环境):2核CPU、4GB内存、50GB SSD(满足1-2个测试Pod需求)。
- 生产配置(按负载类型调整):
- CPU密集型负载(如大数据分析、视频编码):优先提升CPU核心数(≥8核),内存按1:2比例分配(如8核对应16GB内存);
- 内存密集型负载(如Java应用、Redis缓存):优先提升内存容量(≥16GB),CPU按1:8比例分配(如16核对应128GB内存);
- 存储密集型负载(如数据库、日志存储):选择SSD存储(如100GB+),并根据数据量扩展容量(如数据库应用建议200GB+)。
- 资源预留:需为Kubernetes系统组件(kubelet、containerd)和操作系统预留30%空闲资源(如16核节点预留4.8核、64G节点预留19.2G),防止突发负载导致节点崩溃。
三、存储配置要求
- etcd存储(Master节点):
etcd对磁盘延迟极其敏感,必须使用高性能SSD(如NVMe),容量取决于Pod数量、镜像大小及日志量,建议≥50GB(大规模集群可扩展至100G+)。
- Worker节点存储:
- 日志量大或需要持久化存储的业务(如数据库):选择SSD(提升IO性能);
- 普通业务:可选择SSD或HDD(根据成本与性能需求平衡);
- 容器镜像存储:建议使用**本地SSD+远程存储(如NFS、Ceph)**组合,确保镜像拉取速度。
四、网络配置要求
- 网络带宽:
- Master节点:需处理API请求,建议≥1Gbps(大规模集群可升级至10Gbps);
- Worker节点:根据业务流量调整,普通应用≥1Gbps,高流量应用(如视频流)≥10Gbps。
- 网络插件:推荐使用Calico、Flannel等CNI插件,提前规划Pod CIDR(如10.244.0.0/16),确保节点间网络互通。
- 系统配置:禁用交换分区(
swapoff -a并修改/etc/fstab),避免Kubernetes调度冲突;开启IP转发(net.ipv4.ip_forward=1),确保容器间跨节点通信。
五、其他关键注意事项
- 系统优化:
- 关闭SELinux(
setenforce 0并修改/etc/selinux/config为permissive);
- 禁用防火墙(
systemctl disable --now firewalld),或配置防火墙规则允许Kubernetes组件通信。
- 监控与优化:
- 部署Prometheus+Grafana监控集群资源使用情况(CPU、内存、磁盘IO);
- 使用**Horizontal Pod Autoscaler(HPA)**根据CPU/内存利用率自动扩缩容Pod;
- 使用Cluster Autoscaler根据集群负载自动添加/删除Worker节点。