arthurchiao's blog -...
TRANSCRIPT
![Page 1: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/1.jpg)
携程的容器化交付实践
大浪
携程研发经理
![Page 2: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/2.jpg)
目录
• PaaS概况
• PaaS平台的容器交付
•容器的镜像管理
• Mesos迁移 K8s
![Page 3: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/3.jpg)
PaaS概况
![Page 4: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/4.jpg)
Overview
9000+ 应用60% 容器
3000+ 研发1500+ DAU
6000+ 发布/天2/3 容器
![Page 5: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/5.jpg)
容器实践Milestone
2016 2017 2018
上线 Mesos K8s胖容器Nova Docker
2015
![Page 6: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/6.jpg)
架构
![Page 7: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/7.jpg)
PaaS平台的容器交付
![Page 8: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/8.jpg)
交付
![Page 9: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/9.jpg)
版本的演进
Git Tags源码
Packages源码 + 代码依赖
Images源码 + 代码依赖 + 环境依赖
![Page 10: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/10.jpg)
版本管理
![Page 11: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/11.jpg)
制作镜像
![Page 12: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/12.jpg)
分环境交付镜像
PRO
UAT
FAT
+
JaCoCo
+
BadSQL
+
AutoTag
版本
![Page 13: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/13.jpg)
服务集市的解决方案
FROM scratch
LABEL name="CentOS Base Image" \
vendor="CentOS" \
license="GPLv2" \
build-date="20171128"
ADD centos-7-docker.tar.xz
CMD ["/bin/bash"]
集市服务数量: 12开通服务数量: 5000+
…
RUN copy jacoco.jar
&& bash
jacocoagent.sh
![Page 14: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/14.jpg)
资源管理
全环境全类型一站式的管理平台
![Page 15: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/15.jpg)
日志集成
Web Console Log Viewer
• 日志类型• tomcat catanila gc access.log …
• stdout stderr
• 日志收集• mount宿主机 + filebeat
• 日志清理• logrotate
• xfs project quota
![Page 16: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/16.jpg)
监控集成
• Hickwall (携程的监控平台)
• Hickwall server -> kubelet API
• kubelet API
• cadvisor: /stats/xxx, 环境变量
• OOM
• docker: cgroup notification
![Page 17: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/17.jpg)
发布模式 分环境的带堡垒批次滚动发布
![Page 18: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/18.jpg)
发布管理
![Page 19: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/19.jpg)
容器的镜像管理
![Page 20: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/20.jpg)
Harbor单集群架构
• HA Solution• One region One cluster
![Page 21: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/21.jpg)
Harbor联邦架构
Cross-IDC Image Sync
1. Push image to harbor
2. Populate event to UI via Webhook
3. Retrieve slave info from Fedoro
4. Commit syncing job to Job services
5. Sync image to slaves
Success Rate: 99.7%Total Image: 3500 / daySLA: < 20s
![Page 22: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/22.jpg)
镜像回源
回源率: 5%回源开销: 2s -> 14s
![Page 23: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/23.jpg)
基础镜像分发
• 去中心化的分发策略 • 灰度发布• 分环境• 指定应用比例的灰度• 白名单
![Page 24: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/24.jpg)
Mesos迁移 K8s
![Page 25: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/25.jpg)
为什么要迁移
已解决 待解决
应用交付 无状态应用的交付 有状态应用的交付
资源弹性 手动扩缩容 自动弹性伸缩
![Page 26: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/26.jpg)
为什么要迁移 cont.
服务提供者资源提供者
• 只提供容器实例,无编排• 发布系统需要负责网络实例的状态管理
• 用户关注实例、IP
• 提供更高层次的抽象• 屏蔽 IaaS 层的资源管理• 用户关注服务、策略
![Page 27: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/27.jpg)
K8s的选型
Stateless on StatefulSet
• 全部固定 IP• 应用有状态/无状态边界模糊• 保持一致的发布体验
• Deployment 无状态应用• StatefulSet 有状态应用• CRD Operator
![Page 28: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/28.jpg)
迁移方案
存量Mesos应用迁移 单cluster容量瓶颈 K8s可用性风险
兼容Mesos K8s 单 group跨多 cluster
![Page 29: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/29.jpg)
K8s-App架构
属于同个应用的一组实例,发布的最小单位
一个 Set对应一个 Spec版本
一个 AzSet对应一个StatefulSet同时在 K8s和Mesos做了实现
根据 Set上记录的 Spec信息创建的实例
AZ对应网络的边界
跨 IDC部署
![Page 30: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/30.jpg)
迁移过程
• 对用户透明,实例 IP元信息保持不变• 一次实例重启完成一次迁移• 支持灰度变更,回滚• 跨系统操作事务性
![Page 31: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/31.jpg)
实施策略
• 同AZ的Mesos到K8S迁移按物理机迁移• 使用 stackstorm自动化 pipeline
o 一台宿主机迁移 < 10mino 正在迁移生产最后一个Mesos集群
![Page 32: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/32.jpg)
CI/CD
MiddleWare Resource
DevOps
What’s Next
![Page 33: ArthurChiao's Blog - 携程的容器化交付实践arthurchiao.art/assets/img/monitoring-hub/ctrip... · 2020-07-21 · jacocoagent.sh. 资源管理 全 ... •tomcat catanila gc](https://reader034.vdocument.in/reader034/viewer/2022042503/5f85f1596009d337a06f200e/html5/thumbnails/33.jpg)
谢谢