华为 云容器引擎

来自CloudWiki
跳转至: 导航搜索

容器化平台

腾讯 京东 奇虎 大众点评

容器的发展历史

2001年早期轻量级虚拟化产品如OpenVZ.Linux-Vserver当时主要用于VPS,均未进入Linux内核;

2007年随着cgroup以及namespace合入内核,linux容器技术得到Linux内核主线的支持;

2008年LXC开源项目成立,实现用户态容器管理工具;容器技术在业界的使用越来越广泛;

2013年3月份docker出现,针对容器虚拟化更有理想的统一平台出现

2018年,Kata容器合并RunV和Intel Clear Container,Google发布gVisor容器

2018容器使用情况报告 1.应用:Java和容器一起作为现代软件交付模型,包括数据 库在内的有状态容器工作负载的使用量在显著增加 2.运行时:Docker依旧占主导地位,其他容器运行时获得立 3.编排:Kubernetes成为公私有云容器编排供应商的首选 4.密度∶从裸机和以VM为中心的环境向容器过渡的意图之一是 提高服务器资源利用率。与2017年的报告相比,每位客户每个 主机的容器中位数从10个增加到15个。有组织在一台主机上运 行154个容器 5.寿命:约69%的容器镜像每周内都会被更新,约67%的K8s服 务运行超过一周

什么是容器


容器技术是一种轻量级的操作系统虚拟化方案, 。可以基于操作系统虚拟出更加细粒度的资源单位。

对比虚拟机的优势: 。通过共享kernel,细粒度资源隔离。(降低企业成本) 。定义了环境无关的标准的交付、部署规范(提高交付效率) 。秒级快速启动和停止(适合敏捷扩缩容场景) 一台ECS实例可以运行多个容器 容器在业界的默认标准是Docker(此外还有RKT,Warden等)

容器的关键概念 镜像:应用发布的标准格式,通过Dockerfile描述,可构建为一 个tar包 镜像卺库:存放镜像文件的场所。Docker官方镜像仓库: https://hub.docker.com/ 容器:容器是从镜像创建的运行实例,可以被启动、停止和 删除。

容器底层关键技术:Linux Cgroup

memory
限制cgroup中的任务所能使用的内存上限
-m
--memory-swap
--memory-reservation
--kernal-memory
--oom-kill-disable
--memory-swappiniss
cpu
使用调度程序提供对CPu的cgoup任务访问
-c
-cpu-period
-cpu-quota
puset
为cgroup中的任务分配独立CPU和内存节点
--cpuset-cpus
--cpuset-mems
Blkio
为块设备设定输入/输出限制
--blkio-weight
--blkio-weight-device
--device-read-bps
--device-write-bps
--device-read-iops
--device-write-lops

容器底层关键技术:Linux Namespace

PID namespace
CLONE_NEWPID
隔离不同用户的进程,不同的namespace中可以有相同的pid.
允许嵌套,可以方便实现docker in docker

uTSnamespace
cLONE_NEWUTs
允许每个容器拥有独立的hostname和domain name,使其在网
络上可以被视为独立的节点
iPC namespace
CLONE_NEWIPc
保证容器间的进程交互,进行信号量、消息队列和共享内存的隔离。
Network namespace
CLONE_NEWNET
实现网络隔离,每个net namespace有独立的network devices.
dresses.ip routing tables./oroc/net目录

Mount namespace
CLONE_NEWNS
隔离不同namespace的进程看到的目录结构,每个namespace的容器在/proc/mounts的信息只包含所在namespace的mount point
User namespace
CLONE_NEWUSER 
允许每个容器可以有不同的user和group id  

容器底层关键技术:联合文件系统 概念:一个基于文件的接口,通过把一组目录交错起来,形成一个单一视图。

优点:

多个容器可以共享image存储,节省存储空间;

部署多个容器时,base image可以避免多次拷贝,实现快速部署;

Docker目前支持的联合文件系统种类包括devicemapper、overlay2、aufs、btrfs、zfs

Docker镜像

Docker镜像提供了一种全新的软件格式,使得软件的分发变得容易

Build Once,Run Anywhere

Docker镜像分层的特性,也使得该软件格式能够被速打包,

占用空间也大大减少

什么是容器编排调度引擎

容器编排引擎提供资源的管理和容器的调度技术,提供容器

应用生命周期管理、弹性伸缩、监控运维的基本机制,决定

容器之间如何进行交互。

Kubernetes : 基于容器技术分布式架构的领先方案

Kubernetes是Google开源的容器集群管理系统,它构建在Docker技术之上,为容器化的应用提供资源调度,部署运行,服务发现,扩容缩容等一整套功能,本质上是基于容器技术的Micro-PaaS平台,Kubernetes的灵感来源于Google内部的Borg系统。将Docker容器宿主机组成集群,统一进行资源调度,自动管理容器生命周期,提供跨节点服务发现和负载均衡;更好的支持微服务理念,划分、细分服务之间的边界,比如lablel、pod等概念的引入轻量,迁移方便,部署快捷.插件化,扩展。
Kubernetes主要功能如下:
使用Docker对应用程序打包、实例化、运行以集群的方式运行、管理跨节点的容器。解决Docker跨节点容器之间的通讯问题。Kubernetes的自我修复机制使得容器集群总 是运行在用户期望的状态。


Kubernetes关键概念-POD

在Kubernetes中,Pod是能够创建、调度、和管理的最小部署单元,是一组容器实例的集合,而不是单独的应用容器。同一个Pod里的容器共享同一个网络命名空间,IP地 址及端口空间和卷。从生命周期来说,Pod是短暂的而不是长久的应用。Pod被调度到节点,保持在这个节点上直到被销毁。

Kubernetes关键概念-ReplicaSet

ReplicaSet :副本控制器确保Pod的一定数量的份数(replica)在运行。如果超过这个数量,控制器会杀死一些,如果少了,控制器会启动一些。ReplicaSet用于解决pod 的扩容和缩容问题。通常用于无状态应用。

Kubernetes关键概念-StatefulSet

StatefulSet:有状态应用
用于解决各个pod实例独立生命周期管理,提供各个实例的启动顺序和唯一性稳定唯一的网络标识符。
。持久化存储。
。有序优雅的部署和扩展。
。有序优雅的删除和终止。
。有序的自动滚动更新。


Kubernetes关键概念- DaemonSet

DaemonSet能够让所有或者特定的Node节点运行一个pod。当节。加入到kubernetes集群中,pod会被(DaemonSet)调度到该节点上运行。当节点从kubernetes集群中被移 除,被(DaemonSet)调度的pod会被移除。
适合场景︰很多时候我们需要在一个区域的Node上都运行一个守护进程,例如:。每个Node上运行一个分布式存储的守护进程,例如glusterd-ceph运行日志采集器在每个Node上,例如fluentd,logstash运行监控的采集端在每个Node,例如prometheus node exporter,collectd等。


容器改变应用交付模式

代码级打包部署∶基于代码打包,在不同环境重复安装/配置/运 行/调试。 容器级打包部署∶整个环境一键打包,交付动作标准化、交付件 标准化,在开发、测试和生产环境中保证应用的一致性。

CCE产品关键特性

——站式部署和运维——
一键创建Kubernetes集群,自动化部署、运维容器应用整个生命周期都在容器服务内一站式完成。
——可定制化的DevOps能力——
支持Java/Python/Go/Node..S/ert.x等语言代码开发一键式生成镜像能力。
——丰富的应用调度策略——
支持多种亲和反亲和调度策略,用户可方便地根据应用特点在高性能和高可靠中找到平衡点。
——灵活的弹性伸缩策略——
支持按性能、按时间、按周期的弹性伸缩策略,用户可自由组合策略以应对多变的突发浪涌。
——laas资源深度整合——
直接使用华为云ECS/BMS、网络(VPC/EIP)、存储(EVS/OBs/SFS)能力。
——兼容原生Kubernetes和Docker——
紧跟社区,3个月同步最新版本,兼容原生API和命令行。
——高可用业务不中断——
集群控制面HA和跨AzZ高可用,容器应用优雅伸缩,安全下线,保阵业务不掉线。


应用场景:自动化运维和高可用

自动化运维和高可用

通过容器服务可快速搭建电商等业务系统,用户可一键创建容器集群,并自动化部署中间件服务(消息服务、缓存服务等)和容器化业务,实现全生命周期一站式管理。同时容器的分布式部署方式可最大程度地保证应用高可用。

自动化管理

口业务快速部署及自动弹性伸缩,应用全生命周期一站式管理

业务高可用

集群控制面HA和跨心Z高可用,容器应用优雅下线

垂直整合

与laaS深度结合,提供高性能容器网络,对接EVS/OBS/SFS等多种存储


应用场景: DevOps持续交付

可定制化持续交付流程
配合第三方开发流水线开发测试工具,自动完成从代码提交到应用部署的DevOps完整流程,替代部署复杂、迭代缓慢的传统方式,提高企业代码交付和部署的效率。
可定制自动化
实现从代码变更、代码构建、镜像构建和应用部署的全流程自动化
开放能力
兼容第三方代码扫描、检测和测试工具,满足开发阶段多样性需求
持续改进
基于容器的一致性环境,可大幅提升业务迭代速度


应用场景(3):有状态容器应用

有状态容器应用
有状态容器应用是指在运行过程中需要保存数据或状态的一类容器应用,CCE利用华为云的EVS/SFS等存储能力提供高可用存储卷,实现“有状态容器应用”的数据持久化能力。
数据持久化存储
容器实例故障或迁移时,数据不丢失
多实例数据共享
多个实例可共享存储
支持多种存储类型
支持卷存储、文件存储、对象存储等多种存储类型


应用场景(4):裸金属私有集群

高性能裸金属私有集群
在物理机上直接部署容器,省去虚拟化开销,计算、存储、网络能力相比虚拟机私有集群大大提升。特别适合有高性能需水的出多4的4)流量的服务(订餐、抢购等)。
高性能
物理机上直接部署容器,容器性能达到物理机水准。
高密度
相比虚拟机集群,容器部署密度数倍。


云容器引擎适用的场景(1)

CCE可用于以下几种场景:

适用于传统IT架构渐进式转型的场景。把单一的重型应用解耦拆分为多个轻量的模块,每个模块升级、伸缩更加灵活,轻松应对市场变化。
适用于提升业务上线效率的场景。容器镜像贯穿从开发到测试到运维的各环节,保证业务运行环境一致性,业务开箱即用,快速上线。
适用于业务负荷有明显波动的场景。容器的快速自动弹性伸缩保证业务在突发浪涌的情况下仍旧性能稳定,系统秒级自动弹性扩容,快速响应并发高峰。
适用于降低资源成本的场景。由于容器能在虚拟机上更细粒度地划分资源,应用能更充分使用资源,从而提高资源利用率。


云容器引擎适用的场景(2)

目标客户举例

。客户群1∶互联网客户(电商、移动应用)
。客户价值∶降低客户搭建容器平台的成本,以及提高应用容器化上云的效率
。产品卖点∶自动化、跨Az高可用、服务免费、开放兼容社区

客户群2∶游戏客户
。解决的问题:游戏业务需要高性能、自动弹性伸缩和资源共享的高可用容器集群
。产品卖点:满足客户高性能、按时、按需业务弹性需求