《容器、容器云和容器化PaaS平台之间的关系.docx》由会员分享,可在线阅读,更多相关《容器、容器云和容器化PaaS平台之间的关系.docx(5页珍藏版)》请在优知文库上搜索。
1、一直都有很多人迷感于容器应该属于IanS或是PaaS层,也搞不清楚容器云到底是该归到哪里,该由碗个团队来建设、哪个团队来维护,K8s是不是就等同于容器云?所以我们看到概念和定义的混乱,在实施容器云的时候也会有众多的分歧,无所适从。目前乂仃众多的公司推出容器化PaaS的概念,更搞不清楚谁是诳了.那么容器、容器/.、容化PanS以及与Docker,KUberneteS之间是个什么样的关系?这是需要我们明确并理解的问题,日志监拄认证权取应用开发、托管、运维Kubernetes租户容满容器容器容器容窗Engine(Docker?)IaaS星能力容器云容器化PaaS轻星化PaaS平台容器是一种操作系统级
2、虚仪化技术,Docker是一种容器引擎。使用Docker来运行操作容涔,但从容器自身来说,其提供的是IaaS层能力。KUbenWIeS提供了容器调度和管理的能力,加上云计笈租户功能,实现容云平台功能.而基干容技术所构建的应用开发、应用托管和应用运维平台则可以称为容器化PaaS平台,它是一种轻值化PaaS实现.结合日志、监控、认证、权限等基础能力则可以构建企业级的平台和可笈用服务,乘用微服务架构实现企业技术服务中代能力,支掠企业业务敏拄研发和模式转型.一、容器容器是一种轻量虚拟化技术,它不同于VMware虚拟化,所以其隔离性相对差、安全性差,但轻信也正是其特点.容器的概念其实也早就有之,只不过实
3、践的选择有差别。早在2006年的时候,我当时所在的公司就提出了基于java的多jvmContainers概念并进行了产品实践1.个java容器可以运行多个jvm,不过因为java自身特性导致的后来转型并不成功,最后不得不放弃了.应用层容器和操作系统级容器的实现还是有很大差别.麋作系统级的容器设计明显更合理,更易于实现和推广。通过标准化镜像封装,从而实现了环境一致性.容器为了弹性伸缩能力倾向于无状态应用,这样简化了容器设计实现的豆杂性.所以基于容器自身的特点,容器适用的场景并不是无限的.当然kubernetes从1.9版本正式支持有状态应用,增强了容器的场景适应能力,扩展了适用场景。经常有人拿容
4、器和虚拟机比较,虽然都是虚拟化,但二者差别还是很大的.虚拟机就好比是一个完整的人,而容器类似于妈妈肚子里的胎儿。它需要依赖于母体来生存,所以我们可以看到容器在操作系统中以进程的方式运行.容器的虚拟化损耗约1%,而虚世机的损耗约20%左右.但是容器带来了管理和运维的怎杂性.Docker提供了C1.I和RESTAPI方式,都需要很高学习成本,在达到一定数量的容器后用C1.i来管理和运维将会是雷梦,所以有DockerSwarm、MeSos、Kubernetes等容器调度管理框架的出现,提升管理和运维效率,降低运维难度和工作量。既然容器也是操作系统级的虚拟化,其可以看作类似于虚拟机的对象,容器本身提供
5、的服务依然是基础设施资源服务,所以容器应该是处于InaS层。而基于容器技术和容器调度管理技术如kubernetes实现的容器公平台则封装了容器操作,提供平台能力,所以容器云平台应该属于PaaS层,这也是很多人直接把容器云平台称为PaaS平台的原因吧.不过确切的说,容器云平台并非真的PaaS.目前假多容器云平台所提供的能力无法满足应用开发、应用托管、应用运维的PaaS平台能力要求,而通常仅仅实现租户+云端的容器调度管理能力,依然有大量的C1.l运维工作。对使用容器云的人员的学习成本和要求都比高.二、容器云Kubernetes并不等于容器云,kubernets只是一种容器调度管理框架,和docke
6、rswarm、mesos等一样,用于调度、管理容器.比如调度容器到匹配的资源上,管理容器的弹性伸缩、灰度发布、负载路由等。云计算很重要的一个概念是租户.租户租用共享的云计算资源,按需和用最计费,不用则不产生费用.而kubernetes中是没有租户的概念的.所以仅有kubernetes是不够的,kubernetes可以看作是容器云平台的内核,我们需要使用kubernetes来实现容器云平台,但还需要基于kubernetes进行封装,支持租户共享基础设施资源等能力.租户可以是一个跨平台的概念,在容器云平台建设中,有容器云平台的租户设计是基于kubernetes的namespaces来划分的,一个租
7、户使用一个namespaces,这会带来很大的局限性.虽然租户的定义没有明确标准,但从理论上说租户是高于kubernetes的,所以在kubernetes内部没有租户的概念,而是用namespaces来实现资源隔离.在容器云平台实践中,需要考虑租户的设计,可能是跨越多个kubernetes集群的,甚至跨越多个IaaS平台用kubernetes实现容器调度,也就是可以把容器调度到不同的云平台上运行,比如同时可以把容器调度到聘讯云、华为云、AWS云等云平台上(通过云管来实现资源的统一管控,支撑容器云平台的资源调度),从而实现高等级备份和容灾等。这就需要考虑基于Kubernetes多集群之上的容器云
8、平台能力的抽象和设计.容器适用于轻量、弹性、无状态等业务场景,这也决定了在传统行业其应用场景并不广港.传统行业业务追求稳定性,并不需要频繁的变更和亚启。亚启可能会带来数据的丢失,也可能造成业务流最处理的波动.另外需要认识到,生产环境和测试环境的要求是不一样的.测试环境可以敏捷的迭代测试、快速的环境准备、频繁的部署删除,但生产环境往往要求持续稳定的运行.所以容器更多的适合测试环境,以更快的构建测试环境,确保回归测试环境一致性,更快更频繁的构建、发布、部署、测试、反饿,从而提升效率,减少出错频率.这也是我们公司各个团队都乐意转到容器云平台的一个原因。生产环境则要求鬼定,应用服务部署之后,不需要频繁
9、的启停,也很少频繁的弹性伸缩,往往需要提前规划好系统容最需求,确保平稳和稳定。一种技术解决不了所有问题.容器不是万能,它有适合的场景.我们不能削足适履,而是要理解容器的特点,选择合适的业务场景。企业内需要不同技术的组合来满足企业业务需求,而容器适合支撑轻量、弹性、无状态业务应用。所以测试环境我尽可以把kafka、MySqI、ES等快速部署起来用于测试,但这些组件在生产环境就需要物理化部署,而不是容器化部署.测试和生产在性能、稳定性、效率等方面的要求是不一样的,所以不同的场空需要考虑不同的方式.也有很多人鼓吹容器节省资源,这只是相对的.每个容器都是一个完整的业务应用及依底包组合,依敕的文件越多,
10、部署容越多,垂史的资源占用就越多,浪费就越多,反而比如一台服务器上直接起若干服务。而且大M的容器如果调度不合理往往会导致资源争抢的出现,应用性能不时受到影响.什么时候容器云会节省资源?在达到一定量后,中大规模应用之后,可以实现资源的分时段使用,比如白天做业务处理,晚上做数据分析、计算、整合、统计等,相当于使资源分片,但这取决于业务的运行资源和时段要求以及容器量,只有达到一定量之后才能更好的规划和分时利用资源,从而达到“节省资源”的目的。但,这些对容器云平台的容器调度能力提出了非常高的要求。三、容器化PaaS容器云可以看作是容器化PaaS的一个雏形,但并不能真正称为PaaSPaaS平台类似于操作
11、系统(云操作系统),提供应用开发、托管、运维等能力.特别对传统行业人员来说,需要具备友好的UI,使用户能够不需要额外学习就可以方便的使用PaaS平台来完成应用开发、托管和运维需求.容器云或容器化PaaS平台属于基础平台,理论上应该由运维团队来搭建,但采用容器云之后,PaaS运维团队是有别于传统的运维团队,而应该是一种开发型运维团队,重点是运维平台建设、运维工具开发以及稳态业务应用运堆.而运睢可以分2-3个层次:基础设施资源运维、平台和工具运维、业务应用运维.开发团队则专注于业务应用的开发和迭代,业务团队则专注于业务的运营和创新.PaaS平台则起到一个承上启下的作用,向下使用基础设施资源,向上则
12、支撑业务应用的开发、运维和运营等.这有点类似于GoogleSRE,这也是企业数字化转型IT组织转型的需要方面.容器化PaaS平台可以更好的利用容器的特点支撑微服务化业务应用,所以我们在建设容器云平台时就提出了以应用管理为核心,支撑微服务化业务应用,这就需要在容器云平台具备服务治理能力.服务治理不是指SpringCIoud,也不是dubbo,微服务开发框架和微服务治理是两个概念.在容器云平台或容器化PaaS平台,可以不用SpringCIoud,不用dubbo,同样可以开发微服务,反而会简化微服务的爸理和治理.比如说服务注册,使用SpringCIoud可以要使用Eureka,就需要颔外的Eurek
13、a组件,而容器云平台自身是提供服务注册发现机制的,所以没必要非要选择SpringCIoud等工具。但是这就对容器云平台或容器化PaaS提出了比较高的要求,要能实现不同类型微服务的管理和治理.理解了这一点,在设计实现容器化PaaS平台的时候,就不会只考虑SpringCIoud或Dubbo,就可以设计出更通用的PaaS平台.我们把容器化PaaS定义为轻录化PaaS.所谓轻Jit化PaaS,就是让它来支撑微服务架构业务应用,而不去部若如生产数据库、Kafka、ES等蚤型数据库或中间件系统,因为它无论在稳定性.可靠性、性能等方面都不如非容器化部署,运维复杂度高.因此,使用容器云或容器化PaaS来支撑微
14、服务架构业务应用,实现敏捷的业务应用服务开发和迭代,快速构建一致性的开发、测试环境,支持弹性伸缩应对突发流星,扩展服务治理增强安全性控,提供统一的日志、监控、审计等企业级能力中心等,从而就可以基于容器化PaaS构建企业的可巨用中台服务,从而满足企业业务应用的敏捷变化需求和业务模式转型,促进企业数字化转型。也不少人在提敏态和稳态双态运维,我们觉得核心不是新的运维模式和传统运维模式并行,而是不同的业务场景需求。任何时候都存在敏态和稳态的需求,如果把数据库都容器化部署,这不是敏态,而是自找麻烦。我们前面提到,PoC和测试环境可以这么干,但生产环境就是不一样的场景需求.无论互联网类业务或者传统业务,生产环境的稳定性都是首要要求.容器、容器云、容器化PaaS对使用者有不同的要求.容器云产品化需要向容器化PaaS平台转型,并需要考虑不同业务场景的需求,以更好的实现应用开发、托管和运维能力需求.这也是实现PaaS平台的一个相对便捷的途径.