什么是 Kubernetes (K8s) 集群?

对于构建和部署现代应用的企业开发者来说,管理大规模的容器化工作负载是他们常常要面临的挑战。Kubernetes(通常缩写为 K8s)已成为容器编排的标准。这个强大的开源系统的核心是 Kubernetes 集群,用户可以在这个稳健的环境中自动部署、扩缩和管理容器化应用。

Kubernetes 集群
Kubernetes 集群图

Kubernetes 集群的定义

Kubernetes 集群是一组节点或机器,它们组合在一起运行容器化应用。它提供了一个统一的抽象计算环境,让您无需直接与各个服务器交互,即可部署和管理服务。

K8s 集群主要负责容器编排:它可自动执行诸多复杂任务,比如维护应用可用性、根据需求扩缩资源以及在不停机的情况下发布更新等。

Kubernetes 集群通过管理容器的整个生命周期,为企业应用提供了确保可伸缩且敏捷所需的基础平台。

节点

节点是 Kubernetes 集群中的工作器机器,可以是云服务提供商提供的虚拟机 (VM),也可以是数据中心内的物理服务器。每个节点都提供运行容器所需的 CPU、内存和网络资源。K8s 集群由一个控制平面以及一个或多个工作器节点组成,它们共同提供集群的计算能力。

pod

在 Kubernetes 对象模型中,最小且最基本的可部署单元是 Pod。它代表集群内活跃进程的单个实例,封装了一个或多个紧密耦合的容器、共享存储资源及一个唯一的网络 IP 地址。虽然一个 Pod 可以包含多个容器,但最常见的模式是一个 Pod 包含一个容器,从而在 Pod 和容器化应用之间建立一对一的映射。

容器

容器是轻量级、独立且可执行的软件包,其中包含运行应用所需的所有内容:代码、运行时环境、系统工具、系统库和设置。这种封装有助于确保应用在不同计算环境之间快速、可靠地运行。由于容器具有可移植性和高效性,因此非常适合用来构建基于微服务的现代应用。

K8s 集群架构

Kubernetes 集群架构由两种主要类型的组件构成,可用这些组件构建一个具备容错能力的系统来运行应用。

  • 控制平面:它充当大脑的角色,负责管理集群(“脑力活”)。
  • 工作器节点:它们充当四肢的角色,负责提供运行时环境(“体力活”)。

控制平面(主节点)

控制平面负责维护整个集群的期望状态。它会做出有关调度的全局决策、响应集群事件,并管理所有 Kubernetes 对象的生命周期。控制平面的关键组件包括:

  • 后备存储区 (etcd):一致且具备高可用性的键值对存储区,用作 Kubernetes 上所有集群数据的后备存储区。
  • API 服务器 (kube-apiserver):充当控制平面的前端,公开 Kubernetes API。它负责管理和验证 REST 请求,随后更新 etcd 中相关对象的状态。
  • 调度器 (kube-scheduler):调度器会监控新创建、尚未分配节点的 Pod,并根据资源可用性、政策和亲和性规范选择一个节点来运行它们。
  • 控制器管理器 (kube-controller-manager) [可选]:此组件运行各种控制器进程,用于调节集群的状态。例如,控制器可用于处理节点故障、确保 Deployment 拥有正确数量的 Pod 以及管理服务端点

工作器节点(计算节点)

工作器节点是实际运行容器化应用的机器。每个节点都由控制平面管理,并包含运行 Pod 所需的服务。每个工作器节点都包含如下核心组件:

  • kubelet:kubelet 是在集群内每个节点上运行的代理,负责与控制平面通信,并确保 Pod 规范中描述的容器在运行且健康状况良好。
  • kube-proxy [可选]:此网络代理在每个节点上运行,负责维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与 Pod 进行网络通信。
  • 容器运行时:此软件管理容器的执行,能够支持各种运行时,其中 containerd 是比较常用的运行时。

在 K8s 中使用集群

Kubernetes 集群功能非常丰富,可以解决企业开发和运维团队面临的诸多挑战。

容器化现有应用

将旧版应用迁移到容器中,以提高其可移植性、可伸缩性和资源利用率,而无需进行大规模重构。

构建新的云原生应用

K8s 集群可以用作基于微服务的架构的基础,实现服务的独立开发、部署和扩缩。

DevOps 和 CI/CD

通过将构建、测试和部署流水线与 Kubernetes 集群集成,实现流水线自动化,从而加快发布周期并提高可靠性。

可伸缩性和弹性

通过自动扩缩应用来处理变化的流量负载,并通过自动重启或替换故障容器来实现自我修复。

资源效率

通过将容器更密集地打包到更少的节点上,提高基础设施利用率,从而大幅缩减成本。


利用 Google Cloud 解决业务难题

新客户可获得 $300 赠金,用于抵扣 Google Cloud 的费用。

Kubernetes 集群管理

虽然 Kubernetes 功能非常强大,但设置和运行安全的生产级 K8s 集群所需的运维开销巨大。正因如此,企业团队可以利用 Google Kubernetes Engine (GKE) 等托管式服务来为自己的业务提供巨大价值。GKE 可以自动执行许多复杂且耗时的任务,从而帮助简化 Kubernetes 集群管理。

GKE 可以提供全托管式控制平面,处理其可用性、补丁和更新,让您的团队无需操心。它提供 Autopilot 模式等功能,可自动执行整个集群的运维管理,包括节点和扩缩,从而进一步削减开销并优化资源用量。借助 GKE,开发者可以专注于编写代码和构建应用,而平台则负责处理底层 Kubernetes 集群架构和基础设施,确保其安全性、可靠性及可扩缩性。

Kubernetes 集群学习资源