必须知道的 Kubernetes 设计模式 Top 10

爱谁谁
发布: 2025-10-04 09:34:30
原创
698人浏览过

前言

本文是对一篇翻译文章的学习总结,原文链接将在文末提供。

本文概述了 RedHat 出版的一本书,提炼了许多核心概念。该书介绍了与传统《设计模式》类似的云原生时代设计模式。《设计模式》在软件开发中具有重要意义,影响了许多软件开发项目,我曾在公司内开设过相关课程,以增强开发者的软件设计思维。

然而,这本书针对的是云原生时代的设计模式。传统设计模式主要针对单个模块或简单系统,而云原生开发方式和理念与传统主机开发模式有显著不同。因此,开发者在学习《设计模式》后,还应掌握这些云上设计模式。

正文

本文介绍了 Kubernetes 初学者必须了解的 Kubernetes 设计模式 Top 10,这些模式是从《Kubernetes Patterns》一书中总结出来的(如果无法下载该书,可联系我获取)。通过学习这些设计模式,可以更好地理解 Kubernetes 的基础概念,从而设计出更优的基于 Kubernetes 的应用程序。

在 Kubernetes 中,有许多重要的概念,但下图中的这些是使用 Kubernetes 时最关键的:

必须知道的 Kubernetes 设计模式 Top 10 Top 10 Kubernetes Design Patterns

为了帮助大家更好地理解,我们对这些设计模式进行了分类,受到《设计模式》的启发。

基础模式(Foundational patterns):这些设计模式是云原生容器化应用开发的最佳实践和原则。不管应用程序的性质如何,都应遵循这些指导规则。遵循这些原则将有助于确保应用程序适用于 Kubernetes 上的自动化。

健康探测模式(Health Probe pattern):健康探测指定了每个容器都应实现一个特定的 API,以帮助平台以最可行健康的方式观测和管理应用程序。为了完全自动化,一个云原生应用程序必须是高度可观测的,并且可以推断其状态,让 Kubernetes 能够检测出应用程序是否已启动并准备好对外服务。这些检测行为会影响 Pod 的生命周期管理,并决定流量是否会被路由到应用程序。

可预测需求模式(Predictable Demands pattern):可预测的需求解决了为什么每个容器都应该声明其资源配置文件,并仅限于指定的资源需求。在共享云环境中成功部署、管理和共存应用程序的基础依赖于识别和声明应用程序的资源需求和运行时依赖性。不管这些应用程序是否有硬件运行依赖或资源需求,这个模式描述了如何声明应用程序的需求。声明应用程序的需求是让 Kubernetes 在集群中找到合适的地方部署的基础条件。

自动布置模式(Automated Placement patterns):自动布置解决的是在集群中多个节点中如何影响 workload 的分布。布置能力是 Kubernetes 调度器的核心功能:在满足容器资源需求和遵循调度策略的前提下为 Pod 分配合适的节点。这个模式描述了 Kubernetes 的调度算法原则和外部影响布置决策的方法。

结构模式(Structural patterns):有了好的云原生容器是第一步,但还不够。重用容器和组合容器到 Pod 中,并达到我们期望的结果是下一步。这个分类中的模式聚焦于结构和将容器组织安排到 Pod 中,以满足不同的应用场景。在 Pod 中容器间的相互作用导致产生了这些模式。

初始化容器模式(Init Container pattern):Init Container 引入了一个独立生命周期的初始化相关的任务,与主应用程序容器分离。Init Container 提供一个与主应用程序容器独立的初始化相关任务,其生命周期管理也是独立的,通过这种方式实现了不同阶段的事物分离。这种模式引入了一个基础的 Kubernetes 概念,也使用在许多其他需要初始化逻辑的设计模式中。

边车模式(Sidecar patterns):边车模式描述了在不改变已存在容器的情况下,如何扩展和加强功能。这个模式是基本模式之一,它可以让单一功能的容器放在一起配合起来提供服务。

行为模式(Behavioral patterns):这些模式描述了由管理平台保障的 Pod 生命周期。根据不同类型的工作负载(workload),一个 Pod 会运行其任务直到完成,比如一个批处理任务,或是一个周期性调度执行的任务。或者它可能以守护服务或单例服务的形式运行。在最开始选择正确的 Pod 生命周期管理方式有助于保证 Pod 按照预期方式运行并解决问题。

创客贴设计
创客贴设计

创客贴设计,一款智能在线设计工具,设计不求人,AI助你零基础完成专业设计!

创客贴设计 51
查看详情 创客贴设计

批处理任务模式(Batch Job patterns):批处理模式描述了如何运行一个独立、原子的任务,直到任务结束。这种模式适合管理在分布式环境下独立、原子的任务。

有状态服务模式(Stateful Service patterns):有状态服务模式描述了如何使用 Kubernetes 创建和管理分布式的有状态应用。这种应用需要一些状态服务的特性需求,比如持久化的标识、网络、存储等。StatefulSet 的出现为这些需求提供了强大的保证,是有状态应用程序管理的理想选择。

服务发现模式(Service Discovery pattern):服务发现模式描述了客户端如何能访问和发现那些提供应用服务的实例。为了达成这个目的,Kubernetes 提供了多种机制,可以根据服务的消费者和提供者是在集群内还是在集群外而选择不同的机制。

高级模式(Higher-level patterns):这个分类中的模式更为复杂,代表了高级应用管理模式。这里的一些模式(比如控制器模式)是通用的,甚至 Kubernetes 本身就是构建在它们之上的。

控制器模式(Controller pattern):控制器模式是常活的监视器,并管理一组 Kubernetes 资源,让这些资源处在被期望的一个状态中。Kubernetes 的核心就是由一系列的控制器组成,并且它们会例行地监控和调整当前应用的状态到申明的目标状态。这个模式描述的是我们如何使用这种理念来为我们自己的应用扩展平台能力。

Operator 模式(Operator pattern):一个 Operator 就是一个控制器,并且这个控制器使用了用户自定义资源(CustomResourceDefinitions)将特定应用程序的操作知识封装在算法和自动化的方式中。Operator 模式允许我们可以有更灵活和更强表示的能力来扩展控制器模式。目前 Kubernetes 的 Operator 越来越多,这种模式已经转变成操作复杂分布式系统的主要方式。

总结

如今,Kubernetes 是最流行的容器编排平台。它由所有主要的软件公司共同开发和支持,并由所有主要的云提供商作为服务提供。Kubernetes 支持 Linux 和 Windows 操作系统,还有所有的主流编程语言。这个平台可以编排和自动管理无状态和有状态服务、批处理任务、周期性任务和 serverless 工作负载。这里描述的模式是 Kubernetes 提供的一系列更广泛的模式中最常用的模式,如下所示。

必须知道的 Kubernetes 设计模式 Top 10 划分到不同分类中的 Kubernetes 模式

Kubernetes 是新的应用程序可移植性层,是对应用的一种高级抽象,也是云上所有应用的共同特征。如果你是一个软件开发者或架构师,Kubernetes 很有可能以这样或那样的方式成为你生活的一部分。学习这里讲述的这些 Kubernetes 模式会让你对这个平台的想法有所改变。我相信 Kubernetes 和这些从它上面发展出的概念会变成和面向对象编程概念一样的基本概念。

这里介绍的这些模式尝试组织成为容器和云时代的《设计模式》。阅读这篇文章只是一个开头,更多的由于 Kubernetes 出现而出现的新的云原生软件开发方式还在等着大家去学习。

后记

梳理翻译之后还是学到不少内容,至少对我之前知道的一些概念理解更加深刻了。国外一些软件论述更喜欢从理论和模式框架出发,我虽然是一个重实践的工程师,但还是想从理论上能多了解一些,做到知行合一不容易。

原文:https://www.php.cn/link/81190ee016c56828c2f2c3f2cd94db77

以上就是必须知道的 Kubernetes 设计模式 Top 10的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号