K8s 常见的部署方式
Kubernetes 部署方式全攻略:从零到生产级的终极选择指南
血泪教训:某初创公司直接使用 Minikube 部署生产环境,导致服务全面崩溃!本文为你揭示不同场景下的正确部署姿势。
一、本地开发环境部署——开发者的"试验田"
1.1 Minikube:极速单机体验
# 快速启动集群(Mac 示例)
minikube start --driver=docker --cpus=4 --memory=8g
minikube dashboard # 开启可视化面板
- 适用场景:
- 功能验证:测试 Deployment 配置
- 学习练习:熟悉 kubectl 基础命令
- 生产禁区:绝对禁止用于正式环境
1.2 Kind:多节点模拟器
# 创建 3 节点集群
kind create cluster --name dev-cluster --config kind-multi-node.yaml
- 优势:
- 轻量级容器化集群
- 支持多控制平面节点
- 适合 CI/CD 流水线测试
二、生产环境部署方案——企业级选择
2.1 自建集群三剑客
| 工具 | 特点 | 适用规模 | 生产案例 |
|---|---|---|---|
| kubeadm | 官方推荐,灵活可控 | 50节点以下 | 中型电商后端 |
| Kubespray | Ansible驱动,自动化程度高 | 100+节点 | 金融行业私有云 |
| K3s | 轻量级,适合边缘计算 | IoT设备集群 | 智慧工厂传感器网 |
kubeadm 部署示例:
# 控制平面初始化
kubeadm init --control-plane-endpoint "HA-VIP:6443" \
--upload-certs --pod-network-cidr=10.244.0.0/16
# 工作节点加入
kubeadm join HA-VIP:6443 --token xxxx --discovery-token-ca-cert-hash sha256:xxxx
2.2 云厂商托管服务对比
| 平台 | 服务名称 | 核心优势 | 典型客户 |
|---|---|---|---|
| AWS | EKS | 深度集成AWS生态 | 出海电商 |
| GKE | 原生K8s技术支持 | 大数据分析公司 | |
| 阿里云 | ACK | 国内访问速度快 | 政务云项目 |
| 腾讯云 | TKE | 游戏行业优化 | 手游开发商 |
生产建议:
- 跨国业务选择多云部署(EKS + GKE)
- 国内业务优先考虑网络延迟(ACK/TKE)
三、特殊场景部署方案——打破常规
3.1 边缘计算场景
- 方案选择:
- K3s:<100MB 内存占用
- MicroK8s:原子更新能力
- 部署特点:
# K3s 边缘节点配置 k3s server --disable servicelb --disable traefik
3.2 混合云部署
- 架构示例:
本地数据中心(kubeadm) ↔ 云上托管集群(EKS) ↑ 边缘节点(K3s) - 关键技术:
- 集群联邦(Kubefed)
- 统一网络方案(Calico Overlay)
四、生产环境部署检查清单
4.1 安全加固项
4.2 高可用配置
graph TD
A[外部负载均衡] --> B[Master1]
A --> C[Master2]
A --> D[Master3]
B --> E[ETCD集群]
C --> E
D --> E
4.3 监控告警体系
| 层级 | 工具组合 | 监控重点 |
|---|---|---|
| 基础设施 | Node Exporter + Prometheus | CPU/内存/磁盘使用率 |
| 集群组件 | kube-state-metrics | 控制平面健康状态 |
| 应用层 | Grafana + Loki | 业务日志与性能指标 |
五、部署方式决策树
-
是否需要完全控制?
- 是 → 自建集群(kubeadm/Kubespray)
- 否 → 云托管服务(EKS/GKE)
-
集群规模?
- <10节点 → kubeadm
- 10-100节点 → Kubespray
-
100节点 → 云托管 + 自建混合
-
是否有边缘节点?
- 是 → K3s/MicroK8s
- 否 → 标准方案
生产环境黄金法则:
- 预生产环境必须与生产环境部署方式一致
- 使用 Infrastructure as Code(Terraform + Ansible)
- 定期进行灾难恢复演练
- 控制平面与工作节点硬件隔离
浙公网安备 33010602011771号