Appearance
部署运维
**本文引用的文件** - [docker-compose.yml](file://lemes-cloud/src/devops/docker-compose/docker-compose.yml) - [base.yml](file://lemes-cloud/src/devops/docker-compose/base.yml) - [nacos.yml](file://lemes-cloud/src/devops/docker-compose/nacos.yml) - [install.sh](file://lemes-cloud/src/devops/k8s/install.sh) - [deploy-master.sh](file://lemes-cloud/src/devops/k8s/deploy-master.sh) - [baremetal-nginx-ingress.yaml](file://lemes-cloud/src/devops/k8s/baremetal-nginx-ingress.yaml) - [kube-flannel.yaml](file://lemes-cloud/src/devops/k8s/kube-flannel.yaml) - [lemes-web.yaml](file://lemes-cloud/src/devops/console/k8s/template/lemes-web.yaml) - [lemes-nacos.yaml](file://lemes-cloud/src/devops/console/k8s/template/lemes-nacos.yaml) - [gateway-ingress.yaml](file://lemes-cloud/src/devops/console/k8s/template/gateway-ingress.yaml) - [lemes-eureka.yaml](file://lemes-cloud/src/devops/console/k8s/template/lemes-eureka.yaml) - [redis.yaml](file://lemes-cloud/src/devops/console/k8s/template/redis.yaml) - [devops-ci.yml](file://lemes-cloud/devops-ci.yml) - [Jenkinsfile](file://lemes-cloud/Jenkinsfile)目录
简介
本文件面向运维工程师,提供 DeviceMate(后端统称 lemes-cloud)项目的完整部署与运维指导,覆盖容器化部署、Kubernetes 集群配置、负载均衡与入口策略、CI/CD 流水线、监控与日志、性能分析、生产部署指南、容量规划、故障恢复、安全与备份/灾难恢复等主题。内容基于仓库中的 devops 配置与模板文件进行梳理与总结,帮助从开发到生产的全链路落地。
项目结构
lemes-cloud 提供了两套主要的部署形态:
- Docker Compose:用于本地或小规模测试环境,快速拉起网关、认证、Nacos、Redis 及部分业务服务。
- Kubernetes:用于生产级部署,包含安装脚本、Flannel 网络、Nginx Ingress、服务清单模板等。
图表来源
- base.yml:1-70
- docker-compose.yml:1-136
- baremetal-nginx-ingress.yaml:1-654
- kube-flannel.yaml:1-224
- lemes-web.yaml:1-80
- lemes-nacos.yaml:1-151
- gateway-ingress.yaml:1-89
章节来源
- docker-compose.yml:1-136
- base.yml:1-70
- nacos.yml:1-25
- install.sh:1-98
- deploy-master.sh:1-51
- baremetal-nginx-ingress.yaml:1-654
- kube-flannel.yaml:1-224
- lemes-web.yaml:1-80
- lemes-nacos.yaml:1-151
- gateway-ingress.yaml:1-89
- lemes-eureka.yaml:1-96
- redis.yaml:1-105
核心组件
- 网关与认证
- lemes-gateway:统一入口,配合 Ingress 实现路径重写与超时控制。
- lemes-auth:鉴权服务,依赖 Nacos 进行注册发现。
- 配置中心与注册中心
- Nacos:提供配置管理与服务注册,支持集群模式与外部 MySQL。
- 缓存
- Redis:通过 ConfigMap 注入配置,提供持久化与密码保护。
- Web 应用
- lemes-web:静态资源服务,通过 Ingress 对外暴露。
- CI/CD
- devops-ci.yml:多环境打包与 Sonar 扫描。
- Jenkinsfile:Jenkins 流水线,指定 JDK 版本与构建命令。
章节来源
- lemes-web.yaml:1-80
- lemes-nacos.yaml:1-151
- gateway-ingress.yaml:1-89
- redis.yaml:1-105
- devops-ci.yml:1-27
- Jenkinsfile:1-13
架构总览
下图展示生产级 K8s 部署的关键组件与交互:Ingress 控制器负责外部流量接入,Flannel 提供跨主机网络,Nacos 提供注册与配置,Gateway 作为统一入口,Web 与各业务服务通过 Service/Ingress 暴露。
图表来源
- baremetal-nginx-ingress.yaml:261-291
- kube-flannel.yaml:134-224
- lemes-nacos.yaml:1-151
- gateway-ingress.yaml:19-42
- lemes-web.yaml:63-80
- redis.yaml:18-105
详细组件分析
Docker Compose 部署(本地/测试)
- 适用场景:本地联调、快速验证、小规模测试。
- 关键点:
- 网关与认证服务通过端口映射对外暴露。
- Nacos 以独立服务运行,可挂载外部 MySQL。
- Redis 使用 host 网络模式,便于本机直连。
- 日志目录挂载至宿主机,便于采集与分析。
图表来源
章节来源
Kubernetes 安装与初始化
- 系统准备:关闭防火墙/SELinux、禁用 swap、配置阿里云 k8s 源、启用 ipvs。
- 安装 Docker 20.10.5 与 kubelet 1.20.5,并配置私有仓库镜像加速。
- 初始化 Master 节点,设置 NodePort 范围,安装 Flannel 与 Nginx Ingress。
- 通过 GitLab 私有令牌拉取网络与入口资源清单。
图表来源
章节来源
网络与入口(Flannel + Nginx Ingress)
- Flannel:DaemonSet 方式安装,提供 VXLAN 跨主机网络,绑定 CNI 配置。
- Nginx Ingress:安装 RBAC、ServiceAccount、Deployment 与 Admission Webhook,Service 类型为 NodePort,暴露 80/443。
图表来源
章节来源
服务清单模板(Web/Gateway/Nacos/Eureka/Redis)
- lemes-web:ClusterIP + Ingress /,暴露静态资源。
- lemes-nacos:StatefulSet 集群,NodePort 暴露,支持外部 MySQL。
- lemes-gateway:ClusterIP + Ingress /lemes-api,配置路径重写与超时参数。
- lemes-eureka:示例注册中心模板(如需保留可按需启用)。
- Redis:ConfigMap 注入配置,NodePort 暴露,带健康检查。
图表来源
章节来源
- lemes-web.yaml:1-80
- lemes-nacos.yaml:1-151
- gateway-ingress.yaml:1-89
- lemes-eureka.yaml:1-96
- redis.yaml:1-105
CI/CD 流水线
- devops-ci.yml:定义打包产物、环境 profiles 与 Sonar 扫描参数。
- Jenkinsfile:引入公共库,设置 JDK 与构建命令,控制是否构建镜像。
图表来源
章节来源
依赖关系分析
- 组件耦合
- Gateway 依赖 Nacos 进行注册发现;Web 通过 Ingress 将请求转发至 Gateway。
- Redis 为共享缓存,Gateway/业务服务可按需访问。
- 外部依赖
- Nacos 可对接外部 MySQL;Ingress 依赖 Flannel 提供网络连通性。
- 潜在风险
- 单点:Nacos 默认模板为单实例,生产建议使用 StatefulSet 集群。
- 网络:确保 Flannel 与 Ingress 的 RBAC 权限正确,避免 403/转发失败。
图表来源
章节来源
性能考量
- 网络性能
- 启用 ipvs 与 Flannel VXLAN,保证跨主机通信效率。
- Ingress 超时与代理大小参数已配置,避免大文件上传/下载阻塞。
- 资源配额
- Nacos/Redis/网关建议设置合理的 requests/limits,避免资源争抢。
- 负载均衡
- Ingress 使用 NodePort 暴露,结合后端服务副本数实现水平扩展。
- 日志与可观测性
- 建议接入集中式日志(如 ELK/ Loki),采集容器 stdout 与应用日志目录。
故障排查指南
- 网络问题
- 检查 Flannel DaemonSet 是否正常,确认 CNI 配置与主机端口可达。
- 查看 kube-flannel 与 kube-system 命名空间权限。
- 入口问题
- 检查 ingress-nginx 控制器状态与日志,确认 Service 类型与端口映射。
- 校验 Ingress 路由规则与注解(如路径重写、超时)。
- 注册中心
- Nacos 集群状态与 Pod 健康检查;确认外部 MySQL 连通性与凭据。
- 缓存问题
- Redis 探针与密码配置;确认 NodePort 可达与持久化卷挂载。
章节来源
- kube-flannel.yaml:134-224
- baremetal-nginx-ingress.yaml:261-291
- lemes-nacos.yaml:1-151
- redis.yaml:18-105
结论
本指南基于仓库现有配置,给出了从 Docker Compose 到 Kubernetes 的完整部署路径,明确了网关、注册/配置中心、缓存与入口的协作方式,并提供了 CI/CD、性能与故障排查要点。建议在生产环境中优先采用 K8s 模板,完善 Nacos 集群、日志与监控体系,持续优化资源配额与网络策略。
附录
生产部署步骤(K8s)
- 准备阶段
- 执行安装脚本完成系统与组件安装,初始化 Master 节点。
- 网络与入口
- 应用 Flannel 与 Nginx Ingress 清单,确认控制器与 RBAC 正常。
- 服务编排
- 应用 lemes-nacos、lemes-gateway、lemes-web、redis 等模板,校验 Ingress 路由与 Service 暴露。
- 验收
- 通过浏览器访问 Web 与 API,检查日志、探针与网络连通性。
章节来源