大厂容器云实践之路(三)

5-基于Kubernetes打造SAE容器云

目前SAE基于请求的架构

大厂容器云实践之路(三)_第1张图片

• 优点
- 进程内隔离,消耗资源最⼩
- ⽆感扩容&缩容,⽤户⽆成本
- Health&Redispatch,升级切换⽆成本
• 缺点
- ⽆法提供独⽴的namespace
- ⽆法Build&Ship&Run

⽤户的需求

• ⾯对代码 vs ⾯向容器
• 定义⼀切
• run anywhere 
• ⽆感扩容/缩容

为什么选择Kubernetes

大厂容器云实践之路(三)_第2张图片

• Pod 
• Replication 
• Go 
• Easy for CentOS6

为什么要改进Kubernetes

• 不⾜之处:
- ⽆感扩容
- 监控
• 不适合SAE之处:
- Kube-Proxy&VIP
- Etcd

改进Kubernetes

• ⽇志系统

大厂容器云实践之路(三)_第3张图片

 • 接⼊SAE Load Balance

大厂容器云实践之路(三)_第4张图片

大厂容器云实践之路(三)_第5张图片

 • LoadBalance抗CC攻击压⼒对⽐

大厂容器云实践之路(三)_第6张图片

 • PaaS SDN和IaaS SDN的区别

• 网络隔离
- NAT
- Bridge(更主流)
• 我们选择NAT
- NAT提速

• Simple Docker Network 

• 内外网流量分开

大厂容器云实践之路(三)_第7张图片

 • Simple Docker Network 

• L3 tag

大厂容器云实践之路(三)_第8张图片

 • Simple Docker Network 
• 植⼊Tenant ID

大厂容器云实践之路(三)_第9张图片

• Simple Docker Network

大厂容器云实践之路(三)_第10张图片

大厂容器云实践之路(三)_第11张图片

 SAE容器云

 • 功能:
- 镜像仓库
- BuildPkg
- ⽆感扩容
- 共享存储
• 正式发布!

大厂容器云实践之路(三)_第12张图片

6-腾讯GAIA平台DOCKER实践

GAIA平台

Gaia平台是腾讯数据平台部的底层资源管理和调度系统,其上层业务包括离线、实时以及在线service服务,最大单集群规模达8800台、并发资源池个数达2500个,服务于腾讯所有事业群。

2014年10月份正式上线对Docker类型作业的支持,通过Docker将Gaia云平台以更好用的方式呈现给各个业务。目前已经支持腾讯内部的游戏云、广点通、GPU深度学习等Docker业务。

GAIA架构

大厂容器云实践之路(三)_第13张图片

Gaia系统Master节点RM/NM/AM/Docker均无单点故障,可进行热升级。Gaia也为用户的App提供了本地重试和跨机迁移两种容灾方式。

机器资源CPU、内存、网络带宽、GPU、磁盘空间的隔离都是弹性管理的。

最大化的利用集群的所有资源,在保证用户最低资源使用量的同时,在集群有空闲资源时还能借集群的空闲资源使用。

自研调度SFair,解决了调度器效率和扩展性问题,每秒可调度4k个实例。

Docker热升级功能

DOCKER DAEMON单点问题

Docker daemon本身是个单点,并且在退出时会杀掉所有container,对于在线服务完全不可接受。
Docker坑太多,比如1.6.x版本
Docker stats crashed docker daemon https://github.com/docker/docker/pull/13906
Docker exec未同步导致docker crash https://github.com/docker/docker/pull/14899
Docker缓存container的stdout/stderr过大导致OOM问题https://github.com/docker/docker/issues/9139

DOCKER热升级功能设计

大厂容器云实践之路(三)_第14张图片

Docker daemon停止时主动杀掉所有container,主要受限于
   用户进程是daemon的子进程
   IO流经过daemon缓存
原来的两层进程父子关系变为三层,monitor由goroutine改为进程,由它等待container运行结束
Docker重启时,monitor孤儿进程托管给init进程,container不受任何影响
Docker重启后恢复所有Container状态

DOCKER CRASH不影响DOCKER WAIT

大厂容器云实践之路(三)_第15张图片

1、客户端向daemon发送wait请求POST/containers/1b9ba1/wait
2、daemon回复HTTP重定向code 305,并返回monitor进程监听地址Location:http://daemon_ip:port
3、客户端向monitor发送wait请求POST/containers/1b9ba1/wait
4、monitor进程等待container进程结束
5、container结束时返回,monitor进程返回wait请求的HTTP response
即使daemon挂掉,客户端wait请求不受影响,消除对Gaia等上层调度系统的影响

DOCKER热升级功能实现

Docker daemon增加-hot-restart参数,monitor代码接口化,支持goroutine和外部进程两种方式;
container启动和结束时,monitor先将启动和结束事件持久化到磁盘,再通知daemon更新container状态。daemon重启后从磁盘加载container状态迁移文件;
部分Daemon API接口,如attach/wait等,重定向给monitor进程处理;
网络状态,比如libnetwork CNM模型的network/endpoint/sandbox状态按网络模式类型在global和local KV store中分别存储,libkv提供统一接口,屏蔽global/local等KV存储的API差异;
我们为libnetwork引入了localstore功能,https://github.com/docker/libnetwork/pull/466,存储bridge网络模式状态或者sandbox等其他本地状态数据。

Docker网络模式扩展

DOCKER⽹络模式

大厂容器云实践之路(三)_第16张图片

 ⽤户对⽹络的需求

大厂容器云实践之路(三)_第17张图片

 固定IP⽹络模式

大厂容器云实践之路(三)_第18张图片

大厂容器云实践之路(三)_第19张图片

 SR-IOV技术

大厂容器云实践之路(三)_第20张图片

大厂容器云实践之路(三)_第21张图片

DOCKER OVERLAY ⽹络使⽤

大厂容器云实践之路(三)_第22张图片

大厂容器云实践之路(三)_第23张图片

Container数据存储问题

Container迁移后不需要保留的数据,使用host volume存储
Container迁移后需要保留的数据,使用Ceph RBD存储
   使用Ceph volume plugin为每个container分配一个RBD存储目录

Container资源隔离

弹性内存控制

大厂容器云实践之路(三)_第24张图片

 ⽹络出带宽控制

大厂容器云实践之路(三)_第25张图片

 容器中资源显⽰问题

大厂容器云实践之路(三)_第26张图片

你可能感兴趣的:(大数据,笔记)