什么是 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 集群学习资源

Google Cloud