一、什么是 Kubernetes(K8S)

Kubernetes(简称K8S)是一个容器编排平台,用于管理大量容器的部署、扩缩容、调度与生命周期。
如果用一句话概括:
Docker 解决"如何运行一个容器",而 Kubernetes
解决"如何在多台机器上稳定运行大量容器"。
二、为什么需要 K8S?
当系统规模扩大时,例如:
- React 前端
- Django 后端
- MySQL 数据库
- Redis 缓存
- AI 服务
- n8n 自动化服务
会出现以下问题:
- 容器挂掉如何自动恢复?
- 流量高峰如何自动扩容?
- 如何进行滚动更新?
- 如何在多台服务器之间调度?
K8S 提供:
- 自动重启
- 自动扩容(HPA)
- 滚动更新
- 自动回滚
- 服务发现
- 负载均衡
三、K8S 架构组成
K8S 是一个集群系统,由:
1. 控制平面(Control Plane)
负责整个集群的管理,包括:
- API Server
- Scheduler(调度器)
- Controller Manager
- etcd(存储集群状态)
2. Worker 节点
负责运行实际业务容器(Pod)。
四、核心概念详解
1. Pod
K8S 的最小运行单位。
通常一个 Pod 运行一个容器。
2. Deployment
用于定义:
- 副本数量
- 镜像版本
- 更新策略
示例:
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: django-app
spec:
replicas: 3
selector:
matchLabels:
app: django
template:
metadata:
labels:
app: django
spec:
containers:
- name: django
image: my-django:v1
3. Service
用于为 Pod 提供稳定访问地址。
类型包括:
- ClusterIP(内部访问)
- NodePort(节点端口)
- LoadBalancer(云负载均衡)
4. Ingress
用于管理域名访问和路由规则,相当于高级反向代理。
5. ConfigMap 与 Secret
用于管理配置文件和敏感信息(如数据库密码)。
五、K8S 使用流程
1. 编写 Dockerfile
dockerfile
FROM python:3.11
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["gunicorn", "app.wsgi"]
2. 构建镜像
bash
docker build -t my-django:v1 .
3. 推送镜像
bash
docker push my-django:v1
4. 编写 K8S YAML 文件
- deployment.yaml
- service.yaml
- ingress.yaml
5. 部署应用
bash
kubectl apply -f deployment.yaml
6. 查看运行状态
bash
kubectl get pods
kubectl get services
kubectl logs pod-name
六、K8S 与 Docker Compose 对比
| 功能 | Docker Compose | Kubernetes |
|---|---|---|
| 单机部署 | ✔ | ✔ |
| 多机调度 | ✘ | ✔ |
| 自动扩容 | ✘ | ✔ |
| 灰度发布 | ✘ | ✔ |
| 生产级推荐 | 一般 | 标准 |
七、适用场景
适合使用 K8S 的场景:
- 微服务架构
- 多服务器部署
- 高并发系统
- 需要灰度发布
- 需要平台化管理
不适合的场景:
- 单机小项目
- 个人练习项目
- 简单部署需求
八、学习路径建议
第一阶段
- 熟练 Docker
- 理解容器网络
- 掌握 Linux 基础
第二阶段
- 理解 CI/CD
- 熟悉镜像仓库
- 理解灰度发布概念
第三阶段
- 本地 Minikube 练习
- 理解 Helm
- 搭建单节点 K8S
九、总结
Kubernetes 是现代云原生架构的核心基础设施。
它的价值在于:
- 自动化
- 可扩展
- 高可用
- 平台化能力
但在系统规模较小时,Docker + Nginx + CI/CD 通常已足够。
当系统复杂度提升后,K8S 将成为必然选择。