如何才能提供容器云服务?

描述

一、容器与容器云

容器(Linux Container)也可译为集装箱,详见《高冷的云原生,原来可以这样理解》。

容器是计算演进方向的一个节点(物理机、虚拟机、容器、无服务器计算)。

虚拟机采用的虚拟化技术是Hypervisor(KVM、XEN)。优点是隔离性较好,存在的问题是每个虚拟机需要操作系统、依赖环境,运行起来比较重,启动时间长。

容器采用的虚拟化技术是Namespace(《Linux 基础知识:网络命名空间》)和Cgroup,进行操作系统内核级的虚拟化。优点是轻量、秒级启动,缺点是容器间的隔离,安全性需要提高。

虚拟机的管理有CloudStack、OpenStack。

容器的管理也出现了Mesos、Swarm、Kubernetes。

Kubernetes的基础知识,可查阅:

Kubernetes:术语解释

Kubernetes:集群部署

Kubernetes:逻辑组件

Kubernetes:Pod简易理解

Kubernetes:flannel网络

Kubernetes:应用部署与访问

Kubernetes较好地解决了应用的编排与调度问题,但也存在着容器的安全隔离弱、运维管理成本高,需要进行容量规划、节点管理、服务组件告警处理等问题。

二、公有云是如何提供容器服务的?

以阿里云为例,提供了容器服务ACK、弹性容器实例ECI、Serverless容器服务 ASK等。

虚拟机

下面我们来看下这些产品所解决的痛点是什么?

1. 容器服务ACK

针对Kubernetes学习曲线高、运维难等问题,公有云厂商通过适配和增强Kubernetes,简化运维工作,推出Kubernetes托管服务。

阿里云推出了容器服务ACK(Alibaba Cloud Container Service for Kubernetes),提供不同等级的服务:

用户自己进行容量规划、节点(Master和Worker)部署( ECS或者裸金属 )、维护等工作,称为专有模式。

用户只需部署Worker节点,Master节点和相关运维工作则由阿里云负责,称为托管模式。

如需扩容Kubernetes集群,则只需调整ECS个数,其它工作则自动完成(响应级别为分钟级)。

  1. 弹性容器实例ECI

容器服务ACK中,不论是专用模式还是托管模式,都需要进行容量的手工伸缩(分钟级),并都存在资源利用不充分的问题(带来成本)。

针对这些问题,阿里云推出了弹性容器实例ECI(Elastic Container Instance)。一个ECI就是一个Pod(Pod由阿里云来运维),供Kubernetes调度和运行。用户只需提供打包好的镜像,并为容器运行消耗的资源按需付费(免运维)。

ECI(容器形态)和ECS(虚拟机形态)具有同样的地位,共享共用阿里云的计算基础设施。

  1. Serverless Kubernetes(ASK)

基于ECI,阿里云推出了“Serverless”版本的ASK(Alibaba Serverless Kubernetes),不仅实现了Master节点的托管,还实现了计算节点的无限扩展。计算节点使用了Virtual Node来管理ECI(POD),用户只需提交Yaml 文件即可创建Pod。

虚拟机

每个Virtual Node最多支撑3000个POD,如POD数量超过3000个,则需要创建多个Virtual Node。

虚拟机

那么,Virtual Node是如何实现的呢?

在《Kubernetes:逻辑组件》一文中,我们知道Kubernetes集群的逻辑组件包含kubelet,而kubelet的作用就是在Node节点上运行,接受kube-scheduler的调度请求,并根据请求信息创建和运行容器。

为了让ECI这样的容器弹性实例与Kubernetes集成,作为其中的Node节点,微软Azure发起了Virtual Kubelet开源项目。其基本原理是Virtual Kubelet启动时,会伪装成一个Work节点,也就是Virtual Node,向kube-api-server组件注册,当有请求调度到Virtual Node时,Virtual Kubelet调用Provider的API接口,实现Pod的创建。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分