想学习容器云平台的运维架构设计,可以读这篇→
Posted twt企业IT社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了想学习容器云平台的运维架构设计,可以读这篇→相关的知识,希望对你有一定的参考价值。
本文是2020容器云职业技能大赛优秀课程《容器云平台的运维架构设计》的试读。通过本课程的学习,能够了解容器云平台的运维架构设计并学习运维典型案例。 本次大赛学习平台由上百位来自用户社区及共创厂商的技术专家联手打造,是一场集学习、认证与比赛一体化的产业级学习运动。共发布5个岗位免费课程75个,其中运维管理岗课程共14个,完成课程学习+自测,获取岗位结业证书,还可以参加正在进行的“精英比赛”。具体请戳>>>
试读章节
容器云平台运维架构和容器云平台的架构设计紧密相关。容器云平台的架构会直接影响着其运维架构的设计。我们在设计容器云平台的时候,就从DevOps的思想角度出发,就考虑到了开发、测试和运维之间的协作和配合,因此定义了以镜像仓库为媒介,明确分离开发、测试和应用运维职责。把镜像仓库作为标准化交付库,把应用服务整个生命周期过程就划分为三个阶段:开发、测试和应用服务运维(应用运维和资源运维分两层)。
应用服务的管理和运维是整个容器云平台的核心。运维运营能力是整个DevOps过程中最重要的一部分,是企业创造新价值的支撑。在数字化转型4T(指的是IT信息技术、CT通信技术、DT数据技术、OT运营技术)融合的时代,运维运营是关键。容器云平台的运维狭义的说是容器云平台自身的运维及对平台运营支持;广义的说也包括容器云平台之上业务应用服务的运维运营支持。我们在设计容器云平台时,定义了容器云平台“以应用管理为核心”,是从广义上来定义容器云平台的运维架构。作为传统企业用户,我们觉得不能只关注一个平台或者一个工具,更要关注其价值或潜在的价值在哪里,更更好的协助、配合相关部门团队取得价值,这样我们的运维工作才真的更有意义和更有价值。毕竟我们不是互联网企业,侧重点不一样,容器云平台、云管平台等都是基本的工具,都是为了更好的服务好业务团队,因此在设计容器云平台架构和定义容器云平台运维架构的时候,更多的是基于实际的需求来确定的。
容器云平台的运维与传统系统运维有一定的差异。在现代化应用开发的体系如DevOps 的驱动下,容器云平台的运维更需要一支全功能团队支撑。以社区为底座,让各研发团队掌握PaaS/容器云平台的技术。平台运维团队自身从开发者体验、上云流程、平台迭代到全栈的技术能力四大方面支撑建立安全稳定的平台以支持开发团队以较低使用门槛上容器。同时,这个平台的支撑团队应该是跨部门的覆盖运维与开发能力与技术栈。
对于PaaS/容器云平台团队而言,运维和平台迭代的技术能力关注点大致在以下几个大的方面:
1. 集群生命周期管理 Cluster lifecycle management
2. 集群与应用日志管理Log lifecycle management for cluster and apps
3. 监控与告警Monitoring / Alerting plan
4. 容器镜像生命周期管理Container image lifecycle management
5. 集群容量管理Cluster capacity management
6. 自动化运维实践Automated operational exercises
7. 应用模式Application patterns
8. 运营流程Team onboarding process
9. 平台与应用安全Platform and Application security
使用RACI (https://baike.baidu.com/item/RACI) 模型来考虑的话,平台的各项工作对于不同的角色有相对明确的定义,如下图所示:
因此,基于实际的需求考虑,在划分三个阶段的基础上,我们定义容器云平台运维架构包含应用服务运维和基础设施资源运维两个层次。传统丹田系统的运维运营,通常要自己管理和维护系统的基础设施资源。但如果采用了容器云平台,就不能从上到下还是自己来维护,否则那运维工作量可能远远超出想象。也正是基于此考虑,我们将基础设施资源运维和应用服务运维分离,使应用服务运维人员专注于应用运维,基础设施资源运维人员专注于基础设施资源运维。而又由于基础设施资源类型众多,有虚拟化、私有云、众多共有云等不同类型,需要由多云管理平台来统一管理和维护基础设施资源,并为容器云平台提供标准化的基础设施资源服务。容器云平台的平台管理员只负责容器云平台的基础设施资源的管理和分配,容器云平台只是使用资源而不运维资源。
同时,为了更好的利用容器的轻量、弹性、无状态等特性,同时又保证满足某些应用和服务的稳定性要求,我们结合容器化部署和非容器化部署各自优缺点,将应用服务管理和治理分为两层体系,容器云平台层和API网关层。
综合上面的思路和分析定义,容器云平台运维架构设计定义为三个阶段、两层运维和双层服务治理架构。使整个容器云平台运维架构清晰简明,也很便利的划分相关运维人员职责,更好的协调不同团队之间的工作,满足DevOps所期望的减少资源浪费、提升团队协作、提高IT效率、降低业务成本等需求。
1 以镜像仓库为媒介
1.1 开发阶段
开发阶段以交付标准化镜像为重点,以自动化方式编译、打包、提交镜像到测试镜像仓库,这样使开发人员依然关注业务逻辑的设计和实现,同时也要关注满足应用服务架构容器化部署的可扩展性、弹性、高性能等要求,但不需要考虑服务器、网络、存储等来源、管理、监控和维护等事项。
1.2 测试阶段
测试阶段以测试镜像仓库为起点,在完成了各项测试任务之后,满足生产部署要求的应用镜像自动化交付到生产镜像库。镜像不变,则相当于环境不变,从而实现了环境一致性。在镜像测试部署和生产部署过程中,都能实现分钟级的配置部署,从而提升了效率。配合标准化基础设施资源的分钟级申请部署,可以在任何测试环境实现快速的测试环境搭建和测试。
1.3 生产阶段
生产运维阶段以生产镜像库为起点,部署、运行、监控、维护业务应用系统,同时需要按需供给这些业务应用运行和业务运营所需的基础设施资源。这是持续时间最长最重要的过程,也是创造新价值的过程。
生产运维阶段又可以细分为若干个子阶段和部分,比如持续部署、持续监控、日志管理、服务管理与治理、基础设施资源管理与分配等。细化这些阶段和部分是为了更好的理解和设计容器云平台运维架构,更好的实现容器云平台的运维能力。
以镜像仓库为媒介,实现了一次构建,多环境部署运行能力。我们未采用一些人建议的在不同环境都需要打包构建的方式,而是采用“开发环境一次构建,交付标准化镜像,多环境部署运行”的方式,在开发环境一次构建之后,自动上传到测试镜像仓库;由测试人员在容器云平台快速部署构建应用服务的测试环境,可以是多版本并行,通过两层服务治理体系能实现;在完成测试之后,同步镜像到生产环境镜像仓库,然后就可以在生产环境部署运行。
2 资源运维和应用运维分离
云计算的三层架构(IaaS、PaaS、SaaS)很好的定义了每一层云平台的能力。容器作为基础的单元,可以作为一种资源,提供运行时环境,可以是在IaaS层,可以通过IaaS云平台或者云管提供容器化服务。而基于容器而实现的容器云平台,我们认为目的是为了更好支撑应用,简化应用管理工作。不仅仅简单提供容器服务,否则就复杂化了应用管理的工作。
从云计算的三层体系划分(IaaS、PaaS、SaaS)考虑,我们把容器云平台定义为轻量化PaaS平台。容器可以作为资源放在IaaS层,但容器云平台一定是在PaaS层。因此我们设计的容器云平台的四层架构(基础设施资源层、资源调度层、平台层、应用层)很好的解决了应用运维和资源运维的耦合问题,将基础设施资源运维和应用运维分离,使专业的人员用专业的技能去完成专业的事项。
2.1 基础设施资源运维
容器云平台的重点并不在基础设施资源运维。基础设施资源可以通过IaaS层的标准化资源服务来提供。在容器云平台,平台只是使用基础设施资源而不维护基础设施资源。租户使用申请或分配的资源来部署运行应用,而不需要考虑基础设施资源的维护和运营,这样就把重心放到了应用本身,按需申请和使用资源。而不同的云资源也很好的提供了备份、迁移、容灾等能力。
应用服务的部署运行离不开基础设施资源的支持,但对租户来说,基础设施资源应该是透明的。在基础设施资源维护方面,私有云也需要借鉴公有云的思想。租户关心的是业务应用,透明的按需申请使用资源。云厂商越来越多,提供的云资源类型也各不相同,对于任何一家公司来说,必须要整合这些不同的云资源,以标准化资源服务的形式才能更好的支撑企业业务运营。这就需要依托多云管理平台,通过基础设施资源的整合和融合,构建统一的基础设施资源服务;容器云平台所使用的基础设施资源如CPU、内存、存储、网络等资源由云管平台进行统一的管控和分配,租户只是使用基础设施资源而不需要维护基础设施资源,使他们专注于应用的管理运维。容器云平台基于云管的抽象定义并提供集群、资源分区、节点、CPU、内存、存储等资源供租户按需使用。容器云平台也可以根据配置规则在资源不足时自动扩展资源,并同时告警提醒,以提醒租户管理员和平台管理员能及时地检查并更改资源分配。
基础设施资源的维护和纳管不是在容器云平台来实现,而是由多云管理平台来实现。容器云平台(定位于轻量化PaaS)只是使用标准化基础设施资源而不维护资源。多云管理平台维护管理私有云、公有云、内部物理服务器、存储、网络、超融合等资源,通过多云管理平台提供标准化的资源服务。这样也清晰的定位了云管平台和容器云平台的职责,在企业内构建容器云平台和使用内外部不同类型的私有、公有云资源时,整个一个云运维架构结构清晰、职责明确、功能范围合理,容易理解和构建。
1. 多云(IaaS)管理平台
市面上多云管理平台几乎包含了云计算的三层能力,导致很多企业在建设云平台时依然面临着单体、重复建设等问题。不得不在公司内部建设很多朵云,这些云往往难以融合,这是一个很大的问题。因此,云平台的建设一定需要考虑分层。
从目前云市场的现状来看,更多的还是提供基础设施资源服务和SaaS服务。PaaS服务很不容易。PaaS可以认为是云操作系统,提供操作系统级的平台服务。从实际的需求出发,为更好的服务于企业业务应用生命周期管理,界定多云管理平台的能力。把多云管理平台划归于IaaS层,而不是跨云计算多层能力,这就比较清晰的定义了云管平台的能力和功能范围。云管平台的职责是纳管IaaS层的不同类型的资源,抽象并输出标准化资源服务。而平台服务(PaaS)和应用服务(SaaS)不在云管平台实现。比如应用部署、中间件服务等。应用管理和中间件管理都是在PaaS层,而PaaS则支撑SaaS层服务,比如消息服务、财务服务等。应用部署时由PaaS平台调度云管平台提供的标准化资源,比如,可以把应用调度到阿里云、腾讯云、或者华为云,这项调度是由PaaS平台来实现的,调用云管平台抽象封装过的阿里云、腾讯云或者华为云的标准化资源服务。
所以,为更好的支撑业务应用,需要明确多云管理平台是管理不同的IaaS云资源,包括私有化基础设施资源。它不应跨层去管应用或者提供SaaS服务。
2. 资源分区
资源分区是我们抽象定义的一个资源管理对象。目的是为了给容器云平台提供标准化资源服务。基础设施资源可以来自于公有云、私有云、虚拟化、物理服务器、各种存储、不同的网络类型等。通过资源分区抽象之后,把不同类型的资源都划分为一个个标准化的资源分区,分配给租户,租户按需部署调度应用服务到相应云资源分区中,实现业务部署需求。
2.2 应用运维
容器云平台提供平台级的服务能力,为业务应用的部署、运行、监控、升级、维护等提供平台支撑。应用管理和维护是容器云平台功能实现的核心。
容器云平台建设的目的是为了支撑企业业务应用,实现业务应用微服务化的统一平台部署和运维管理。
把容器云平台建设成为企业级应用管理平台,采用微服务架构,实现业务应用的整合与重构、快速响应业务需求。因此,容器云平台应用管理是其核心功能。
应用运维包括应用的部署、运行、弹性伸缩、灰度发布、运行时监控、运行时配置更新、升级、服务管理与治理、租户隔离等。
1. 租户隔离
多租户的设计既可以满足不同业务场景合规上的隔离要求,也可以根据业务需要进行业务租户的整合和分离部署管理。
由于Kubernetes并没有租户的概念,因此不同的容器云平台对租户的定义可能是不一样的。有的租户对应Kubernetes的namespace,有的则独立于Kubernetes的单独对象。基于我们的容器云平台架构,在平台层定义租户,一个租户下可以管理一到多个应用,每个应用对应于Kubernetes的一个namespace。每个租户有租户资源限额,为了支持应用下服务实例的弹性伸缩需求,namespace则不做资源限额控制。
2. 持续部署
持续部署并不适合所有应用场景,因此是否需要实现持续部署能力,要根据业务需求来确定。持续部署更多可能在测试环境,快速部署应用服务满足bug修复验证、回归测试等要求。传统企业生产环境往往追求的是稳定,和互联网企业是不一样的,因此在设计实现运维架构和运维能力的时候也要从实际需求出发来确定。
3. 弹性伸缩
弹性伸缩是容器云的重要特性,也是采用容器云的重要原因。我们定义应用管理为应用、服务、实例三层对象管理机制,实例运行在容器中,是支持分布式部署的微服务实例,借助容器的特性和规则定义可以实现微服务实例的弹性伸缩。
4. 灰度发布
灰度发布能力主要用来验证新版本的功能,导入或者复制部分实际流量来实现生产验证。基于服务治理的两层负载分发能力,可以根据需要在API网关层或者容器云平台层进行流量分导和分发。
5. 运行时监控
应用服务运行时的状态、流量、资源使用量、响应时间等是判断业务应用实例运行状况的依据。实时的数据采集和展示是应用服务运行时监控和管理的基础。容器云平台的平台层对容器运行时数据采集和存储及处理,为业务应用服务的管理和维护提供了数据支持,也为持续的监控管理及趋势分析提供了数据基础。
6. 服务运行时配置动态更新
业务应用服务运行时配置的动态更新是应用敏捷运维的要求。在不需要重新部署应用的情况下,通过配置中心配置的更改,下发给业务服务实现自动配置更新,对于特殊环境或者情况下无法重启应用或者服务,
就显得非常重要了。例如某些情况下,需要打开应用服务的debug日志,如果重启服务则可能无法重现当前异常,如果能支持运行时配置动态更新,则会方便的多。
7. 升级/多集群容灾
升级包括平台升级和应用服务升级。容器云平台多集群设计一个重要的需求场景就是平台升级不会影响业务的运行,对客户不可见。同时支持业务应用的容灾备份需求,可以部署应用服务到位于不同机房或数据中心的集群中,满足业务多地多中心的容灾备份要求。
8. 服务治理双层体系
服务治理实现容器云平台层和API网关层双层服务治理能力,在容器云平台借助容器的特性实现服务的注册、负载均衡、灰度、自愈、弹性伸缩、容灾备份、链路跟踪、拓扑展示、日志、监控等能力,在API网关层则实现服务的认证、访问控制、路由分发、转换、过滤、限流、熔断、访问统计等能力。
2.3 平台运维
把容器云平台自身的运维单独拿出来简单说几句。容器云平台实现了轻量化PaaS能力,承上启下,向下可以使用多云提供的基础设施资源,向上使用这些基础设施资源来支撑企业业务应用的运行。这也是我们为什么定义云管平台来管理多云基础设施资源的原因。通常容器云平台自身运维也比较简单,没有太多工作量,主要是平台运行状态的监控和组件的维护、升级事项。
1. 多集群
容器云多集群场景下部署架构可能是不一样,不过多集群运维基本相同。集群的部署、节点的维护、集群运行监控、集群升级等是日常的运维工作内容。
2. 中间件
容器云平台很重要的一个能力是提供中间件平台化能力,比如消息通信、数据存储、日志采集及处理等。
在容器云平台测试环境,为支撑快速敏捷构建业务场景测试环境,选择容器云平台上的服务组件(中间件)如kafka、redis、mysql、rabbitmq、jenkins、git等实现一键部署和回收,保证环境的一致性和无污染性。
(试读章节完。篇幅所限,如需系统学习可以直接免费下载全文,学习中有疑问,可以参加在线辅导答疑。)
2020 容器云职业技能大赛
运维管理岗课程系列
识别以下二维码
了解更多”2020年容器云职业技能大赛“信息:
以上是关于想学习容器云平台的运维架构设计,可以读这篇→的主要内容,如果未能解决你的问题,请参考以下文章