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

5-基于Kubernetes打造SAE容器云

目前SAE基于请求的架构

img

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

⽤户的需求

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

为什么选择Kubernetes

img

• Pod 
• Replication 
• Go 
• Easy for CentOS6

为什么要改进Kubernetes

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

改进Kubernetes

• ⽇志系统

img

 • 接⼊SAE Load Balance

img

img

 • LoadBalance抗CC攻击压⼒对⽐

img

 • PaaS SDN和IaaS SDN的区别

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

• Simple Docker Network 

• 内外网流量分开

img

 • Simple Docker Network 

• L3 tag

img

 • Simple Docker Network 
• 植⼊Tenant ID

img

• Simple Docker Network

img

img

 SAE容器云

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

img

6-腾讯GAIA平台DOCKER实践

GAIA平台

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

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

GAIA架构

img

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热升级功能设计

img

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

DOCKER CRASH不影响DOCKER WAIT

img

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⽹络模式

img

 ⽤户对⽹络的需求

img

 固定IP⽹络模式

img

img

 SR-IOV技术

img

img

DOCKER OVERLAY ⽹络使⽤

img

img

Container数据存储问题

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

Container资源隔离

弹性内存控制

img

 ⽹络出带宽控制

img

 容器中资源显⽰问题

img

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AllenGd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值