书库技术与未来Kubernetes生产化实践之路
书籍封面

Kubernetes生产化实践之路

作者 孟凡杰等
15.0 分钟

摘要

Kubernetes生产化实践之路

  • 本书剖析Kubernetes设计原理,分享互联网公司构建高可用多租户集群经验,阐述数据面优化,助你从容应对生产挑战。
  • 你能获得:
    • Kubernetes架构设计深度理解
    • 高可用多租户集群构建的最佳实践
    • 数据面性能优化的实用技巧
    • Kubernetes生产环境部署避坑指南

核心内容:

1. Kubernetes架构基础:

  • 容器技术的优势在于轻量、优雅,并符合微服务时代应用的构建与部署需求。
  • Kubernetes将计算、网络、存储等基础设施抽象为统一模型,简化应用开发者工作。
  • 云原生应用需构建为微服务,运行在动态利用云计算优势的容器编排平台,实现松耦合、无状态、容错和弹性。

2. 计算节点管理:

  • 节点规格应保持一致,方便负载均衡和故障转移。
  • 虚拟化可灵活管理节点,但物理机可减少管理成本和性能损失。
  • 操作系统选择稳定且维护周期长的内核版本,容器操作系统可有效保证节点一致性。

3. 容器核心技术:

  • Namespace实现资源隔离,CGroups进行资源限制。
  • 容器运行时负责管理容器生命周期,如Docker、Containerd和CRI-O。
  • 多样化存储驱动满足不同需求,Overlay2是推荐选择。

4. 节点资源管理:

  • Kubernetes通过监控节点状态,并使用ResourceVersion作为乐观锁避免资源竞争。
  • 节点预留资源,如CPU、内存和PID,保证系统服务质量。
  • Kubelet驱逐低优先级Pod,避免节点资源耗尽。

5. Kubernetes模型设计:

  • 对象设计遵循通用原则:业务模型化、控制器行为幂等、对象互补可组合、API操作复杂度线性比例等。
  • TypeMeta定义对象类型,Metadata定义对象标识,Spec定义期望状态,Status定义实际状态。

6. 控制器模式:

  • 控制器模式是Kubernetes系统运作的关键,每个控制器监听其所关注的对象的变更。
  • 控制器通过Informer监听对象变化,使用Lister查询对象,保证系统最终一致性。

7. 构建高可用Kubernetes集群:

  • 管理节点和工作节点分离,控制平面组件高可用部署。
  • etcd集群成员需分别在多个节点上运行,并定期备份。
  • API Server可横向扩展,借助Haproxy或负载均衡器实现高可用。

8. 构建企业级镜像仓库:

  • 解决Metadata管理、镜像的块文件管理及镜像分发问题。
  • 采用容器镜像扫描和准入的安全保证方案。
  • 可选择Harbor或Quay等开源镜像仓库。

9. 边缘计算:

  • 利用KubeEdge项目,构建基于Kubernetes架构的边缘计算。
  • 边缘数据中心,边缘网络接入,边缘计算应用。
  • 使用蜂房协议,边缘侧实现离线自治。

10. 网络接入方案:

  • Ingress定义API网关对象,实现七层转发规则、网关证书等高级路由功能。
  • 采用Contour或Istio等替代方案,解决Ingress的设计缺陷。
  • 掌握数据面组件Envoy的架构与实现。

11. 集群联邦:

  • 基于集群联邦技术构建跨数据中心的高可用应用。
  • 阐述V2版本的设计与实现原理。
  • 通过集群联邦技术实现集群规模控制、故障域控制和混合云。

12. 应用落地实践:

  • 应用需适应容器化,避免性能下降,资源开销大等问题。
  • 遵循十二要素原则,将应用程序构建为微服务。
  • 采用基于CRD的业务抽象,利用Operator定义新对象,并构建新对象的控制器。

13. DevOps落地:

  • 采用 DevOps,实现快速软件迭代,需要采用DevOps所共有的相互协作、敏捷开发、协调发布和自动化工具链。
  • 鼓励写书才是推进内部文档质量提高的出路。

14. 监控和自动修复:

  • 监控是衡量系统功能是否达到运维标准的重要因素,实施AIOps。
  • 监控要素包括指标收集、日志管理,系统运维流程上遵循最佳实践。
  • 从虚拟机技术到容器化技术是一个巨大的转变。

问答:

Q: Kubernetes核心竞争力是什么?

A: Kubernetes核心竞争力在于声明式系统、控制器模式、插件化框架和标准化推动。它抽象了对象,打破了不同云平台边界,并通过插件化框架实现了高度定制化和可扩展性。

Q: 生产化落地Kubernetes需要考虑哪些方面?

A: 生产化落地需要考虑集群规模、多租户支持、网络接入、应用改造、监控和日志管理、DevOps流程等。同时要关注高可用、安全性和性能优化。

Q: 如何解决大规模集群中的学习障碍?

A: 部门新人加入的时候都觉得不适应密集型的信息轰炸,我觉得以后我们部门有新人加入时,我会建议他们先读一遍这本书。大家如果经历一两次生产环境的问题,再回来看这本书,估计体会更深。

思维导图

目标读者

本书的适读对象包括 Kubernetes 架构师、运维人员、测试工程师、技术经理,以及寻求应用落地方案的软件架构师和开发人员。另外,本书苛求于生产系统最佳实践,对于已有 Kubernetes 基础的读者,阅读本书会有事半功倍的效果。

作者背景

本书作者团队由孟凡杰、小强、文利和苏菲组成,他们均在生产环境中拥有多年的实战经验,尤其是在eBay这样大规模的生产环境中摸爬滚打多年,积累了丰富的经验。他们不仅深入了解技术背后的原理,而且对系统设计有着深刻的思考和细节把握。他们致力于将这些经验毫无保留地分享给读者,帮助读者更好地理解和应用Kubernetes。

历史背景

Kubernetes 项目起源于谷歌内部的 Borg 系统,Borg 是一个大规模的集群管理系统,负责管理谷歌内部的各种应用和服务。随着容器技术的兴起,谷歌将 Borg 的设计理念和经验融入 Kubernetes 项目中,并于 2014 年将其开源。Kubernetes 的出现旨在解决容器化应用在集群环境中的部署、管理和扩展等问题,并逐渐成为云计算领域的事实标准。

章节摘要

音频

Comming Soon...