Searching...
简体中文
English
Español
简体中文
Français
Deutsch
日本語
Português
Italiano
한국어
Русский
Nederlands
العربية
Polski
हिन्दी
Tiếng Việt
Svenska
Ελληνικά
Türkçe
ไทย
Čeština
Română
Magyar
Українська
Bahasa Indonesia
Dansk
Suomi
Български
עברית
Norsk
Hrvatski
Català
Slovenčina
Lietuvių
Slovenščina
Српски
Eesti
Latviešu
فارسی
മലയാളം
தமிழ்
اردو
Kubernetes Patterns

Kubernetes Patterns

Reusable Elements for Designing Cloud-Native Applications
by Bilgin Ibryam 2019 266 pages
Technology
Technical
Engineering
7 minutes

重点摘要

1. Kubernetes:云原生应用的基础

Kubernetes 是一个容器编排平台,构成了其他平台的基础。

分布式原语。 Kubernetes 引入了一组新的分布式原语,用于构建云原生应用。这些原语包括 Pods(容器组)、Services(用于网络和负载均衡)以及各种控制器来管理应用生命周期。这些原语提供了比传统的进程内构建块更高的抽象层次,使开发者能够专注于应用逻辑而不是基础设施问题。

声明式方法。 Kubernetes 采用声明式模型,开发者指定应用的期望状态,平台会持续工作以维持该状态。这种方法简化了应用管理,并实现了自动修复和扩展。Kubernetes 的关键概念包括:

  • 容器:打包的、隔离的应用代码和依赖项单元
  • Pods:最小的可部署单元,由一个或多个容器组成
  • Services:用于访问 Pods 组的稳定网络端点
  • 标签和注释:用于组织和选择资源的元数据
  • 命名空间:用于资源隔离和多租户的虚拟集群

2. 基础模式:容器化应用的构建块

要实现完全自动化,云原生应用必须高度可观察,以便 Kubernetes 能够检测应用是否运行以及是否准备好处理请求。

可预测的需求。 应用应声明其资源需求和运行时依赖项。这使得 Kubernetes 能够做出智能的放置和扩展决策。关键方面包括:

  • 资源配置文件:指定 CPU 和内存请求和限制
  • 服务质量(QoS)类别:尽力而为、突发和保证
  • Pod 优先级:指示 Pods 的相对重要性

声明式部署。 Kubernetes 提供了以最小停机时间更新应用的机制:

  • 滚动更新:逐步用新 Pods 替换旧 Pods
  • 蓝绿部署:在两个版本之间切换流量
  • 金丝雀发布:逐步增加新版本的流量

健康探测和管理生命周期。 应用应实现健康检查并响应生命周期事件:

  • 存活探测:检测应用是否在运行
  • 就绪探测:确定应用是否准备好处理流量
  • 生命周期钩子:响应启动和停止事件

3. 行为模式:Pod 管理和服务发现

单例服务模式确保一次只有一个应用实例处于活动状态,同时具有高可用性。

作业管理。 Kubernetes 提供了管理不同类型工作负载的抽象:

  • 批处理作业:用于运行有限的、可完成的任务
  • 定期作业(CronJobs):用于计划的、重复的任务
  • 守护进程服务:用于在每个节点上运行系统级服务

有状态服务。 Kubernetes 提供 StatefulSets 来管理需要稳定网络身份和持久存储的应用:

  • 有序部署和扩展
  • 稳定的网络身份
  • 每个 Pod 的持久存储

服务发现。 Kubernetes 提供了多种服务发现机制:

  • ClusterIP 服务:用于内部通信
  • NodePort 和 LoadBalancer 服务:用于外部访问
  • Ingress:用于基于 HTTP 的路由和负载均衡

4. 结构模式:在 Pods 内组织容器

辅助容器在不改变现有容器的情况下扩展和增强其功能。

多容器 Pods。 Kubernetes 允许多个容器组合成一个 Pod,从而实现各种模式:

  • 初始化容器:在主容器启动前执行初始化任务
  • 辅助容器:为主容器添加功能
  • 适配器:标准化异构应用的输出
  • 代理:代理与外部服务的通信

这些模式促进了关注点分离、模块化和应用设计的可重用性。它们允许开发者从更简单、单一用途的容器中组合复杂应用,同时利用 Pod 抽象提供的共享上下文和资源。

5. 配置模式:为各种环境调整应用

ConfigMaps 和 Secrets 允许将配置信息存储在专用资源对象中,便于通过 Kubernetes API 管理。

外部化配置。 Kubernetes 提供了多种机制来管理应用配置:

  • 环境变量:用于简单的键值对
  • ConfigMaps:用于非敏感配置数据
  • Secrets:用于敏感信息(如密码、API 密钥)

不可变配置。 为确保跨环境的一致性,可以将配置打包到不可变的容器镜像中:

  • 配置容器:用于存储配置数据的专用镜像
  • 初始化容器:用于将配置复制到共享卷中

配置模板。 对于在环境之间略有不同的复杂配置:

  • 模板处理:使用如 Gomplate 等工具生成配置文件
  • 初始化容器:在 Pod 初始化期间处理模板

这些模式使开发者能够将配置与应用代码分离,促进可移植性并减少环境特定问题的风险。

6. 高级模式:扩展 Kubernetes 和管理复杂工作负载

操作器是一个 Kubernetes 控制器,它理解两个领域:Kubernetes 和其他领域。通过结合这两个领域的知识,它可以自动化通常需要同时理解这两个领域的人类操作员的任务。

控制器和操作器。 Kubernetes 可以扩展以管理复杂应用:

  • 控制器:基于资源变化实现自定义行为
  • 操作器:编码领域特定知识并自动化复杂操作
  • 自定义资源定义(CRD):定义新资源类型

框架和工具。 多个项目促进了控制器和操作器的开发:

  • 操作器框架:用于构建基于 Go 的操作器
  • Kubebuilder:用于脚手架和管理操作器项目
  • Metacontroller:用于以任何语言实现操作器

这些模式使开发者能够扩展 Kubernetes 的功能,并在集群内自动化复杂的、应用特定的操作。

7. 扩展和构建:弹性应用和集群内镜像创建

Kubernetes 中的自动扩展允许我们定义一个变化的应用容量,而不是固定的容量,从而确保有足够的容量来处理不同的负载。

弹性扩展。 Kubernetes 提供了多种扩展应用的机制:

  • 水平 Pod 自动扩展(HPA):调整 Pod 副本数量
  • 垂直 Pod 自动扩展(VPA):修改资源请求和限制
  • 集群自动扩展:根据资源需求添加或删除节点

镜像构建。 Kubernetes 可用于在集群内构建容器镜像:

  • OpenShift Build:一个集成系统,使用各种策略构建镜像
  • Knative Build:一个 Kubernetes 原生的构建框架
  • 无守护进程构建:如 img、buildah 和 Kaniko 等工具,用于无根镜像创建

这些模式使开发者能够创建弹性、自我调整的应用,并通过利用 Kubernetes 的调度和资源管理能力简化镜像构建过程。

Last updated:

评论

4.31 out of 5
Average of 100+ ratings from Goodreads and Amazon.

《Kubernetes Patterns》获得了大多数正面评价,读者称赞其内容引人入胜、结构清晰、实例实用。许多人认为这本书对于理解Kubernetes概念和最佳实践非常有价值。一些评论者欣赏书中解释模式的方法,而另一些人则认为某些“模式”只是基本的Kubernetes功能。该书推荐给希望深入了解Kubernetes的开发人员和系统管理员,尽管对于有经验的从业者来说可能不那么有用。总体而言,这本书被认为是构建云原生应用程序的有用资源。

关于作者

Bilgin Ibryam 是一位在云原生技术领域,特别是Kubernetes方面的杰出作者和专家。他在为企业客户实施云原生平台方面拥有丰富的经验,这在他的写作中得到了体现。Ibryam的作品因其清晰性和简化复杂概念的能力而备受赞誉。他与他人合著了《Kubernetes Patterns》,旨在创建一本类似于《四人帮设计模式》但用于容器编排的资源。Ibryam的专业知识和实用方法使他成为Kubernetes社区中备受尊敬的声音,帮助开发人员和工程师更好地理解和实施云原生解决方案。

0:00
-0:00
1x
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Listening – audio summariesListen to the first takeaway of every book for free, upgrade to Pro for unlimited listening.
Unlock unlimited listening
Your first week's on us
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 5: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Sep 26,
cancel anytime before.
What our users say
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Compare Features
Free Pro
Read full text summaries
Listen to full summaries
Unlimited Bookmarks
Unlimited History
Benefits
Get Ahead in Your Career
People who read at least 7 business books per year earn 2.3 times more on average than those who only read one book per year.
Unlock Knowledge Faster (or Read any book in 10 hours minutes)
How would your life change if we gave you the superpower to read 10 books per month?
Access 12,000+ hours of audio
Access almost unlimited content—if you listen to 1 hour daily, it’ll take you 33 years to listen to all of it.
Priority 24/7 AI-powered and human support
If you have any questions or issues, our AI can resolve 90% of the issues, and we respond in 2 hours during office hours: Mon-Fri 9 AM - 9 PM PT.
New features and books every week
We are a fast-paced company and continuously add more books and features on a weekly basis.
Fun Fact
2.8x
Pro users consume 2.8x more books than free users.
Interesting Stats
Reduced Stress: Reading for just 6 minutes can reduce stress levels by 68%
Reading can boost emotional development and career prospects by 50% to 100%
Vocabulary Expansion: Reading for 20 minutes a day are exposed to about 1.8 million words per year
Improved Cognitive Function: Reading can help reduce mental decline in old age by up to 32%.
Better Sleep: 50% of people who read before bed report better sleep.
Can I switch plans later?
Yes, you can easily switch between plans.
Is it easy to cancel?
Yes, it's just a couple of clicks. Simply go to Manage Subscription in the upper-right menu.
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.