内容来源:2017年4月22日,RancherLabs大中华区技术总监江鹏在“不落地,无容器”技术沙龙进行《Rancher 1.5技术特性解析》演讲分享。IT大咖说(id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。
嘉宾演讲分享视频地址及PPT:http://suo.im/4P8vzM
摘要
Rancher容器管理平台1.5版已正式与大家见面了,此次分享将由Rancher Labs大中华区技术总监介绍Rancher的版本演进历史以及Rancher 1.5版本的变化、新特性及功能。
Rancher Labs产品
作为一家专注于容器技术的公司,Rancher Labs目前有三个产品,其中Rancher和RancherOS都已经正式发布,Longhorn存储目前还处于测试阶段。以下是三个产品的概要介绍:
Rancher:RancherLabs推出的全栈化容器管理平台。作为一个完全开源的容器管理平台,截止目前Rancher Server和相关镜像在Dockerhub上的下载次数已经超过4000万,全球的活动部署数量超过10000个。
RancherOS:RancherOS是Rancher Labs推出的专门用于运行容器的最小化操作系统。RancherOS仅包含运行Docker必须的软件,安装镜像大小仅为几十兆。在RancherOS中,一切都是由Docker管理的容器。RancherOS会启动两个Docker实例。一个称为系统Docker,是内核启动的第一个进程,即PID 1。它取代了其它Linux发行版本中的初始化系统,如sysvinit或system,负责初始化系统服务,如udev、DHCP和控制台,并将所有系统服务作为Docker容器进行管理。系统Docker会创建一个特殊的系统服务容器,即用户Docker,主要负责创建容器。所有的用户容器都运行在用户Docker容器中,因此删除所有的用户容器并不会影响运行RancherOS服务的系统容器。
Longhorn:基于微服务的开源分布式块存储系统。Longhorn遵循微服务的原则,利用容器将小型独立组件构建为分布式块存储,并使用容器编排来协调这些组件,形成弹性分布式系统。每个控制器上只有一个volume,这将大大简化存储控制器的设计。因为控制器软件的故障域仅限于单个volume,所以控制器若崩溃,也只会影响一个volume。Longhorn充分利用了近年来关于如何编排大量的容器和虚拟机的核心技术。例如,Longhorn并没有构建一个可以扩展到100,000个volume的高度复杂的控制器,而是出于让存储控制器简单轻便的考虑,创建了100,000个单独的控制器。然后,我们可以利用像Swarm、Mesos和Kubernetes这样的最先进的编排系统来调度这些独立的控制器,共享一组磁盘中的资源,协同工作,形成一个弹性的分布式块存储系统。
今天我们主要介绍Rancher容器管理平台,关于RancherOS和Longhorn的更多信息,可以参考RancherLabs官方网站(www.rancher.com)或者Rancher中文网站(cnrancher.com)。
上图说明了Rancher容器管理平台的总体概览,自下而上分别为:
基础设施层:通过集成docker-machine及相关主机驱动,Rancher可以和目前绝大多数公有云和私有云平台进行自动化集成。用户无需预先创建容器主机,通过Rancher的添加主机界面,输入相关平台的accesskey和secretkey等信息并选择相应设置之后,RancherServer就可以自动化的为用户创建主机、安装Docker引擎、安装RancherAgent并将主机加入到RancherServer所管理的环境中。
多租户环境管理:单套Rancher Server可以管理多个环境。在Rancher平台中,一套环境是一组使用特定容器编排调度引擎的主机的集合(集群)。例如通过Rancher平台,用户可以创建一个Kubernetes环境(集群),同时也可以创建并管理另一个使用DockerSwarm或者Mesos编排的环境。
基础设施服务:从Rancher 1.2版本开始,为了满足用户运行容器的多样化需求,Rancher平台自身进行了微服务化改造。支撑容器运行的各种基础设施服务,包括容器网络、存储插件、DNS服务、负载均衡等都以微服务容器化的方式在平台中运行。用户通过Rancher平台提供的环境模板,可以灵活的编辑定义自己希望使用的基础设施服务,从而创个性化的容器运行环境。
容器编排调度:目前Rancher平台支持的容器编排调度引擎包括Kubernetes、Mesos和DockerSwarm,同时Rancher还提供自研的Cattle编排引擎和Windows容器支持。
用户管理:Rancher平台提供本地用户认证及授权管理,同时也支持与多种企业级认证系统进行集成,包括微软活动目录(AD)、AzureAD、OpenLDAP、Github等。不同用户可以在环境级别设置不同的权限角色。
应用商店:应用商店是Rancher独具特色的另外一个功能。通过各种容器编排定义和RancherCompose增强,用户可以一键以容器化的方式部署各种复杂的企业级应用,包括Hadoop和Spark等。部署时可以根据需要设置各种部署参数,部署后应用商店的应用有版本更新时用户会收到提示并可以进行一键升级。
Rancher容器管理平台的总体概览如下,下面我们详细介绍一下Rancher 1.5版本中引入的新特性。
Rancher1.5特性概览
Catalog模板的条件逻辑支持
Catalog模板是Rancher用户中非常流行的一个功能,通过创建自定义的Catalog和模板,用户可以将各种复杂应用进行一键容易化部署。在1.5之前的版本中,Catalog模板支持内置的多种变量定义和解析。在Rancher 1.5版本中,Rancher可以通过Go模板系统使用条件逻辑。把条件逻辑和可变插值结合在一起,用户就可以更加灵活地生成更多动态Catalog模板了。
一个具体的使用案例就是Rancher内置的Kubernetes系统编排模板。如下图所示,在1.5版本中,用户在设置Kubernetes模板时可以选择是否需要启动多平面隔离部署。
当该选项被设置为required时,Rancher在部署etcd、kubernetesAPIServer和kubelet等容器时将要求各主机具备对应的主机标签,从而确保上述服务被部署到不同的主机之上,实现数据平面、管理平面和计算平面的隔离。具体的模板参数设置如下图所示:
API拦截器
在实际客户项目中,结合内部运维管理流程对容器管理平台进行一定程度的个性化定制是非常普遍的需求。Rancher从1.5版本开始支持拦截所有API请求,并且可以向每个请求添加前/后过滤器逻辑。这让管理员能够更加便利地控制API访问、或是添加细粒度API策略管理,以修改来自Rancher的API请求和响应。
如上图所示,在设置API拦截规则后,对应的API请求将被拦截,并可根据设置转发到其他系统进行进一步处理和判断后决定后续处理操作。API拦截器可以广泛的应用于各种个性化定制场景,例如基于Rancher的容器云平台的计费逻辑处理、平台各种操作的权限控制和流程审批处理等。
限制容器调度到特定主机
在Rancher 1.5之前的版本中,和业内大多数容器编排调度引擎一样,Rancher支持基于标签的亲和或反亲和策略,根据主机所具备的标签,用户在创建容器时可以进行条件判断,从而将容器调度或者不调度在特定主机。这种调度方式可以形象的称之为“以容器为中心的调度判断”,主机只是根据其设置的标签“被动”的接受或者拒绝容器的调度。在某些特定场景之下,我们可能需要“以主机为中心的调度判断”,比如在一个大的环境(集群)中,我们希望一些特定的主机专用于某些特定业务应用容器的运行,而拒绝其他应用容器。通常情况下,为了满足此项需求,我们需要为主机和所有创建的容器设置标签和调度规则来实现上述的需求。Rancher 1.5中引入了”Require Container Label”这一主机标签,当主机设置此类型的标签时,集群中的所有容器仅当也具备相同标签时才会被调度到相应主机,而其他任何容器默认情况下都不会被调度到此类主机。从而以非常简单的方式满足了上述“专机专用”的需求。
更多的Webhook功能
在Rancher 1.5中,引入了两个新的webhook功能支持,具体说明如下。
Webhook-自动伸缩主机
容器的自动弹性伸缩支持是容器管理平台必备的功能。但是一个容器集群的主机资源数量是有限的,当主机资源本身达到瓶颈时,仅仅在集群范围内有限的主机之上伸缩容器并不能实际解决问题。Rancher 1.5中引入了自动伸缩主机的功能,用户可以创建一个webhook并设置主机标签,当webhook被触发时,Rancher将从具备标签的主机中选择最近加入的一台的配置作为模板,根据用户的设置去自动添加新的主机到环境中或者从环境中移除相应的主机。从这一点来说,具备此类标签的主机组成了一个主机弹性伸缩组,与容器的弹性伸缩相结合,可以更灵活的满足系统弹性伸缩的需求。
Webhook-升级服务
结合容器管理平台的CICD是容器使用的主要场景之一。通常情况下,当开发人员更新代码、打包新的镜像并推送镜像到镜像仓库后,需要通过脚本或者API的方式调用容器管理平台,基于新的镜像升级已有容器,从而进行后续的测试或完成系统升级。Rancher在1.5版本中引入了根据镜像更新升级服务的功能,与镜像仓库相结合,当镜像更新时,镜像仓库可以触发对应的webhookURL,Rancher可以根据设置使用新版本的镜像升级环境中的服务。与传统的API或者脚本方式相比,使用webhook的方式升级服务打通CICD流水线更加简单直观。需要注意的是,此项功能需要镜像仓库支持,目前DockerHub和阿里云镜像仓库均支持设置webhook联动。
增强的网络策略支持
网络策略是Rancher在1.4版本中引入的功能。在Rancher的环境中,默认情况下同一环境中的所有容器彼此之间网络是可以互相联通的,用户可以设置网络策略限制不同容器之间的网络访问。在之前的版本中,用户只能通过API或者APIUI设置网络策略。在新版本中,用户可以通过环境设置UI设置网络策略,同时网络策略增加了更灵活的策略支持。用户可以设置同一个应用栈、同一个服务内部的容器之间的连通性,也可以通过设置服务之间的link定义容器网络的连通性。
其他功能增强
上面列举的这些是Rancher 1.5的主要功能增强。除此之外,Rancher 1.5还引入了以下这些新特性,包括:
Kubernetes部署增强
Rancher可以快速部署Kubernetes集群,但是由于网络访问的原因,在国内访问一些特定的位于gcr.io镜像仓库的镜像存在问题。在新的版本中,用户可以设置从其他镜像仓库下载这些镜像,从而保证Kubernetes部署的顺利完成。
UpgradeManager功能
Rancher版本升级时对应的基础设施服务可能需要升级。由于基础设施服务之间彼此存在依赖关系,在一个大规模环境中升级基础设施服务可能是一个负担。Rancher 1.5中引入了UpgradeManager功能(默认关闭),启用后系统将以特定的schedule逐步升级环境中的基础设施服务。
容器疏散功能
在日常运维工作中,对特定主机进行维护操作是一个很常见的需求。Rancher 1.5中引入了容器疏散功能,用户点击疏散按钮后,运行在该主机上的全部应用容器将被调度到其他主机,该主机被设置为Inactive状态不再接受容器调度,管理员就可以对主机进行维护操作。
作为一个新兴技术,容器和周边生态圈都在以非常快的速度演进。RancherLabs也在不断的打磨更新产品,给用户提供最好最新的容器管理平台。关于Rancher产品的最新信息和容器技术的相关讨论,大家可以关注RancherLabs的官方微信(@rancherlabs)。
我今天的分享就到这里,谢谢大家!
网友评论