前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes十大必知设计模式

Kubernetes十大必知设计模式

作者头像
用户5166556
发布2023-03-18 11:44:12
5500
发布2023-03-18 11:44:12
举报

以下是由「Kubernetes patterns」一书综合而成的初学者必须知道的十大设计模式。熟悉这些模式将帮助您理解基本的Kubernetes概念,从而在讨论和设计基于Kubernetes的应用程序时帮助到您。

Kubernetes中有很多重要的概念,但理解这些设计模式是最重要的:

来源:Kubernetes设计模式

为了帮助您理解,受GoF设计模式的启发,下面将模式组织为以下几个类别。

基础模式 - Foundational patterns

这些模式代表了容器化应用程序必须遵守的原则和最佳实践,以便成为优秀的云原生公民。无论应用程序的性质如何,您都应该遵循以下指导原则。遵循这些原则将有助于确保您的应用程序适合于Kubernetes上的自动化。

探针检查模式

运行状况探测要求每个容器都应该实现特定的api,以帮助平台以尽可能健康的方式观察和管理应用程序。为了实现完全自动化,本地云应用程序必须具有高度可观察性,允许推断其状态,以便Kubernetes能够检测应用程序是否已启动并准备好为请求提供服务。这些观察结果会影响Pods的生命周期管理以及何时将应用程序对外提供服务。

声明式需求模式

可声明的需求解释了为什么每个容器都应该声明其资源概要文件,并将其限制在指定的资源需求中。成功的应用程序部署、管理和在共享云环境上共存的基础依赖于识别和声明应用程序的资源需求和运行时依赖关系。此模式描述您应该如何声明应用程序需求,无论它们是运行时强依赖项还是资源需求。声明您的需求对于Kubernetes在集群中为您的应用程序找到合适的位置至关重要。

自动放置模式

自动放置解释了如何影响多节点集群中的工作负载分布。放置是Kubernetes调度程序的核心功能,用于将新的pod分配给满足容器资源请求和执行调度策略的节点。该模式描述了Kubernetes调度算法的原理以及如何从外部影响内部调度决策。

结构化模式 - Structural patterns

拥有良好的云原生容器是第一步,但还不够。下一步是重用容器并将它们组合到Pod中,以实现预期的结果。这个类别中的模式关注于在Pod中构造和组织容器,以满足不同的用例。为了影响Pod中的容器导致产生了这些模式。

初始化容器设计模式 - Init Container

Init容器为与初始化相关的任务和主应用程序容器引入了一个单独的生命周期。Init容器通过与初始化相关的任务提供与主应用程序容器不同的独立生命周期,最终实现了关注点的分离。该模式引入了一个基本的Kubernetes概念,当需要初始化逻辑时,都可以使用这个设计模式。

边车模式 - Sidecar

Sidecar描述了如何在不更改现有容器的情况下扩展和增强其功能。该模式是一种基本的容器模式,允许单一用途的容器紧密合作。

行为模式 - Behavioral patterns

这些模式描述了管理平台确保了Pods的生命周期。根据工作负载的类型,Pod可以作为批处理作业运行到完成为止,或者被安排定期运行。它也可以作为守护进程服务或单例运行。选择正确的生命周期管理原语将帮助您以所需的方式运行Pod。

批处理作业模式

Batch Job描述如何运行独立的原子工作单元直到完成。此模式适合于在分布式环境中管理孤立的原子工作单元。

有状态服务模式

StatefulSet描述如何使用Kubernetes创建和管理分布式有状态应用程序。这类应用程序需要诸如持久标识、网络、存储和序数等特性。StatefulSet原语为这些构建提供了强有力的保证,非常适合管理有状态应用程序。

服务发现模式

服务发现解释了客户机如何访问和发现提供应用程序服务的实例。为此,Kubernetes提供了多种机制,这取决于服务使用者和生产者是位于集群上还是集群外。

高层设计模式 - Higher-leve

这个类别中的模式更复杂,代表更高级别的应用程序管理模式。这里的一些模式(如Controller)是永恒的,Kubernetes本身就是建立在它们之上的。

控制器模式

Controller是一种模式,它主动监视和维护一组处于所需状态的Kubernetes资源。Kubernetes的核心本身由一系列控制器组成,这些控制器定期监视并协调应用程序的当前状态与声明的目标状态。此模式描述了如何利用这个核心概念为我们自己的应用程序扩展平台。

Operator模式

Operator是一个控制器,它使用CustomResourceDefinitions将特定应用程序的操作知识封装为特定结构和自动化形式。Operator模式允许我们扩展控制器模式以获得更大的灵活性和表现力。Kubernetes的Operator越来越多,这种模式正成为操作复杂分布式系统的主要形式。

总结

如今,Kubernetes是最受欢迎的容器编排平台。它是由前沿软件公司共同开发和支持的,并由所有主要的云提供商作为服务提供。Kubernetes支持Linux和Windows系统,以及所有主要的编程语言。这个平台还可以编排和自动化无状态和有状态的应用程序、批处理作业、定期任务和无状态服务工作负载。这里描述的模式是Kubernetes提供的更广泛模式中最常用的模式,如下所示。

Kubernetes模式组织在不同的类别

Kubernetes是应用程序可移植层、也是云上每个应用程序的共同基础设施。如果你是一个软件开发人员或架构师,Kubernetes很可能会以这样或那样的形式成为你生活的一部分。学习这里描述的Kubernetes模式将改变您对这个平台的看法。我相信Kubernetes和由此产生的概念将成为面向对象编程概念的基础。

这里的模式是用于容器编排的GoF设计模式。阅读这篇文章一定不是结束,而是你Kubernetes之旅的开始。kubectl-ing快乐!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生技术爱好者社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础模式 - Foundational patterns
    • 探针检查模式
      • 声明式需求模式
        • 自动放置模式
        • 结构化模式 - Structural patterns
          • 初始化容器设计模式 - Init Container
            • 边车模式 - Sidecar
            • 行为模式 - Behavioral patterns
              • 批处理作业模式
                • 有状态服务模式
                  • 服务发现模式
                  • 高层设计模式 - Higher-leve
                    • 控制器模式
                      • Operator模式
                      • 总结
                      相关产品与服务
                      容器服务
                      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档