容器技术

从零开始入门 K8s | 理解 RuntimeClass 与使用多容器运行时

筅森魡賤 提交于 2020-04-07 13:25:44
作者 | 贾之光 阿里巴巴高级开发工程师 本文整理自《CNCF x Alibaba 云原生技术公开课》第 30 讲, 点击直达课程页面 。 关注“阿里巴巴云原生”公众号,回复关键词**“入门”**,即可下载从零入门 K8s 系列文章 PPT。 一、RuntimeClass 需求来源 容器运行时的演进过程 我们首先了解一下容器运行时的演进过程,整个过程大致分为三个阶段: 第一个阶段:2014 年 6 月 Kubernetes 正式开源,Docker 是当时唯一的、也是默认的容器运行时; 第二个阶段:Kubernetes v1.3 rkt 合入 Kubernetes 主干,成为了第二个容器运行时。 第三个阶段:Kubernetes v.15 与此同时,越来越多的容器运行时也想接入到 Kubernetes 中。如果还是按 rkt 和 Docker 一样内置支持的话,会给 Kubernetes 的代码维护和质量保障带来严重挑战。 社区也意识到了这一点,所以在 1.5 版本时推出了 CRI,它的全称是 Container Runtime Interface。这样做的好处是:实现了运行时和 Kubernetes 的解耦,社区不必再为各种运行时做适配工作,也不用担心运行时和 Kubernetes 迭代周期不一致所带来的版本维护问题。比较典型的,比如 containerd 中的 cri

Gartner 容器报告:阿里云与 AWS 并列第一,领先微软、谷歌

℡╲_俬逩灬. 提交于 2020-04-07 12:58:03
近日,国际知名调研机构 Gartner 发布 2020 年容器公有云竞争格局报告,阿里云再度成为国内唯一入选厂商。Gartner 报告显示,阿里云容器服务在中国市场表现强劲,产品形态丰富,在如 Serverless 容器、服务网格、安全沙箱容器、混合云和边缘等领域,具备良好的技术发展策略。 2020 年 3 月,Gartner 第二次公开《竞争格局:公共云容器服务》年度调研报告,报告针对 Serverless Kubernetes、服务网格、容器镜像等十项功能维度进行对比,阿里云和 AWS 覆盖九项产品能力,产品丰富度领先 Google、微软、IBM 和 Oracle 四家厂商。 阿里云连续两年入选 Gartner 容器报告,一方面是因为阿里云拥有全球第三的市场份额,另一方面是因为其已经拥有近十年的容器技术储备。 目前,阿里云容器服务(ACK)已在中国及海外 19 个公有云可用区开服,同时也支持客户在自有机房和边缘端的部署使用 Kubernetes。同时,阿里云还提供了丰富的差异化产品:兼容 Istio 的托管版服务网格、基于弹性容器实例的无服务器 Kubernetes(ASK)、提供镜像扫描的独享版容器镜像服务 (ACR)、基于轻量虚拟机技术的安全沙箱容器运行时和托管服务网格(ASM)等等。在此前的 Forrester 公共云容器服务评测中,阿里云作为 Strong

C++ 编程规范

谁说我不能喝 提交于 2020-04-07 10:08:19
组织和策略问题 第0条 不要拘泥于小节(又名:了解哪些东西不应该标准化) 无需在多个项目或者整个公司范围内强制实施一致的编码格式。 第1条 在高警告级别干净利落地进行编译 高度重视警告:使用编译器的最高警告级别。通过修改代码而不是降低警告级别来排除警告。 第2条 使用自动构建系统 一键构建。 第3条 使用版本控制系统 svn。 第4条 在代码审查上投入 做好同行评审。 设计风格 第5条 一个实体应该只有一个紧凑的职责 一次只解决一个问题。一个实体(变量、类、函数、名称空间、模块和库)或一个模块,只赋予一个良好的职责,不要乱发散。 第6条 正确、简单和清晰第一 代码是写给人看的,要简单、清晰、可靠。 第7条 编程中应知道何时和如何考虑可伸缩性 关注算法的优化,注意复杂性。 第8条 不要进行不成熟的不要进行不成熟的优化,优化应该使代码更清晰易读,易理解,易重构,而不要为了所谓的性能,让代码变得更复杂和更差的可读性。 第9条 不要进行不成熟的劣化 不要使用低效的用法,比如++,应倾向于使用前++,而不是会产生临时变量的后++。 第10条 尽量减少全局和共享数据 全局和共享数据,会增加耦合度,降低可维护性。 第11条 隐藏信息 模块或对象设计,内部实现与外部接口要分离,减少依赖性。 第12条 懂得何时和如何进行并发性编程 多线程,与平台相关。小心使用各种多线程技术。 尽量减少共享对象

亲历者说:Kubernetes API 与 Operator,不为人知的开发者战争

你离开我真会死。 提交于 2020-04-06 22:03:32
原创作者:张磊、邓洪超 如果我问你,如何把一个 etcd 集群部署在 Google Cloud 或者阿里云上,你一定会不假思索的给出答案:当然是用 etcd Operator! 实际上,几乎在一夜之间,Kubernetes Operator 这个新生事物,就成了开发和部署分布式应用的一项事实标准。时至今日,无论是 etcd、TiDB、Redis,还是 Kafka、RocketMQ、Spark、TensorFlow,几乎每一个你能叫上名字来的分布式项目,都由官方维护着各自的 Kubernetes Operator。而 Operator 官方库里,也一直维护着一个知名分布式项目的 Operator 汇总。 https://github.com/operator-framework/awesome-operators 短短一年多时间,这个列表的长度已经增长了几十倍。 而且更有意思的是,如果你仔细翻阅这个 Operator 列表,你就不难发现这样一个有趣的事实:现今 Kubernetes Operator 的意义,恐怕已经远远超过了“分布式应用部署”的这个原始的范畴,而已然成为了容器化时代应用开发与发布的一个全新途径。所以,你才会在这个列表里看到,Android SDK 的开发者们,正在使用 Operator “一键”生成和更新 Android 开发环境;而 Linux 系统工程师们

docker磁盘空间管理

感情迁移 提交于 2020-04-06 17:57:35
docker虽然是“轻量级”的虚拟化解决方案,但其磁盘空间管理仍然是一个非常重要同时值得关注的问题,毕竟节约一份空间就是为企业节约一项成本,作为一个秉承勤俭持家的好员工,必须对这块的成本进行开刀。 docker 容器磁盘空间管理 docker 主要包括镜像、容器和数据卷三部分,对docker的磁盘空间管理也主要从着三块入手,在做docker磁盘空间分析之前我们需要简单了解下容器的“镜像层”的概念,一般容器的磁盘管理有一大半是镜像层相关: 什么是镜像层? 说到镜像的层,就要说说Docker镜像的存储组织方式 docker 镜像是采用分层的方式构建的,每个镜像都由一系列的 "镜像层" 组成。"镜像层"用来存储一组镜像相关的元数据信息,主要包括镜像的架构(如 amd64)、镜像默认配置信息、构建镜像的容器配置信息、包含所有镜像层信息的 rootfs。当需要修改容器镜像内的某个文件时,docker 利用 rootfs 中的 diff_id 计算出内容寻址的索引(chainID) 来获取 layer 相关信息,进而获取每一个镜像层的文件内容,容器对镜像的修改只对处于最上方的读写层进行变动,不覆写下层已有文件系统的内容,已有文件在只读层中的原始版本仍然存在,但会被读写层中的新版本所隐藏。在多个容器之间共享镜像,每个容器在启动的时候并不需要单独复制一份镜像文件

Docker入门笔记(一)

江枫思渺然 提交于 2020-04-06 13:37:30
为什么用docker? 一句话总结:平台的伸缩和弹性部署。 开发人员消除协作编码时“在我的机器上可正常工作”的问题(开发环境/测试环境/生产环境部署切换) 运维人员在隔离容器中并行运行和管理应用,获得更好的计算密度 docker是怎么做到的? docker的两大技术 linux虚拟化 linux操作系统=linux开源内核+文件系统 linux虚拟化=复用内核+自己定制的文件系统 docker镜像技术 docker镜像技术=虚拟化的操作系统+服务包+容器文件=整包(集装箱),也可称作沙箱环境 docker的结构 Host,主机 Container,容器,独立运行的一套虚拟化linux系统 Image,镜像,服务组件的镜像文件 Registry,镜像仓库 Client,客户端,使用api与docker交互 Machine,docker的命令行工具 docker 仓库 存放镜像文件的仓库,类似maven仓库的概念。 分为中央仓库和私服仓库。 镜像查找顺序:私服仓库-->中央仓库 官方仓库的命名规则:docker中央仓库可以注册,然后import上传的仓库是在个人的私有仓库中,以用户名/镜像名为格式存储 docker 镜像 docker的可运行镜像是通过一层层的镜像文件包装,再加上最顶层的容器文件组成的。 每一层镜像文件都有一个唯一id,镜像文件在不同的可运行镜像中可复用

docker容器虚拟化

白昼怎懂夜的黑 提交于 2020-04-06 11:21:54
目录 1.虚拟化网络 2.单节点容器间通信 3.不同节点容器间通信 1.虚拟化网络 Network Namespace 是 Linux 内核提供的功能,是实现网络虚拟化的重要功能,它能创建多个隔离的网络空间,它们有独自网络栈信息。不管是虚拟机还是容器,运行的时候仿佛自己都在独立的网络中。而且不同Network Namespace的资源相互不可见,彼此之间无法通信。 假如我们的物理机有4块物理网卡,我们要创建4个名称空间,而这些设备是可以单独关联至某个单独的名称空间使用的 如上图所示,把第一块网卡分配给第一个名称空间,第二块分给第二个名称空间,第三块分给第三个名称空间,第四块分给第四个名称空间。此时其它名称空间都是看不见当前所在名称空间的,因为一个设备只能属于一个名称空间。 这种方式使得每一个名称空间都能配置IP地址,并且与外部网络直接通信,因为它们使用的是物理网卡。 但如果我们所拥有的名称空间数量超过物理网卡数量呢?此时我们可以使用虚拟网卡设备,用纯软件的方式来模拟一组设备来使用。Linux内核级支持2种级别设备的模拟,一种是二层设备,一种是三层设备。 Linux内核模拟的二层设备,每个网络接口设备是成对出现的,可以模拟为一根网线的两端,其中一端模拟主机的虚拟网卡,另一端模拟虚拟交换机,就相当于让一个主机连到一个交换机上去。Linux内核原生支持二层虚拟网桥设备

五分钟学后端技术:一篇文章告诉你如何学习云计算!

随声附和 提交于 2020-04-06 11:14:06
作者:刘超 转自【刘超的通俗云计算】 什么是云计算 早在十年前,市场上就出现了很多和云计算相关的岗位,当时正是云计算技术最火热的时代,不管是BAT还是华为等企业都开始布局云计算,于是OpenStack研发、容器研发、底层开发等相关岗位相应地也越来越多,虽然这几年大数据和AI的风头已经完全压过了云计算,但是这一门技术仍然在现如今的技术体系中占有很重要的位置。那么,到底什么是云计算,就是我们每一个要学习云计算技术的朋友要了解的事情了,根据百度百科的介绍 大数据(big data),IT行业术语,是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 [1] 中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。 [2] 思维导图 云计算的发展史 物理机时代 云计算的整个过程,用一个词来讲就是“分久必合,合久必分”。 云计算其实主要解决了四个方面的内容:计算,网络,存储,应用。前三者是资源层面的,最后是应用层面的。 计算是CPU和内存,为啥

动态生成DOM元素的高度及行数获取与计算方法

流过昼夜 提交于 2020-04-06 10:03:08
背景 在开发IM的项目过程中,经常会有出现一些需要计算DOM高度,然后超出若干行隐藏等需求。很多时候,需要计算高度的DOM元素都是动态生成的,我们无法在数据渲染前获取到它的高度。 但是,如果我们需要获取到这段在内存中未渲染的动态文本,也能够通过如下几个方法。 技术方案 根据前端的基本常识,在内存中未渲染的DOM元素是无法获取到高度的,因此我们有两个方向来解决这个难题: 通过字数对行数进行估算 将元素渲染后进行高度测算 实现方案 以下的实现方案将根据上面所选择的技术方案来进行实现。 通过字数进行估算 方案 此方案无需多言,就是通过字数和每一行能够容下的字的个数进行估算等。在项目最开始时,我采用的就是这个方案。具体实现代码太过简单,因此也不在此添加了。 优点 此方案实现简单,基本不需要任何成本,适用于只有等宽文字的情况下。 缺点 这个方案缺点也比较明显,基本无法用于纯文本之外的任何情况。如果字体为非等宽字体或者存在 \n 之类的换行符或者是 \t 之类的制表符时,估算的准确度也会大大下降。 在DOM渲染后进行操作 方案 顾名思义,此方案就是先不考虑DOM元素行数逻辑,直接将所有的DOM节点全部渲染到页面中,渲染完成后再对进行后续逻辑判断。获取高度后页面行数计算将在后面统一讲解。 优点 此方案通过直接在实际场景的页面上渲染后进行高度计算,因此计算精准,不存在任何偏差。同时

Gartner 容器报告:阿里云与 AWS 并列第一,领先微软、谷歌

生来就可爱ヽ(ⅴ<●) 提交于 2020-04-06 08:54:41
近日,国际知名调研机构 Gartner 发布 2020 年容器公有云竞争格局报告,阿里云再度成为国内唯一入选厂商。Gartner 报告显示,阿里云容器服务在中国市场表现强劲,产品形态丰富,在如 Serverless 容器、服务网格、安全沙箱容器、混合云和边缘等领域,具备良好的技术发展策略。 2020 年 3 月,Gartner 第二次公开《竞争格局:公共云容器服务》年度调研报告,报告针对 Serverless Kubernetes、服务网格、容器镜像等十项功能维度进行对比,阿里云和 AWS 覆盖九项产品能力,产品丰富度领先 Google、微软、IBM 和 Oracle 四家厂商。 阿里云连续两年入选 Gartner 容器报告,一方面是因为阿里云拥有全球第三的市场份额,另一方面是因为其已经拥有近十年的容器技术储备。 目前,阿里云容器服务(ACK)已在中国及海外 19 个公有云可用区开服,同时也支持客户在自有机房和边缘端的部署使用 Kubernetes。同时,阿里云还提供了丰富的差异化产品:兼容 Istio 的托管版服务网格、基于弹性容器实例的无服务器 Kubernetes(ASK)、提供镜像扫描的独享版容器镜像服务 (ACR)、基于轻量虚拟机技术的安全沙箱容器运行时和托管服务网格(ASM)等等。在此前的 Forrester 公共云容器服务评测中,阿里云作为 Strong