第2章·Kubernetes速览
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
若您初涉此领域,快速了解Kubernetes的本质及其运作机制将大有裨益。网络上虽有大量入门教程与基础课程,但本章将为您提炼最重要的背景知识与核心概念。全书后续内容将频繁提及集群节点组件,您可随时返回查阅本章内容。
什么是Kubernetes?
要理解Kubernetes( )的本质,需先厘清微服务与 容器的概念。
微服务架构要求将应用程序栈的各个组件作为独立服务开发和运行,这些服务之间需要相互通信。若选择在容器中运行这些服务,您将需要管理大量容器,同时还要考虑可扩展性、安全性、持久化存储和负载均衡等横切关注点。
Build Kit和Podman等工具将软件构建产物封装为容器镜像。Docker Engine和 containerd等容器运行时引擎则通过 机制调用镜像来启动容器。这种模式在开发者机器上用于测试或临时执行(例如作为持续集成管道环节)效果极佳。
Kubernetes作为容器 编排工具,可协助在物理机、虚拟机或Cloud管理数百乃至数千个容器。它同时能解决前文提及的横切关注点。容器运行时引擎与Kubernetes深度集成,每当触发容器创建时,Kubernetes会将生命周期管理职责委托给运行时引擎。
特性
前文已概述 Kubernetes 提供的部分容器管理功能,本文将深入剖析这些特性:
- 声明式模型
-
您无需编写命令式代码 使用编程语言来告诉 Kubernetes 如何运行应用程序。作为最终用户,您只需声明期望的状态即可。期望状态可通过符合 API 模式的 YAML 或 JSON 清单来定义。Kubernetes 随后将维护该状态,并在发生故障时进行恢复。
- 自动扩展
-
当应用负载增加时,您需要扩展资源;当流量减少时则需缩减资源。Kubernetes支持手动或自动扩展实现此目标。最实用且优化的方案是让Kubernetes自动扩展容器化应用所需资源。
- 应用程序管理
-
应用程序变更( ),例如新增功能和修复漏洞,通常会打包到带有新标签(通常为版本号)的容器镜像中。借助 Kubernetes 便捷的复制功能,可轻松将这些变更推送到所有运行该应用的容器。若发现阻塞性漏洞或安全隐患,Kubernetes 还支持回滚至先前应用版本。
- 持久化存储
-
容器仅提供临时文件系统 。容器重启后,所有写入文件系统的数据将丢失。根据应用特性,您可能需要持久化数据(例如应用涉及数据库交互时)。Kubernetes支持挂载应用工作负载所需的存储资源。
- 网络
-
为支持微服务架构,容器编排器需保障容器间通信( )以及集群外部终端用户与容器间的通信。Kubernetes通过内部和外部负载均衡实现网络流量路由。
高层架构
从架构上讲, 的 Kubernetes 集群由控制平面节点和工作节点组成(如图 2-1 所示)。每个节点运行在物理机、虚拟机或 Cloud 端的基础设施上。集群中节点数量及其拓扑结构取决于应用程序的资源需求。
图2-1. Kubernetes集群 节点与组件
控制平面节点与工作节点承担着特定职责:
- 控制平面节点
-
该节点 通过API服务器暴露Kubernetes接口,管理构成集群的节点, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access