【云驻共创】CCE引擎重新定义企业级容器云(万字长文)
一 🚤 基础知识
什么是容器,主要目的是为了把应用运行在其中,与外界隔离
;及方便这个沙盒可以被转移到其它宿主机器。本质上,它是一个特殊的进程。或者说是一种轻量级的操作系统虚拟化方案,可以操作更加细粒度的资源单位。一般一台实例可运行多个容器,这个容器默认标准是Docker,此外还有RKT,Warden其他等;
说通俗点的理解就是一个装应用软件的箱子,箱子里面有软件运行所需的依赖库和配置。开发人员可以把这个箱子搬到任何机器上,且不影响里面软件的运行
,这个已经够直白了哈
docker的生命周期中,镜像和容器是最重要的两部分,具体如下:
- 其中
镜像
是文件,是一个只读的模板,一个独立的文件系统,里面包含运行容器所需的数据,可以用来创建新的容器; - 而
容器
是基于镜像创建的进程,容器中的进程依赖于镜像中的文件,容器具有写的功能,可以根据需要改写里面的软件、配置等,并可以保存为新的镜像。
敲黑板敲黑板:如果用import方法生成,则是一个完全新的镜像。如果用的是commit方法生成的新的镜像,则新镜像与原来的镜像之间存在着继承关系。
当然容器世界里并不是只有docker一家。既然不是一家就很容易出现分歧。任何技术出现都需要一个标准来规范
它,不然各搞各的很容易导致技术实现的碎片化,出现大量的冲突和冗余。
因此,在2015年,由Google,Docker、CoreOS、IBM、微软、红帽等厂商联合发起的OCI(Open Container Initiative)组织成立了,并于2016年4月推出了第一个开放容器标准。标准主要包括runtime运行时标准和image镜像标准。标准的推出,有助于替成长中市场带来稳定性,让企业能放心采用容器技术,用户在打包、部署应用程序后,可以自由选择不同的容器Runtime;同时,镜像打包、建立、认证、部署、命名也都能按照统一的规范来做。
标准主要包含以下:
- 1 容器运行时标准 (runtime spec)
a). creating:使用 create 命令创建容器,这个过程称为创建中
b). created:容器创建出来,但是还没有运行,表示镜像和配置没有错误,容器能够运行在当前平台
c). running:容器的运行状态,里面的进程处于 up 状态,正在执行用户设定的任务
d). stopped:容器运行完成,或者运行出错,或者 stop 命令之后,容器处于暂停状态。这个状态,容器还有很多信息保存在平台中,并没有完全被删除
- 2 容器镜像标准(image spec)
a). 文件系统:以 layer 保存的文件系统,每个 layer 保存了和上层之间变化的部分,layer 应该保存哪些文件,怎么表示增加、修改和删除的文件等;
b). config 文件:保存了文件系统的层级信息(每个层级的 hash 值,以及历史信息),以及容器运行时需要的一些信息(比如环境变量、工作目录、命令参数、mount 列表),指定了镜像在某个特定平台和系统的配置。比较接近我们使用 docker inspect <image_id> 看到的内容;
c). manifest 文件:镜像的 config 文件索引,有哪些 layer,额外的 annotation 信息,manifest 文件中保存了很多和当前平台有关的信息;
d). index 文件:可选的文件,指向不同平台的 manifest 文件,这个文件能保证一个镜像可以跨平台使用,每个平台拥有不同的 manifest 文件,使用 index 作为索引。
1 优势
1). 通过共享kernel,细粒度资源隔离,能降低企业成本
2). 定义了环境无关的标准的交付,部署流程,提高交付效率
3). 秒级快速启动和停止,适合敏捷扩缩容场景
2 关键名词
镜像
:应用发布的标准格式,通过Dockerfile描述,可以构建为一个tar包镜像仓库
:存放镜像文件的场所,Docker官方镜像仓库: https://hub.docker.com/容器
:容器是从镜像创建的运行实例,可以被启动,停止和删除。
3 Docker镜像是啥
- Docker镜像提供一种全新的软件格式,使得软件的分发变得容易,Build Once, Run Anywhere
- Docker镜像分层的特性,也使得该软件格式能够被快速打包,占用空间也大大减少
本质上就是笑出了OS之间软件安装的差异,改变了人们构建,部署于安装方式,原来不同OS之间的软件依赖是不同的,现在不用担心我们把它放在容器镜像里面去,把你的环境与应用包都写在Dockerfile文件,只要是linux都能跑起来;里面这都是Docker加速普及;
二 ✈ 容器引擎介绍下
1 怎么定义
是一种企业级容器云,过去业务上线需要经历一系列繁琐流程,从发现商机到业务上线可能需要数月时间;如果重新定义交付模式为容器,更新代码后自动触发测试并启动上线,从开发环境到正式上线仅需要几分钟。
- 应用级自动化运维,可以保障海量应用稳定运行,故障无害;
- 还有秒级弹性伸缩,轻松应对瞬间流量激增,CCE专注企业级技术增强;
- 使用大规模容器集群管理技术,使企业可通过一套系统轻松管理复杂应用;
以及降本增效,通过自研安全加固屏障,更高隔离性,提供企业级安全保障;同时图形化编排构建复杂应用,让部署更简单,并且CCE全面兼容Docker和Kubernetes技术生态。
与传统容器不同的是,CCE容器有特定的商业功能增强特性。除了管理和用户节点还增加HA控制面;还有应用的HA是跨AZ高可用,实现高灵活调度;Source 2 Image顾名思义就是代码到镜像,其中作用就是用代码自定义镜像,也还有用签名服务器对镜像进行签名认证,来保证镜像来源是可靠的。
还有一个重点,用户面对的是一个私有集群,那么这个用户看到的不再是私有集群这些节点,看到只是我自己的容器,啥意思就是你需要啥直接去官网去申请安全容器,我们对安全容器做高隔离的加强,这个安全容器后面叫裸金属容器,因为安全容器直接跑在物理服务器上的,那么这种形态是私有集群创建容器是有所不同。
缩容是不影响业务的,因为是业务能处理完后进行缩容,这是灵活的弹性伸缩特点。一个应用部署在某一个或多个节点,目的根据你应用特点在高性能和高可用中找到平衡点这种叫亲和与反亲和特点调度策略。
2 云容器引擎用在哪
- 适用于
传统IT架构渐进式转型的场景
,把单一的重型应用解耦拆分为多个轻量的模块,每个模块升级,伸缩更加灵活。 - 适用于
提升业务上线效率的场景
,容器镜像贯穿从开发到测试到运维的各环节,保证业务运行环境一致性,业务开箱就用,快速上线。 - 适用于业务符合
有明显流动的场景
,容器的快速自动弹性伸缩保证业务在突发情况依旧性能稳定,系统秒级自动弹性扩容,快速响应并发高峰。 - 适用于
降低资源成本的场景
,由于容器在虚拟机上细粒度分化资源,提高资源利用率。
一套完整的容器化部署
看上图里面,下面是容器管理平台,管理是什么?是Docker,还有存储与网络;上面用户自己实现应用,我们用有状态容器向下去对接容器管理平台,向上对接无状态容器(消息分发+内存缓存),然后无状态容器向上对接web的负载均衡的nginx,tomcat;再往上用Devup工具对应用进行持续集成,可视编排自动部署工作。
三 🎯 容器集群实战详解
集群是
计算资源的集合
,包含一组节点资源,容器运行在节点上,在创建应用之前,需确保在一个可用集群,目前最多可创建两个集群。
在使用CCE之前,你需要创建虚拟私有云,给CCE提供一个安全,隔离的网络环境;创建密钥对,用于登录节点时的身份认证。
1 哪些准备
-
创建VPC
首先登录华为云先注册并实名认证后,点击右上角根据提示信息完成注册,然后填写用户名密码登录
在产品-网络里选择虚拟私有云,VPC名称设置为vpc-test,子网名称为subnet-test,子网网段与网关等默认配置然后申请
VPC已经创建成功
-
创建密钥对
回到官网单击服务列表,选择弹性云服务器在右侧导航栏单击密钥对,然后创建一个密钥对名称就为KeyPair-test然后单击确定,系统自动下载密钥对文件
-
创建集群
然后单击服务列表,选择新版云容器引擎,然后单击创建Kubernetes集群,叫cluster-01,选择之前创建的虚拟私有云VPC,还有所在子网是subnet-test,类型是容器隧道网络;节点名称为cluster-01-node ,然后后面节点类型个数,CPU与内存与弹性IP根据你自己需求来选择,如果要选弹性IP它规格就选全动态BGP,带宽你就随意;然后登录下面密钥对选择你创建密钥对,最后提交订单,等待10分钟就可以完成。
2 通过镜像创建容器应用
这里应用是指运行在CCE上的一组实例。CCE提供第三方的应用托管功能,提供从部署到运维全生命周期管理。
创建应用有三种方式,这里主要讲解开源与模板
2.1 开源镜像
下面来用开源镜像nginx创建容器应用,首先确保云容器引擎有一组稳定K8S集群,然后选择应用管理开始单击创建应用,叫nginx,还是选择刚才的cluster-01集群,实例数量是1,选择镜像到开源镜像搜cy-nginx,选中镜像后单击确定;
容器规格是1X规格,高级需求你看自己需要,然后单击下一步添加访问方式命名配置为nginx,这里访问方式分为内部访问与外部访问,此处我们选择内部访问,IP访问类型分为集群虚拟IP它是系统分配一个可供内部访问IP,节点私有IP它是通过节点端口形式访问,nginx容器端口这里是80,访问端口是自动生成,最后选择TCP协议
回到云容器引擎的应用管理那么你可看见它基本信息,那还能看到基于nginx的应用容器访问方式的端口是31499,然后单击资源管理下面的节点管理,找到节点弹性IP,用节点IP访问端口的形式来访问nginx应用成功;
现在可以查看应用的指标趋势,在应用详情页单击应用实例的向下箭头,在监控下查看CPU与内存使用量
2.2 应用模板
我们用应用模板创建容器应用,下面用VPC云容器引擎来实现;还是首先你要确保有可用的集群,然后再左侧单击应用模板我们这里选择官方模板下的etcd,还不知道这模板是啥,简单说就是用键值对存储的高可靠分布式存储系统,然后进行安装;
名称为etcd-test,模板版本为1.0即可,集群选我们创建好的集群然后安装,然后单击模板名称来到模板应用详情可看见有状态应用;
回退到应用管理详情,看到有三个实例正在运行,点击实例下箭头,可看实例下CPU和内存在不同时间点访问量是多少,最小最大平均值是多少;
3 应用弹性伸缩
也就是说你可以根据业务需求自行定义伸缩策略,降低人为反复调整资源以应对业务变化和高峰压力的工作量,帮助你节约资源和人力成本。
具体有哪些
- 弹性伸缩
- 手动伸缩
还是基于nginx为例的容器应用进行手动与弹性伸缩策略,在配置伸缩之前请确保nginx所在集群稳定充足,可以伸缩操作需要一定时间,等待一定时间
3.1 配置手动伸缩
单击应用管理的无状态应用下应用名称,再点击伸缩后选择手动伸缩配置为两个实例,如下图所示;
3.2 配置弹性伸缩
然后选择伸缩策略,其中有
- 告警策略支持CPU与内存设置进行应用伸缩;
- 定时策略,在固定时间点来运行自动伸缩;
- 是周期策略支持一周等触发伸缩策略;
这里我们选择定时策略在一分钟触发减少一个实例,名称为role;
看到策略已经处于已启动状态,当应用伸缩完成看到实例列表下只有一个正在运行的实例
四 🌈 用在哪里
一 自动化运维与高可用
优势
- 1
自动化管理
:业务快速部署及自动弹性伸缩,应用全生命周期一站式操作 - 2
业务高可用
:集群控制面HA和跨AZ高可用,容器应用可以进行优化上线 - 3
垂直整合
: 与IaaS深度结合,或者接入GPU/EVS/OBS/SFS,以及存储优先对接用户不同需求
容器应用都可以在我们这里做全周期管理,包括就是创建,删除以及更新,会有一个滚动升级过程
;通过容器服务可快速搭建电商等业务系统,用户一键创建容器集群,并自动化部署中间件服务(比如消息服务,缓存服务等)和容器化业务;同时容器的分布式部署可最大程度保证应用的高可用。
二 DevOps持续交付
优势
- 1
可定制自动化
: 实现从代码变更,代码构建,镜像构建和应用部署的全流程自动化 - 2
开放能力
: 兼容第三方代码扫描,检测和测试工具,满足开发阶段多样性需求 - 3
持续改进
: 基于容器的一致性代码仓库进行代码进行迭代更新即可
看上面这个图也好理解哈,用户提交这个代码,比如提交给标准代码库如Github,服务就是从标准库的代码拉下来,通过我们自己构建的引擎(SWR)把代码通过第三方开发流水线开发测试工具自动构建成容器镜像,然后从SWR进行点部署,直接就在CCE里面进行部署管理等整个流程;替换掉传统的复杂,迭代缓慢方式,提高企业代码交付与部署的效率。
三 有状态的容器应用
优势
- 1
数据持久化存储
:容器实例故障或迁移时,数据不丢失 - 2
多实例数据共享
: 多个实例可共享存储 - 2
支持多种存储类型
: 能卷存储,
有状态容器应用是指在运行过程中需要保存或状态的一类容器,本质还是依赖持久化存储,上面这个有EVS云盘其实就是云盘,这个新版上线是优先支持云盘,后面支持文件存储(SFS),后面更多支持OBS这种存储,目的是把应用状态保存在云盘上,来实现持久化存储能力;以前我们是把MYSQL部署在虚拟机上,现在也有专门的文件持久化存储的应用容器了。
四 裸金属私有集群
翻译过来这个私有集群是裸机,带来的好处我的容器可以直接部署在裸机上面。很多用户的需求不希望裸机上面有虚拟化这层,而是直接在裸机部署容器,省去虚拟化开销,计算,存储,网络能力相比虚拟化私有集群大大提升,特别适合有高性能需求的业务场景,比如高并发流量的服务(秒杀,订餐这种),跟裸机差不多的高性能。
优势
- 1
高性能
: 物理机上直接部署容器,容器性能达到物理机水准; - 2
高密度
: 相比虚拟机集群,容器部署密度能提升数倍;
六 ☕ 总结下
提供高度可扩展的、高性能的企业级Kubernetes集群,包括集群管理、节点管理、节点池管理、工作负载、亲和/反亲和性调度、容器网络、容器存储、插件管理、模板市场、弹性伸缩、权限管理、系统管家等功能,帮您提供一站式容器平台服务
更多详情看这里:https://support.huaweicloud.cn/function-cce/index.html
Kubernetes官方文档:
- https://kubernetes.io/docs/concepts/services-networking/servicel
- https://kubernetes.io/docs/concepts/services-networking/ingress
本文整理自华为云社区【内容共创】活动第14期。
查看活动详情:https://bbs.huaweicloud.cn/blogs/336904
相关任务详情 任务14: 华为CCE容器引擎,定义企业级容器云
- 点赞
- 收藏
- 关注作者
评论(0)