轻量级 Kubernetes:在Linux上运行K3s
本文面向DevOps工程师和云原生开发者,介绍如何选择和使用轻量级Kubernetes方案来搭建预生产环境。我们将重点介绍K3s这一优秀的轻量级Kubernetes发行版,并提供详细的安装部署指南。
- K3s 安装后,80/443端口被占用
引言:为什么需要轻量级Kubernetes?
想象一下这样的场景:你正在开发一个微服务应用,需要在本地或云服务器上搭建一个与生产环境相似的测试环境。传统的Kubernetes集群需要3-5个节点,每个节点至少2GB内存,这对于个人开发或小型项目来说成本太高了。
这就是轻量级Kubernetes的价值所在:它们能够在单台机器上运行完整的Kubernetes功能,大大降低了资源消耗和学习成本。
传统Kubernetes vs 轻量级Kubernetes
| 对比维度 | 传统K8s | 轻量级K8s |
|---|---|---|
| 资源需求 | 3-5节点,每个2GB+内存 | 单节点,512MB内存 |
| 安装复杂度 | 复杂,需要专业运维知识 | 简单,一键安装 |
| 学习成本 | 高,需要掌握网络、存储等概念 | 低,专注于应用部署 |
| 适用场景 | 大型企业生产环境 | 开发测试、边缘计算、小型项目 |
预生产环境(Staging)的重要性
在软件交付流程中,预生产环境(Staging)扮演着承上启下的关键角色。它就像是正式演出前的彩排现场,能够:
- 发现潜在问题:在接近生产环境的情况下验证功能完整性
- 性能摸底:测试系统在高并发下的表现
- 流程验证:演练部署、回滚等运维操作
- 用户验收:让业务方提前体验新功能
使用Kubernetes搭建Staging环境的最大优势是环境一致性:开发、测试、生产环境使用相同的配置和部署方式,大大减少了"在我机器上能运行"的问题。
轻量级 Kubernetes 技术选型
市面上的轻量级Kubernetes方案众多,我们该如何选择?下面通过一个详细的对比表格来帮你决策。
技术方案对比
GitHub Stars 数据截止到 2026-01-13
| 方案 | GitHub Stars | 核心优势 | 简介 | 上手难度 |
|---|---|---|---|---|
| K3s | ⭐31.9k+ | 生产就绪,资源消耗极低 | Lightweight Kubernetes | ⭐⭐ |
| Minikube | ⭐31.4k+ | 官方推荐,文档完善 | Run Kubernetes locally | ⭐⭐ |
| Docker Desktop Kubernetes | ❌ | 开箱即用,图形界面 | ⭐ | |
| MicroK8s | ⭐9.2k+ | 自动更新,高可用 | MicroK8s is a small, fast, single-package Kubernetes for datacenters and the edge. | ⭐⭐ |
| Kind | ⭐14.9k+ | 快速启动,容器化 | Kubernetes IN Docker - local clusters for testing Kubernetes | ⭐⭐⭐ |
选型建议:按场景选择
🚀 场景一:云服务器部署
推荐方案:K3s
核心优势:
- 易于安装,维护成本低
- 社区活跃,文档丰富
- 专为资源受限环境设计,内存占用低
- 支持高可用模式,适合小型生产环境
💻 场景二:本地开发环境,
推荐方案:Docker Desktop K8s(Windows/macOS)或 Minikube(Linux)
云原生中容器技术学习路线:Docker first,then Kubernetes
核心优势:
- 开箱即用,无需配置
- 图形化界面,操作直观

实战:在Ubuntu上部署K3s
下面我们通过一个完整的实战案例,演示如何在Ubuntu服务器上部署K3s。
环境准备
演示项目环境为:TencentCloud Lighthouse(腾讯云轻量应用服务器),Ubuntu 24.04 LTS,服务器配置为:1核2GB内存,50GB磁盘空间
在开始之前,请确保你的服务器满足以下要求:
- Ubuntu 18.04或更高版本
- 至少1GB可用内存
- 10GB磁盘空间
安装步骤
第一步:一键安装K3s
# 使用国内镜像源加速安装
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -这个命令会完成以下操作:
- 下载K3s二进制文件(约100MB)
- 安装并启动K3s服务
- 配置 kubectl 命令行工具
- 设置必要的系统服务
查看k3s服务状态和计算资源占用情况 top

第二步:验证安装
安装完成后,通过以下命令验证K3s是否正常运行:
# 检查K3s服务状态: active(running)
systemctl status k3s
# 查看集群节点信息: Ready control-plane
kubectl get nodes
# 查看所有运行中的Pod
kubectl get pods -A如果看到类似下面的输出,说明安装成功:
kube-system coredns-7f496c8d7d-qrscc 1/1 Running 0 2d2h
kube-system helm-install-traefik-6g9wx 0/1 Completed 2 2d2h
kube-system helm-install-traefik-crd-vcphz 0/1 Completed 0 2d2h
kube-system local-path-provisioner-578895bd58-dlcsg 1/1 Running 0 2d2h
kube-system metrics-server-7b9c9c4b9c-9dbn9 1/1 Running 0 2d2h
kube-system svclb-nginx-service-2d94a781-s7pmn 0/1 Pending 0 28h
kube-system svclb-traefik-066dab33-kcs4k 2/2 Running 0 2d1h
kube-system traefik-6f5f87584-98dmx 1/1 Running 0 2d1h解决网络问题
K3s访问的镜像仓库默认为DockerHub,在云服务的网络环境下会遇到镜像拉取失败问题。可配置镜像加速器(换源):
# 创建镜像加速配置
sudo mkdir -p /etc/rancher/k3s
sudo cat > /etc/rancher/k3s/registries.yaml << EOF
mirrors:
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.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2 # 运行2个副本
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
resources:
requests:
memory: "64Mi"
cpu: "50m"
limits:
memory: "128Mi"
cpu: "100m"创建服务暴露应用
为了让外部能够访问Nginx,我们需要创建一个Service:
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80 # 服务端口
targetPort: 80 # 容器端口
type: LoadBalancer # 使用负载均衡器类型部署应用
现在执行部署命令:
# 部署Nginx应用
kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml
# 检查部署状态
kubectl get deployments
kubectl get pods
kubectl get services访问应用
部署完成后,通过以下命令获取访问地址:
# 查看服务详情
kubectl get svc nginx-service
# 如果使用LoadBalancer类型,会分配外部IP
# 直接访问该IP的80端口即可
curl http://<EXTERNAL-IP>:80进阶功能:安装Kubernetes Dashboard
如果你喜欢图形化界面,可以安装Kubernetes Dashboard,需使用helm包管理工具,本文不做详细介绍。

总结
本文介绍了三个方面:
- 轻量级Kubernetes的选型方法:根据具体场景选择最合适的方案
- K3s的安装部署:在Ubuntu上快速搭建Kubernetes环境
- 应用部署实战:使用K8s配置文件部署和管理应用
K3s作为一款优秀的轻量级Kubernetes发行版,特别适合中小型项目的预生产环境搭建。它的轻量级特性让我们能够在有限的资源下享受到Kubernetes带来的便利,同时保持了生产环境的兼容性。
下一步建议:
- 尝试部署你自己的微服务应用
- 学习使用helm进行应用包管理
- 基于K3s的CI/CD流水线实践
参考资料
- 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