服务治理之 平台与应用服务解耦

简介: 业务完成`微服务改造(计算存储分离、控制数据分离)`,以`Kubernetes做运行时生命周期管理`, 并可以在`水平扩缩容`、`驱逐操作对业务无损`的云原生化改造

服务治理之 平台与应用服务解耦

原则

业务完成微服务改造(计算存储分离、控制数据分离),以Kubernetes做运行时生命周期管理, 并可以在水平扩缩容驱逐操作对业务无损的云原生化改造

1 首要原则:遏制应用无止境的使用operator来控制应用

遏制应用无止境的使用operator来控制应用,
建议使用hpavpa自带ingress-controller crds来控制 南北、东西 流量变化或者依赖服务可用性做调整

2 平台资源调用

2.1 禁止configmapmetaserver 服务使用

configmap只作为静态数据使用,不作为源数据服务使用。
举个例子:

  • configmap中配置服务其中基础配置: 日志等级启动模式功能开关等;
  • 不能将服务直接的 分布式锁Pod实例之间业务数据同步使用

2.2 禁止configmap配置中心 使用

configmap只作为静态数据使用,不作为config center使用。

举个例子:

  • configmap中只配置需要访问远程配置中心:URL地址、认证方式、请求策略等;
  • 不能直接用作pod的flag 配置开关;

2.3 禁止secret证书中心 使用

secret只作为静态的少量敏感信息例如密码、令牌或密钥的对象,不作为证书中心使用。

举个例子:

  • secret中配置 TLS 证书
  • 不能将secret作为证书ca 管理中心,频繁变更和下发证书;

2.4 禁止etcd服务 直接当 服务注册中心 使用

K8s 源数据etcd服务只作为Kubernetes底层数据使用,不能直接自定义CRD、自定义的configmapsecret来做服务注册发现

可以使用方式:通过KubeDNS+Kubernetes Service做服务发现;

2.5 禁止将 对象的label 当做容器运行时的metaserver使用

Label 只能做 key-value tag标签使用. 不能在pod 容器运行时,动态管理业务自用数据;

Label 的变更,只能是运维态做变更

2.6 禁止将 对象的annotation 当做容器运行时的metaserver使用

2.7 遏制将 对象的annotation 当做容器运行时的metaserver使用

annotation 只能做 key-value tag标签使用. 遏制在 pod 容器运行时,动态管理业务自用数据;
annotation 的变更,只能是运维态做变更 和 控制面组件 patch 使用;

3 安全性

3.1 遏制申请 特权容器

遏制 特权容器 申请; 引伸 业务服务化,减少 os 工具封装到Container中执行;

3.2 遏制避免挂在 host os 配置,在Pod中进行更改

遏制 host OS资源 挂载到Pod,扩大异常影响半径;
举例:
case:将iptable-storge相关资源挂载pod中,做xtable锁操作;

3.3 遏制rabc最小授权原则,遏制 全局/资源全部类型申请

  1. 减少ClusterRoleClusterRoleBinding全局资源类型申请;
  2. 禁止资源权限全局申请
    rules:
    - apiGroups:
     - '*'
     resources:
     - '*'
     verbs:
     - '*'
    

4 业务依赖client-go应用

纯微服务、纯业务应用不应该会用到 client-go/java SDK

4.1 要求业务依赖client-go应用版本不小于 Kubernetes apiserver version 2个大版本

版本问题:

  • 如果apiserver版本为v1.18.x, 那么依赖的client-go版本不能小于v0.16.x版本.
  • 如果apiserver版本为v1.18.x, client-go 使用版本大于v0.18.x原则上是可以的(需要测试验证功能)

4.2 要求对于依赖client-go应用,部署态显示配置QPSBurst

4.3 限制轮训 list all pod/node/configmap/secret等

限制全局轮训list all接口。 可以跟换为以下两种方式:

  1. 通过watch 方式添加add、delete、update 3这种event回调;
  2. 其中中添加opt.metav1(xxx) 设置条件:比如namespace选择、单次请求大小(500个)、filter tag不符合规范的object等

4.4 限制direct etcd请求,通过apiserver cache informer方式请求

4.5 要求对于watch资源,通过InformerFactory方式watch

4.6 遏制对apiserver 聚合aggregation api调用

5. 高可用

5.1 要求服务驱逐时,长/短链接、流量(东西、南北)无损

长/短链接:

  • 长链接:长链接主动connect close. 通过client 链接重新选实例建立,将链接全部驱逐掉;
  • 短链接:确保本次处理结束。优雅关闭链接;

流量:
通过设置 perStop + 实例分Step变更,实现流量无损;

5.1 建议无状态多实例部署;有状态实例支持sharding;

  • 有状态实例实例sharding比较考验业务架构,可选择"多活+数据同步"

6. 健康检查

6.1 健康检查中,首选 HTTP 探测,备选脚本探测,尽量避免 TCP 探测

6.2 要求所有容器添加 ReadinessProbe,谨慎使用 LivenessProbe

如果业务应用实例重启、驱逐敏感, 谨用 LivenessProbe

6.3 要求对于服务支持优雅重启,避免异常导致僵尸进程

支持容器runtime发出信号量,接受并处理。

7. 其他

7.1 建议部署态,亲和/反亲和设置

7.2 建议通过service、内部DNS 或 南北项LB方式服务直接调用

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 Kubernetes 应用服务中间件
Kubernetes权威指南-基础篇
Kubernetes(K8s)是Google开源的容器编排系统,源自Borg,现为CNCF旗舰项目。它自动化部署、扩展和管理容器化应用,提供服务发现、负载均衡、自我修复、配置管理等功能,是云原生时代的基础设施核心。
1160 1
|
3月前
|
缓存 前端开发 JavaScript
阿里云CDN+OSS静态资源全链路优化实战,解决跨境电商外贸独立站海外加载慢问题
本文针对跨境电商平台静态资源体积大、缓存混乱、海外延迟高等痛点,基于阿里云OSS与CDN,提出“自动压缩+智能缓存+防盗链”四层优化方案,已落地Taoify项目,海外首屏提速超60%,显著改善LCP与Core Web Vitals指标。(239字)
298 0
|
6月前
|
安全 Java 测试技术
Java 工程化体系:代码规范与团队协作全链路标准
本文系统阐述Java工程化规范体系,涵盖代码命名、格式、异常处理、日志、注释、模块结构、Git流程、自动化门禁等七大维度,强调规范是团队协作的“通用语言”,须通过工具链强制落地,而非依赖人工自觉,最终实现高质量、可持续的研发交付。
581 1
|
4月前
|
编解码 网络安全
如何利用Aeroshell的VNC连接功能 ?基于Deepin桌面环境配置远程桌面完整指南
本文详解Deepin DDE下TigerVNC远程桌面黑屏/断连问题的根因与解决方案:绕过systemd依赖,手动启动dde-session、dock等核心组件,并配置dbus环境;附tigervnc 共享桌面备选方案及防火墙、自启配置,实测可用。(239字)
356 0
|
8月前
|
运维 JavaScript 前端开发
Teek Design Vue3 Element Plus 中后台系统开发模板
Teek Design Vue3 是基于 Vue3 + TypeScript + Vite + Element Plus 的中后台系统开发模板,支持多布局、RBAC权限、主题切换与丰富组件,集成 ECharts、富文本等常用能力,开箱即用,适合企业后台、数据看板等场景。MIT 开源协议,配备完整工程化规范与多环境部署方案。
1045 2
Teek Design Vue3 Element Plus 中后台系统开发模板
|
运维 监控 关系型数据库
MySQL高可用方案:MHA与Galera Cluster对比
本文深入对比了MySQL高可用方案MHA与Galera Cluster的架构原理及适用场景。MHA适用于读写分离、集中写入的场景,具备高效写性能与简单运维优势;而Galera Cluster提供强一致性与多主写入能力,适合对数据一致性要求严格的业务。通过架构对比、性能分析及运维复杂度评估,帮助读者根据自身业务需求选择最合适的高可用方案。
|
9月前
|
存储 弹性计算 容灾
高可用架构设计:多可用区部署策略
本文详解阿里云多可用区高可用架构设计,涵盖计算、数据、网络层冗余部署与故障转移方案,结合容灾演练与成本优化策略,以电商系统为例提供多AZ实践指南,助力企业构建稳定、高效的业务连续性体系。
736 0
|
8月前
|
人工智能 算法 机器人
职场新规则:比谁加班多已经过时了,现在比的是谁更会当“AI调度官”
本文揭示AI Agent时代职场新规则:努力≠成功,“AI调度官”正以智能体工作流(Agentic Workflow)重构竞争力——用逻辑调度算力,以系统替代苦干。告别内卷加班,拥抱“睡后生产力”,成为驾驭AI的流程建筑师与人性翻译官。
389 1
|
人工智能 Kubernetes Cloud Native
MSE Nacos Controller:为 Kubernetes 生态构建配置管理与服务发现的桥梁
在企业云原生转型过程中,如何实现传统微服务与 Kubernetes 服务的配置统一管理、服务互通及协议转换成为关键挑战。MSE Nacos Controller 应运而生,作为连接 Kubernetes 与 Nacos 的桥梁,支持 ConfigMap 与 Nacos 配置双向同步、服务自动注册发现,并助力 Higress 等 MCP 网关实现 REST API 向 AI 可调用 MCP 服务的转换,全面提升系统治理能力与智能化水平。
1093 32