云原生应用管理在阿里云的实践和挑战
如果无法正常显示,请先停止浏览器的去广告插件。
1. 云原生应用管理在阿里
云的实践和挑战
阿里巴巴高级技术专家-胡志广
2.
3. 自我介绍
胡志广(花名:独鳌)
阿里巴巴云原生 – 高级技术专家
负责工作:
• 曾担任云原生PaaS Core 核心架构师,参与早期KubeVela孵化设计
• 负责阿里云单机方向,完美保障了2021双十一
• 负责阿里云云原生应用管理架构
曾就职百度和京东,曾在百度负责HHVM、PaaS、机器管理,支持春晚红包
4. 大纲
• 云原生应用管理的问题和挑战
• 阿里云云原生如何解决应用管理问题
• 阿里云云原生应用管理实践
5. 云原生应用管理的问题和挑战
6. 云原生应用管理4大核心问题
应用配置
应用资源
应用发布
应用隔离
7. 复杂的应用配置差异性问题
2.配置内容太多
1.⻆色关注点不同
3.集群、地域、环境差异性
集群
研发
我该写哪些?
运维
?
我该怎么写?
Cluser1:
replica: 2
....
Cluser2:
replica: 4
....
地域 beijing:
replica: 2
....
hangzhou:
replica: 4
....
环境 production:
cpu: 4
mem: 16g
....
testing:
cpu:2
mem:1g
....
配置数量=N*N*N*..
8. 云资源使用与应用生命周期不一致
开始
云资源购买
核心问题:
• 云资源购买和使用和应用生命周期的割裂
• 应用管理和使用云资源复杂
• 关注点问题,谁管理云资源,谁管理应用?
应用部署
应用绑定
云账号
annotatioin 配置
云账号、网络
网络
SLB
RDS
...
Ingress 配置SLB
env配置rds
...
9. 应用复杂的发布场景
1.原生支持扩展性差
• Flagger 部分workload 支持
• Argo-rollout 无法直接使用原生
3.资源消耗大
2.原生侵入性高
修改用户定义的deployment name和pod label
Deployment
workload
Workload
1
更新用户定义内容
Pod
Deployment
Workload
Argo-rollout 自实现Rollout 进行发布,
StatefulSet
Workload
2
但不支持原生workload
3
Rollout
Operator
50% V1
-50% V1
Deployment2
Workload
Deployment1
Workload
Workload
V1
Deployment1
Workload
Deployment1
Workload
原生
.....
Workload
双Deployment 消耗资源
Deployment2
Workload
50% V2
0% V1
100% V2
10. 应用各种隔离问题
•
•
Application-A
Operator-A
多应用operator 共用同一Master 冲突问题
Pod内存储、网络、资源等更好隔离
resource
Pod
Pod
Pod
Application-B
Operator-B
Kubernates
resource
Pod
Pod
Pod
Application-C
Operator-C
resource
Pod
Pod
Pod
11. 阿里云云原生如何解决应用管理的问题
12. 应用配置和模型-单集群
K8S:原生管理
OAM:关注点分离通用模型
Application
Deployment
Component
StatefulSet
Service
Ingress
PaaS:用户态傻瓜化使用
AppUserDefinition
Traits
基础项
Deployment Service Strategy cpu mem disk
StatefulSet Ingress istio env replica ...
Monitor ...
attach
....
高级项(可选)
....
安全 运行时
容器 高级运维 ...
运维关注
研发关注
配置多,生命周期不一致
网络
基于OAM 开源框架解耦研发和运维配置
抽象用户定义模板,尽量降低参数透出
Traits
Component
Web型
Trait1
attach
计算型
基础项->必选项
Trait2
Trait3
Trait4
存储型
...
高级项->默认值
13. 应用配置和模型-单集群-OAM
Component
ApplicationConfiguration
14. 应用配置和模型-多集群、多地域、多环境
代码式解决差异性问题
经验点:
•
•
•
User Layer
OAM 开源模型解决关注点分离问题
差异性配置管理解决高速发展企业的
多集群、地域、环境等问题
用户侧暴露参数越少管理越简单
Cluster1
Cluster2
Application Definition
(Common)90%
override
代码式
Application Definition
(Different)10%
Values
Values
Template
声明式
cluser
Conditional
region
env
Cluster3
AppPublishVersion
差异项:10%
(Application Definition Different)
Translation
Service Layer
相同项:90%
(Application Definition Common)
Application(OAM)
Compoent
s
Traits
Cluster1
Application(OAM)
Compoent
s
Traits
Cluster2
Application(OAM)
Compoent
s
Kubernetes Runtime Layer
Traits
Cluster3
15. 应用多环境和云资源场景
•
•
•
一套定义多处环境运行
云资源和应用生命周期一致
Trait 可插拔和动态兼容多环境
Developer
公有云
SRE
ApplicationDefinition
CloudOpenApi
SLB Monitor
VPC Rds
Log ...
CloudResourceManager
生产
绑定
专有云
CloudOpenApi
Monitor
OAM VPC Rds
Traits Log ...
专有云
公有云
Kubernetes
SLB
OAM
Traits
adapter(公有云)
Kubernetes
adapter(专有云)
消费
16. OpenKruise 处理复杂的应用发布问题
• 兼容扩展性好,支持各种workload
• 非浸入性实现,保持原生workload的纯净性
• 渐进式滚动升级,不浪费资源
钉钉社区交流
17. Kubernetes 多租架构解决安全隔离问题
控制面多租:
•
•
租户独享Kubernetes
Master
资源节约(Kubernetes 完全
部署4件套,Tenant Master
只部署api server)
数据面多租:
• 网络隔离:租户独立VPC
• 计算隔离:安全容器隔离
• 存储隔离:云盘
18. 阿里云云原生应用管理平台架构
应用管理平台
外部依赖
应用产品层
Aone
CI
UI层
应用管理 应用部署 应用弹性 应用环境管理 应用集群管理 应用诊断
产品管理 云资源管理 基础设施管理 配置中心 可观测 …
流水线
用户管理
逻辑层
权限管理
应用逻辑层
账号平台
变更系统
阿里云服务
镜像服务
应用服务层
API Server
应用扩展服务
应用元数据
云资源管理 应用诊断 应用环境管理 应用集群管理 基础设施管理 配置中心 变更管理
可观测 运维能力 数据转换
应用部署
可观测服务
应用弹性
应用生命周期
应用回滚
应用暂停
…
应用内核层
Kubernetes
Kubernetes-VC
Default-Traits Cloud-Traits Default-Traits Cloud-Traits
OAM Kruise-manager OAM Kruise-manager
Kruise-daemonset …
Kubernetes-Super
Kruise-manager
Kruise-daemonset
…
19. 阿里云云原生应用管理实践
20. 应用管理全生命周期
21. 应用管理中IaC和产品化的取舍
IaC+GitOps
优势 •
•
• 灵活
版本和审计
集成部署
劣势 •
• IaC学习成本高
答疑成本高
•
•
场景
标准化的IaC非自定义
应用项差异性高
IaC & GitOps
Kubernetes
pipline
• 90% 普通应用通过产品化接入
• 10% 复杂应用采用IaC 接入
产品化界面
优势 •
• 易使用
规范化
劣势 •
• 灵活度低
研发成本高
场景 •
• 公司应用项标准程度高
研发基础薄弱
研发
运维
22. 应用管理效率管理
应用效率
弹性
资源效率
客户(易用)
人效
发布
流式非阻塞发布和SLO监控双重优化
平台(少答疑)
应用可观测建设、诊断能力建设,降低平台人员投入
23. 经验和小结
应用发布
应用配置
•
•
•
• Flagger、Argo-rollout、OpenKruise 适合最重要
• OpenKruise Rollout 扩展性好、非侵入性、渐进式升级
OAM 解决关注点分离
用户侧尽量少暴露参数
差异性配置解决多集群、环境、地域问题
应用资源和多环境
• 一套定义多处运行
• 应用和云资源生命周期一致
应用隔离
• Virtual Cluster 架构解决控制面operator冲突和资源问题
应用实践
•
•
•
•
IaC + GitOps :标准化IaC语法和差异性高的应用
产品化:适用于规范化企业进行统一标准接入
产品化+IaC:90% 接入产品化,10%复杂应用接入IaC
应用效率:资源效率+人效
24.
25.