Skip to content

Kubernetes编排架构

**本文引用的文件** - [lemes-web.yaml](file://lemes-cloud/src/devops/k8s/service/base/lemes-web.yaml) - [gateway.yaml](file://lemes-cloud/src/devops/k8s/service/base/gateway.yaml) - [lemes-auth.yaml](file://lemes-cloud/src/devops/k8s/service/expose-port/lemes-auth.yaml) - [lemes-service-dm-common.yaml](file://lemes-cloud/src/devops/k8s/service/expose-port/lemes-service-dm-common.yaml) - [lemes-service-dm-device.yaml](file://lemes-cloud/src/devops/k8s/service/expose-port/lemes-service-dm-device.yaml) - [lemes-service-dm-store.yaml](file://lemes-cloud/src/devops/k8s/service/expose-port/lemes-service-dm-store.yaml) - [lemes-service-dm-workflow.yaml](file://lemes-cloud/src/devops/k8s/service/expose-port/lemes-service-dm-workflow.yaml) - [baremetal-nginx-ingress.yaml](file://lemes-cloud/src/devops/k8s/baremetal-nginx-ingress.yaml) - [config.yaml](file://lemes-cloud/src/devops/k8s/service/base/config.yaml) - [secret.yaml](file://lemes-cloud/src/devops/k8s/service/base/secret.yaml) - [namespace.yaml](file://lemes-cloud/src/devops/k8s/service/base/namespace.yaml) - [nacos.yaml](file://lemes-cloud/src/devops/k8s/service/base/nacos.yaml)

目录

  1. 引言
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

引言

本文件面向DeviceMate项目在Kubernetes上的云原生微服务部署,系统化梳理Pod部署策略(副本数、资源限制、亲和性与容忍)、Service服务发现(ClusterIP/NodePort/LoadBalancer选择与网关集成)、Ingress流量入口(Nginx Ingress控制器、TLS证书、路由规则与负载均衡)、配置与密钥管理(ConfigMap/Secret、环境变量注入与热更新)、命名空间与RBAC权限控制、存储卷管理(持久化与动态供应),并给出完整的微服务上线与运维建议。

项目结构

DeviceMate的Kubernetes编排主要位于lemes-cloud/src/devops/k8s目录下,按“基础组件”“服务暴露”“作业与任务”“业务域”等维度组织。其中:

  • 基础组件:命名空间、通用配置、通用密钥、Nacos、Ingress控制器等
  • 服务暴露:各微服务以NodePort对外暴露
  • 业务域:设备、仓储、工作流等子域服务
  • Ingress:集中式Nginx Ingress控制器部署与配置

图表来源

章节来源

核心组件

  • 命名空间与隔离:通过独立命名空间实现租户级或环境级隔离,便于资源配额与权限控制。
  • 通用配置与密钥:ConfigMap集中存放连接串、时区、JVM参数等;Secret存放TLS证书等敏感信息。
  • 配置中心:Nacos以StatefulSet部署,提供注册与配置能力,支持集群模式与Ingress对外访问。
  • 网关层:集中式网关负责路由、鉴权、限流与健康检查,具备优雅停机与探针配置。
  • Ingress入口:Nginx Ingress控制器统一接入,支持HTTP/HTTPS、Webhook校验与NodePort暴露。
  • 微服务暴露:各业务服务通过NodePort对外暴露,便于内网直连与测试验证。

章节来源

架构总览

DeviceMate采用“Ingress → 网关 → 业务服务”的三层架构。Ingress作为统一入口,Nginx控制器解析路由规则并将请求转发至网关;网关再根据服务发现与路由规则调用后端业务服务。配置中心Nacos为服务提供注册与配置下发能力。

图表来源

详细组件分析

Pod部署策略与资源管理

  • 副本集与滚动升级:网关采用Deployment,定义副本数与滚动更新策略;前端Web同样采用Deployment并设置副本数。
  • 资源限制与请求:网关为容器设置内存请求与限制,避免资源争抢;前端Web未显式声明资源,建议按需补充requests/limits。
  • 存活/就绪/启动探针:网关配置了存活、就绪与启动探针,确保健康状态与启动稳定性;前端Web未配置探针,建议补齐。
  • 优雅停机:网关注入优雅停机生命周期钩子,先下线注册再等待,保障平滑下线。
  • 主机路径与Sidecar:网关挂载主机日志目录与emptyDir作为Sidecar共享卷,便于采集与代理。

图表来源

章节来源

亲和性与容忍策略

  • Pod反亲和:网关通过节点级反亲和,尽量将副本分散在不同节点,提升可用性。
  • 节点容忍:Nacos StatefulSet对master节点设置了容忍,允许在控制面节点运行。
  • 调度建议:生产环境建议为关键服务增加节点选择器与污点容忍,结合资源池隔离。

章节来源

Service服务发现机制

  • 类型选择:
    • ClusterIP:用于内部服务间通信,如Web服务的ClusterIP Service。
    • NodePort:用于对外暴露,如认证与各业务域服务均以NodePort暴露。
  • 服务网格集成:当前未见Service Mesh配置,若需集成可引入Istio/Linkerd,并通过DestinationRule/TrafficPolicy进行精细化治理。

图表来源

章节来源

Ingress流量入口配置

  • 控制器安装:通过裸金属Nginx Ingress控制器清单安装,含ServiceAccount、RBAC、Deployment与Webhook。
  • NodePort暴露:控制器Service类型为NodePort,便于外部访问;同时提供HTTP/HTTPS端口。
  • TLS证书:示例中包含TLS Secret,可用于Ingress TLS绑定;建议为各域名配置对应证书。
  • 路由规则:Web与Nacos均配置了Ingress路由,前缀匹配到对应Service端口。
  • 负载均衡策略:默认Round-Robin;可通过注解扩展会话亲和、超时、压缩等策略。

图表来源

章节来源

ConfigMap与Secret配置管理

  • ConfigMap:集中存放Nacos连接信息、时区、JVM参数等,通过envFrom或valueFrom注入到容器。
  • Secret:存放TLS证书与私钥,支持k8s.io/tls类型;建议定期轮换并配合证书管理工具。
  • 环境变量注入:网关与Web均通过valueFrom引用ConfigMap键值注入环境变量。
  • 热更新:ConfigMap变更后,容器内挂载路径与环境变量注入会在一定时间内生效;建议结合滚动更新策略。

图表来源

章节来源

命名空间与RBAC权限控制

  • 命名空间:通过Namespace资源隔离不同环境或租户。
  • RBAC:Ingress控制器包含ClusterRole/Role与对应的Binding,授予其对ConfigMap、Secret、Service、Ingress等资源的读写权限;建议为各团队最小授权。

章节来源

存储卷管理

  • 主机路径:网关挂载主机日志目录,便于本地采集与审计;建议结合PVC与日志收集方案。
  • EmptyDir:作为Sidecar共享卷,临时存放代理或探针数据。
  • 动态存储:当前未见StorageClass与PVC示例,建议为有状态服务(如数据库)配置StorageClass与PVC。

章节来源

依赖关系分析

  • 网关依赖:Nacos提供注册与配置;Ingress提供统一入口;各业务服务通过NodePort暴露供网关调用。
  • Web依赖:通过Ingress路由到Web Service,再由Deployment提供副本与探针。
  • 控制器依赖:Ingress控制器需要RBAC与Webhook配置,确保准入校验与资源访问。

图表来源

章节来源

性能考虑

  • 资源规划:为CPU密集型服务设置requests/limits,避免突发导致的OOM或节流。
  • 探针优化:合理设置探针超时与周期,避免频繁误判;对慢启动服务延长initialDelaySeconds。
  • 负载均衡:Ingress默认轮询;对长连接或WebSocket场景建议启用会话亲和或切换到支持的LB。
  • 缓存与CDN:静态资源建议前置CDN与缓存策略,降低后端压力。
  • 日志与指标:统一接入日志与指标采集,结合告警策略提升可观测性。

故障排查指南

  • Ingress无法访问:检查Ingress规则、Service端口与后端Pod就绪状态;确认NodePort是否可达。
  • 服务无响应:查看Pod探针状态、容器日志与优雅停机脚本;确认Nacos注册状态。
  • TLS握手失败:核对Secret类型与证书链完整性;确认Ingress TLS配置。
  • 资源不足:检查Pod事件与节点资源;调整requests/limits或扩容。

章节来源

结论

DeviceMate的Kubernetes编排以Nginx Ingress为统一入口,结合网关与NodePort服务实现清晰的分层架构。通过ConfigMap/Secret集中管理配置与密钥,配合探针与优雅停机保障稳定性。建议后续完善RBAC与资源配额、引入服务网格与动态存储、强化可观测性与安全基线,以满足生产级要求。

附录

  • 建议新增:StorageClass/PVC、PodDisruptionBudget、HPA/VPAs、网络策略、证书管理器(如cert-manager)。
  • 最佳实践:最小权限RBAC、只读根文件系统、非root运行、健康探针与优雅停机、灰度发布与回滚策略。