本文面向DevOps工程师和云原生开发者,介绍如何选择和使用轻量级Kubernetes方案来搭建预生产环境。我们将重点介绍K3s这一优秀的轻量级Kubernetes发行版,并提供详细的安装部署指南。
引言:为什么需要轻量级Kubernetes?
想象一下这样的场景:你正在开发一个微服务应用,需要在本地或云服务器上搭建一个与生产环境相似的验收环境。传统的Kubernetes集群需要3-5个节点,每个节点至少2GB内存,这对于个人开发或小型项目来说成本太高了。此外,Kubernetes是重量级的组件,完整地安装Kubernetes服务劝退无数开发者。
这就是轻量级Kubernetes的价值所在:它们能够在单台机器上运行完整的Kubernetes功能,大大降低了资源消耗和学习成本。
传统Kubernetes vs 轻量级Kubernetes
预生产环境(Staging)的重要性
在软件交付流程中,预生产环境(Staging)扮演着承上启下的关键角色。它就像是正式演出前的彩排现场,能够:
- 发现潜在问题:在接近生产环境的情况下验证功能完整性
使用Kubernetes搭建Staging环境的最大优势是环境一致性:开发、测试、生产环境使用相同的配置和部署方式,大大减少了"在我机器上能运行"的问题。
轻量级 Kubernetes 技术选型
市面上的轻量级Kubernetes方案众多,该如何选择?
技术方案对比
GitHub Stars 数据截止到 2026-01-13
| | | | |
|---|
| K3s | | | | |
| Minikube | | | | |
| Docker Desktop Kubernetes | | | | |
| MicroK8s | | | MicroK8s is a small, fast, single-package Kubernetes for datacenters and the edge. | |
| Kind | | | Kubernetes IN Docker - local clusters for testing Kubernetes | |
选型建议:按场景选择
🚀 场景一:云服务器部署
推荐方案:K3s
核心优势:
💻 场景二:本地开发环境,
推荐方案:Docker Desktop K8s(Windows/macOS)或 Minikube(Linux)
云原生中容器技术学习路线:Docker First,Then Kubernetes
核心优势:
Kubernetes in Docker Desktop实战:在Ubuntu上部署K3s
不同于本地开发环境,预生产环境往往涉及到与其他系统集成,需具备:公网IP、Linux宿主机等依赖,尽可能与生产环境一致。下面我们通过一个完整的实战案例,演示如何在Ubuntu服务器上部署K3s。
环境准备
演示项目环境为:TencentCloud Lighthouse(腾讯云轻量应用服务器),Ubuntu 24.04 LTS,服务器配置为:1核2GB内存,50GB磁盘空间
在开始之前,确保服务器满足以下要求:
安装步骤
第一步:一键安装K3s
# 使用国内镜像源加速安装curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
这个命令会完成以下操作:
查看k3s服务状态和计算资源占用情况 top
top-k3s-server第二步:验证安装
安装完成后,通过以下命令验证K3s是否正常运行:
# 检查K3s服务状态: active(running)systemctl status k3s# 查看集群节点信息: Ready control-planekubectl get nodes# 查看所有运行中的Podkubectl get pods -A
解决网络问题
K3s访问的镜像仓库默认为DockerHub,在云服务的网络环境下会遇到镜像拉取失败问题。可配置镜像加速器(换源):
# 创建镜像加速配置sudo mkdir -p /etc/rancher/k3ssudo cat > /etc/rancher/k3s/registries.yaml << EOFmirrors: docker.io: endpoint: - "https://registry.cn-hangzhou.aliyuncs.com/" - "https://mirror.ccs.tencentyun.com" quay.io: endpoint: - "https://quay.tencentcloudcr.com/" registry.k8s.io: endpoint: - "https://registry.aliyuncs.com/v2/google_containers" gcr.io: endpoint: - "https://gcr.m.daocloud.io/" k8s.gcr.io: endpoint: - "https://registry.aliyuncs.com/google_containers" ghcr.io: endpoint: - "https://ghcr.m.daocloud.io/"EOF# 重启K3s服务使配置生效sudo systemctl restart k3s
如果K3s中仍然有镜像拉取失败,可以向我留言。
我在实操的过程中遇到问题:rancher/mirrored-pause:3.6镜像一直拉取失败,导致K3s服务状态异常。
实战案例:部署第一个应用
我已经在云服务上使用K3s部署了自己的微服务应用,包括Python Flask应用和Redis数据库,应用运行正常。
现在我们已经有了一个运行的K3s集群,让我们来部署一个简单的Nginx应用。
创建部署配置文件
首先创建Nginx的部署配置文件:
# nginx-deployment.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:nginx-deploymentspec:replicas:2# 运行2个副本selector:matchLabels:app:nginxtemplate:metadata:labels:app:nginxspec:containers:-name:nginximage:nginx:1.25ports:-containerPort:80resources:requests:memory:"64Mi"cpu:"50m"limits:memory:"128Mi"cpu:"100m"
创建服务暴露应用
为了让外部能够访问Nginx,我们需要创建一个Service:
# nginx-service.yamlapiVersion:v1kind:Servicemetadata:name:nginx-servicespec:selector:app:nginxports:-protocol:TCPport:80# 服务端口targetPort:80# 容器端口type:LoadBalancer# 使用负载均衡器类型
部署应用
现在执行部署命令:
# 部署Nginx应用kubectl apply -f nginx-deployment.yamlkubectl apply -f nginx-service.yaml# 检查部署状态kubectl get deploymentskubectl get podskubectl get services
访问应用
部署完成后,通过以下命令获取访问地址:
# 查看服务详情kubectl get svc nginx-service# 如果使用LoadBalancer类型,会分配外部IP# 直接访问该IP的80端口即可curl http://<EXTERNAL-IP>:80
进阶功能:安装Kubernetes Dashboard
如果你喜欢图形化界面,可以安装Kubernetes Dashboard,需使用helm包管理工具,本文不做详细介绍。
Kubernetes Dashboard总结
本文介绍了三个方面:
- 轻量级Kubernetes的选型方法:根据具体场景选择最合适的方案
- K3s的安装部署:在Ubuntu上快速搭建Kubernetes环境
K3s作为一款优秀的轻量级Kubernetes发行版,特别适合中小型项目的预生产环境搭建。它的轻量级特性让我们能够在有限的资源下享受到Kubernetes带来的便利,同时保持了生产环境的兼容性。
下一步建议:
参考资料
- K3s官方文档,https://docs.k3s.io/
- Kubernetes官方文档,https://kubernetes.io/docs/
- Rancher中国镜像站,https://rancher-mirror.rancher.cn/
- K3s GitHub 仓库,https://github.com/k3s-io/k3s
- MiniKube GitHub 仓库,https://github.com/kubernetes/minikube
- MicroK8s GitHub 仓库,https://github.com/canonical/microk8s
- Kind GitHub 仓库,https://github.com/kubernetes-sigs/kind
在安装K3s的过程中,会遇到网络、运行时依赖等问题,欢迎与我进行问题交流。