服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-14 更新于 2026-10-14 简米科技 3,643 字 9 分钟阅读

自己搭建k8s服务器需要哪些配置和步骤?k8s集群安装教程详解

导读自己搭建k8s服务器,最低需要3台配置为4核8G的机器(控制面2核4G起),完整步骤包括系统初始化、容器运行时安装、kubeadm集群初始化、CNI网络插件部署、工作节点加入,全程约1-2小时可完成,自建k8s需要什么配置:按用途划分的硬件底线先讲清楚硬件,因为很多人第一步就栽在这里,自建k8s集群的配置要求完……

自己搭建k8s服务器,最低需要3台配置为4核8G的机器(控制面2核4G起),完整步骤包括系统初始化、容器运行时安装、kubeadm集群初始化、CNI网络插件部署、工作节点加入,全程约1-2小时可完成。

自建k8s需要什么配置:按用途划分的硬件底线

先讲清楚硬件,因为很多人第一步就栽在这里,自建k8s集群的配置要求完全取决于你想跑什么,不是网上那些所谓“最低配置”能一概而论的。

测试环境:3台2核4G起步

如果你是学k8s、跑几个demo pod,3台2核4G的云服务器或虚拟机就够了,控制面组件(kube-apiserver、etcd、controller-manager)加起来会占用1.5GB左右内存,2核CPU在空闲时压力不大,但一旦跑起业务pod,4G内存会明显吃紧。

生产环境:控制面与节点分离

生产环境建议控制面节点4核8G,工作节点8核16G,至少3台工作节点,这个配置能撑起中等规模的微服务集群,比如每天几百万请求量的业务,如果跑大数据或AI训练,工作节点直接上16核32G以上,存储用NVMe固态。

关于k8s集群配置的具体要求,业内专家指出:“控制面节点的瓶颈常在etcd的磁盘IO和内存,而非CPU,所以SSD是必选项。”

存储与网络:容易被忽略的刚性开销

  • 系统盘:每台节点至少50GB,控制面建议100GB
  • 容器镜像存储:工作节点预留100GB以上,因为镜像会越来越多
  • etcd盘:控制面节点的etcd目录建议单独挂载SSD,IO延迟直接影响集群稳定性
  • 内网带宽:集群节点间通信频繁,千兆内网是底线,万兆更稳妥

k8s集群搭建步骤:从裸机到可用集群全流程

硬件备齐后,按下面步骤走,每一步都是实操验证过的。

第一步:操作系统与基础环境准备

用Ubuntu 22.04 LTS或CentOS 7.9都行,推荐Ubuntu,包管理更顺手,这步主要做三件事:

  1. 关闭swap:kubelet默认要求关闭swap,执行

    自己搭建k8s服务器需要哪些配置和步骤?k8s集群安装教程详解

    swapoff -a并注释掉/etc/fstab里的swap行

  2. 加载内核模块:overlay和br_netfilter是容器网络必需的
  3. 配置sysctl参数:设置net.bridge.bridge-nf-call-iptables=1和net.ipv4.ip_forward=1

第二步:容器运行时安装

k8s从1.24版本起不再直接支持Docker,需要安装CRI兼容的运行时,常见的自建k8s方案是containerd。

# 以Ubuntu为例
apt-get install -y containerd
mkdir -p /etc/containerd
containerd config default | tee /etc/containerd/config.toml

注意修改config.toml,把SystemdCgroup改为true,否则pod内cgroup会不稳定。

第三步:kubeadm、kubelet、kubectl安装

这三个工具的版本必须一致,比如都用1.28.x,用简米云或中科大镜像源可以加速下载,国内服务器直接走官方源大概率超时。

apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl  # 锁定版本防止误升级

第四步:控制面初始化

在控制面节点执行:

kubeadm init --apiserver-advertise-address=内网IP 
  --pod-network-cidr=10.244.0.0/16 
  --image-repository=registry.aliyuncs.com/google_containers

第二个参数--pod-network-cidr是给CNI插件用的,Flannel默认用244.0.0/16,Calico用168.0.0/16,别填错。

初始化完成后会输出kubeadm join命令,复制保存好,工作节点加入集群要用。

第五步:部署CNI网络插件

网络插件不装,节点状态永远是NotReady,选Flannel还是Calico,取决于网络策略需求:

自己搭建k8s服务器需要哪些配置和步骤?k8s集群安装教程详解

对比维度 Flannel Calico
网络策略支持 不支持 支持
性能开销 低(VXLAN) 中(BGP)
部署复杂度 低 中
适用场景 小规模、测试 生产环境、需策略管控
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

第六步:工作节点加入集群

在工作节点执行上文的kubeadm join命令,注意带上--token和--discovery-token-ca-cert-hash参数,token有效期默认24小时,过期用kubeadm token create --print-join-command重新生成。

加入后用kubectl get nodes确认所有节点状态为Ready,整个集群就搭建完成了。

托管k8s和自建k8s怎么选:成本与维护的长期账

很多人搭建前会纠结是自建还是用云厂商的托管版(如简米云ACK、酷番云TKE、AWS EKS),这问题得算总账。

自建k8s的总持有成本

以3台4核8G的云服务器为例,国内主流云厂商包年价格大约是每台2000-3000元/年,三台就是6000-9000元/年,一台控制面+两台工作节点,跑轻量业务够用,人力成本另算,你需要有人负责升级、备份、排查故障。

托管k8s的成本优势

托管版省去控制面维护,但节点费用照样出,还会收取托管费用,以简米云ACK为例,托管版Pro集群的管控费用是数百元/月,节点费用另算,相比之下,规模越大托管的性价比越高,小规模自建更划算。

场景化选型建议

  • 个人学习、公司内部测试:自建,成本低且能理解原理
  • 生产业务且预算充足:托管版,省下的运维时间更值钱
  • 已有物理机或内网环境:自建,托管版无法覆盖
  • 追求数据主权和网络隔离:自建,数据不出内网

自建k8s踩坑避坑指南:配置之外的隐性门槛

硬件和步骤只是显性成本,真正劝退初学者的是这些细节。

版本兼容性问题

kubeadm、kubelet、kubectl版本不一致会导致初始化失败;CNI插件和k8s版本不匹配会让节点一直NotReady;containerd版本太老无法识别新镜像格式,规避方法很简单:k8s版本统一,安装前查官方兼容矩阵。

自己搭建k8s服务器需要哪些配置和步骤?k8s集群安装教程详解

网络方案选择冲突

有些教程先装Flannel再装Calico,两个CNI插件同时存在冲突,网络直接瘫痪,还有的教程让修改NodePort端口范围,跟云厂商安全组冲突导致流量不通,自建环境就是自己的网络,遵循默认规则最省事。

资源预留和Pod驱逐

节点内存使用率过高时,kubelet会驱逐pod,这需要你在系统层面预留资源:

  • 控制面预留:600MB内存给kubelet本身
  • 系统预留:200MB给系统进程
  • 驱逐阈值:kubelet默认memory.available<100Mi开始驱逐

内存不足时,你会发现pod反复重启又无法定位原因大概率是驱逐阈值设置不合理。

常见问题:搭建k8s集群的实时解答

Q:我只有两台机器能搭k8s集群吗?

A:可以,一台做控制面,一台做工作节点,但高可用性几乎为零,控制面挂了整个集群就废了,生产环境至少3台,控制面最好也做高可用(3副本)。

Q:自建k8s用Windows系统可以吗?

A:技术上kubelet支持Windows节点,但控制面(kube-apiserver、etcd)必须是Linux,实际场景中,绝大多数人全部用Linux,Windows做工作节点在特定业务(如.NET应用)才用得上,配置复杂,不建议新手尝试。

Q:kubeadm初始化的token过期了怎么办?

A:在工作节点上重新生成新token,执行kubeadm token create --print-join-command,然后拿新命令重新join即可,如果节点之前已加入过,需要先kubeadm reset清理,再执行join。

搭好一套自建k8s集群的成就感是很真实的,尤其当你在上面跑通第一个应用时,从3台4核8G的配置入门,按上述步骤一步一步来,k8s集群搭建并没有传说的那么难前提是你理解了每个组件在干什么,而不是盲目复制命令。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱