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

news2024/12/23 1:17:36

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/852324.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据质量:数据越好,模型就越好

如果数据不准确,模型就无法正常运行。虽然最终可能得到一个尚可应付的模型,但它的功能会不尽人意。可以说,数据质量是机器学习模型训练中的重中之重。无论为模型提供了多少数据,如果数据不适用,对改善机器模型的性能就…

网络电影购票系统代理商客户端开发(java开源)

一、背景介绍 随着互联网技术的不断发展,网络电影购票已经成为了人们日常生活中的一部分。然而,在电影购票市场中,代理商客户端的开发与搭建是一个关键环节。接下来将介绍如何使用Java开源技术来开发一个网络电影购票系统代理商客户端。 二、…

基于Spring Boot的网络在线学习网站的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的网络在线学习网站的设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java spri…

C语言笔试训练【第六天】

大家好,我是纪宁。今天是C语言笔试训练的第6天,加油! 往期回顾: C语言笔试训练【第五天】 C语言笔试训练【第四天】 C语言笔试训练【第三天】 C语言笔试训练【第二天】 C语言笔试训练【第一天】 1、以下叙述中正确的是&…

2023年,App运行小游戏,可以玩出什么创意?

疫情过后,一地鸡毛。游戏行业的日子也不好过。来看看移动游戏收入:2022年,移动游戏收入达到920亿美元,同比下降6.4%。这告诉我们,2022年对移动游戏市场来说是一个小挫折。 但不管是下挫还是上升,移动游戏市…

第2章:模型评估与选择

经验误差与泛化误差 过拟合是核心问题。 过拟合是无法避免的,只能尽量去缓解。 每个算法都要思考,是怎么缓解过拟合的?缓解方法什么情况下会失效? 模型选择 评估方法 留出法 为什么不能太小? 因为Mx要用来逼近M100的结…

Cesium 积雪效果基于后处理方法

Cesium 积雪效果基于后处理方法 最后效果: this.effect new Cesium.PostProcessStage({name: "czm_snowCover",fragmentShader: snowCover,uniforms: {u_alpha: 1, // 积雪厚度, 0~1},});const stages viewer.scene.postProcessStages;stages.add(this.effect);根…

opencv基础49-图像轮廓02-矩特征cv2.moments()->(形状分析、物体检测、图像识别、匹配)

矩特征(Moments Features)是用于图像分析和模式识别的一种特征表示方法,用来描述图像的形状、几何特征和统计信息。矩特征可以用于识别图像中的对象、检测形状以及进行图像分类等任务。 矩特征通过计算图像像素的高阶矩来提取特征。这些矩可以…

vuejs 设计与实现 - 简单diff算法

DOM 复用与key的作用: DOM 复用什么时候可复用? key 属性就像虚拟节点的“身份证”号,只要两个虚拟节点的 type属性值和 key 属性值都相同,那么我们就认为它们是相同的,即可以进行 DOM 的复用。即 我们通过【移动】来…

C 语言的 pow() 函数

作用: Calculates x raised to the power of y. 函数原型: double pow( double x, double y ); Required Header: <math.h> Compatibility: ANSI Return Value pow returns the value of x y x^{y} xy. No error message is printed on overflow or underflow. Paramete…

【数据结构刷题】数组oj

前言:本文章是关于在力扣上面的数组相关面试题的讲解&#xff0c;包括:1.原地移除数组中所有的元素val&#xff0c;要求时间复杂度为O(N)&#xff0c;空间复杂度为O(1),2.删除排序数组中的重复项。3. 合并两个有序数组。一.原地移除数组中所有的元素val 题目: https://leetcod…

RT-Thread系列09——Finsh自定义命令

文章目录 1. 无参数命令2. 带参数命令2.1. 字符串参数2.2. 数字型参数 >>> 文章汇总&#xff08;有代码汇总&#xff09; <<< 目标&#xff1a;使用Finsh自定义命令。 RT-Thread studio&#xff0c;版本: 2.2.6。RT-Thread&#xff1a;标准版&#xff0c;4…

《Java-SE-第三十二章》之模拟实现HTTP服务器

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页&#xff1a;KC老衲爱尼姑的博客主页 博主的github&#xff0c;平常所写代码皆在于此 共勉&#xff1a;talk is cheap, show me the code 作者是爪哇岛的新手&#xff0c;水平很有限&…

Flask实现接口mock,安装及使用教程(一)

1、什么是接口mock 主要是针对单元测试的应用&#xff0c;它可以很方便的解除单元测试中各种依赖&#xff0c;大大的降低了编写单元测试的难度 2、什么是mock server 正常情况下&#xff1a;测试客户端——测试——> 被测系统 ——依赖——>外部服务依赖 在被测系统和…

CVE漏洞复现-CVE-2021-3493 Linux 提权内核漏洞

CVE-2021-3493 Linux 提权内核漏洞 漏洞描述 CVE-2021-3493 用户漏洞是 Linux 内核中没有文件系统中的 layfs 中的 Ubuntu over 特定问题&#xff0c;在 Ubuntu 中正确验证有关名称空间文件系统的应用程序。buntu 内核代码允许低权限用户在使用 unshare() 函数创建的用户命名…

象棋中“马”的题目(深搜)

题面 题目描述 中国象棋半张棋盘如图&#xff08;a&#xff09;所示。马自左下角往右上角跳。 今规定只许往右跳&#xff0c;不许往左跳&#xff0c;且要求马跳的方式按照&#xff08;b&#xff09;图顺时针深度优先递归。比如图&#xff08;a&#xff09;中所示为一种跳行路线…

使用动态规划实现错排问题-2023年全国青少年信息素养大赛Python复赛真题精选

[导读]&#xff1a;超平老师计划推出《全国青少年信息素养大赛Python编程真题解析》50讲&#xff0c;这是超平老师解读Python编程挑战赛真题系列的第15讲。 全国青少年信息素养大赛&#xff08;原全国青少年电子信息智能创新大赛&#xff09;是“世界机器人大会青少年机器人设…

Netty:服务端通过ServerBootstrap的childHandler函数设置处理客户端的ChannelHandler

说明 服务端通过io.netty.bootstrap.ServerBootstrap启动&#xff0c;ServerBootstrap的 childHandler(ChannelHandler childHandler)函数用于增加处理客户端的ChannelHandler。这个childHandler一般是ChannelInitializer的子类&#xff0c;用于配置ChannelPipeline&#xff0…

GD32F103VE串口与DMA传输

GD32F103VE串口与DMA传输&#xff0c;本测试采用的的串口1和DMA0之间的数据传输&#xff0c;然后通过RS485和其它设备进行数据交换&#xff0c;没有采用任何中断参与。 GD32F103VE的DMA0请求映射到串口&#xff1a; 1&#xff0c;USART0_RX映射到DMA0的通道4&#xff0c;USART…

springboot 多模块 每个模块进行单独打包

springboot项目目录结构 打包模块需要进行的配置 配置文件引入打包插件 <build><finalName>api</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifac…