本文档介绍了开源容器编排平台 Kubernetes 的基本原理。Google Distributed Cloud (GDC) 气隙环境的许多组件都基于 Kubernetes,并且许多文档都假定您已经熟悉基本的 Kubernetes 概念和术语。如果您不熟悉 Kubernetes,请使用本文档作为推荐阅读内容的参考,以便入门。
学习 Kubernetes 基础知识对于设计、部署和管理 GDC 应用和底层系统组件至关重要。以下技术专业人员必须了解 Kubernetes 才能成功运行 GDC:
- 基础架构运维者组内的运维人员,负责安装和维护底层 GDC 软件和硬件基础架构。
- 平台管理员组内的管理员,负责在 GDC 上设计弹性基础架构和应用架构。
- 应用运维者组内的开发者,负责构建应用。
如需了解详情,请参阅 GDC 网闸隔离配置文档的受众。
关于 Kubernetes
Kubernetes 是一个开源容器编排平台。Kubernetes 集群的核心是一组称为 节点的工作器机器,用于运行容器化应用。整个 集群由控制平面管理,控制平面包含 API 服务器、调度器和 etcd 数据库等组件,负责 维护集群的状态。
应用打包到 pod 中,pod 是 Kubernetes 中最小的可部署单元,可以包含一个或多个容器并在节点上运行。为了在集群内组织资源(通常用于不同的团队或环境),Kubernetes 使用命名空间。
pod 的生命周期和状态由 控制器 管理。例如,Deployment 对象管理滚动更新,ReplicaSet 对象确保运行特定数量的
pod 副本。为了提供稳定的网络
端点(例如用于访问 pod 的 IP 地址和 DNS 名称),Kubernetes
使用 服务。
由于 容器存储 默认是临时的,因此 Kubernetes 提供 各种存储抽象(例如卷和永久卷)来管理 数据。
为了确保对集群资源和 Kubernetes API 的访问安全,Kubernetes 使用 基于角色的访问权限控制 (RBAC) 来定义角色、集群角色和 绑定,以便向用户和服务账号授予特定权限。
主要概念
以下是我们在整个 GDC 文档中用到的一些主要概念。这并非 Kubernetes 概念的详尽列表。您可以从提供的 Kubernetes 文档和我们的 推荐阅读内容中找到更多相关主题,以便阅读和探索。
节点和集群
所有 Kubernetes 工作负载都在 节点上运行。在 GDC 中,节点是虚拟机 (VM)。在其他 Kubernetes 平台上,节点可以是物理机或虚拟机。每个节点都由 Kubernetes 控制平面管理,并具有运行 pod 所需的所有组件。集群是一组可以被视为单个实体的节点,您可以在其中部署容器化应用。
如需了解详情,请参阅 Kubernetes 文档:
Kubernetes 控制平面
Kubernetes 控制平面是一组系统组件,用于管理集群的整体状态,包括 Kubernetes API 服务器(可让您使用 kubectl CLI 和其他工具与集群和应用互动)、调度器(用于在可用节点上调度 pod)以及 控制器(用于跟踪和管理集群状态)。控制平面由 GDC 提供和管理。
如需了解详情,请参阅 Kubernetes 控制平面组件 文档。
pod
在 Kubernetes 中,容器化应用在 pod内运行。pod 是您可以在 Kubernetes 中创建和管理的最小可部署计算单元。一个 pod 包含一个或多个 容器。当 pod 运行多个容器(例如应用服务器和代理服务器)时,这些容器将作为一个实体进行管理并共享 pod 资源。
如需了解详情,请参阅 Kubernetes 文档:
命名空间
Kubernetes 命名空间提供了一种机制,用于在集群内进一步分组和选择资源(例如 pod 和服务)。例如,如果您有多个应用团队在单个集群上运行工作负载。
如需了解详情,请参阅 Kubernetes 命名空间 文档。
控制器
Kubernetes 控制器会根据您指定的状态(例如“我希望在此集群上运行 3 个此 pod,每个 pod 中包含此容器”)跟踪和管理集群和工作负载的状态。 不同的控制器跟踪不同的 Kubernetes 资源类型,包括以下类型:
Kubernetes 控制器会根据您指定的状态跟踪和管理集群和工作负载的状态。例如,您可以设置集群的行为,使其运行 3 个 pod,每个 pod 中包含一个指定的容器。不同的控制器跟踪不同的 Kubernetes 资源类型,包括以下类型:
- Deployment:
Deployment自定义资源是表示一个或多个相同 pod(称为 副本)的 Kubernetes 对象。Deployment 会运行分布在集群节点中的 pod 的多个副本。Deployment 会自动替换失败或无响应的任何 pod。 - StatefulSet:
StatefulSet自定义资源类似于 Deployment,但 会为其每个 pod 保留一个永久的唯一身份。StatefulSet资源在具有永久状态的应用(例如有状态应用)中非常有用。 - DaemonSet:借助
DaemonSet自定义资源,您可以向 部分或所有节点添加默认 pod。这些通常是工作负载的辅助服务,例如日志收集守护程序或监控守护程序。 - ReplicaSet:
ReplicaSet自定义资源是一组相同的 pod。ReplicaSet通常作为Deployment资源的一部分进行管理。
如需了解详情,请参阅 Kubernetes 文档:
- 部署
- StatefulSets
- DaemonSets
- ReplicaSets
Kubernetes Service
默认情况下,您无法控制 pod 在哪个集群节点上运行,因此 pod 没有稳定的 IP 地址。如需为在 Kubernetes 中运行的应用获取 IP 地址,您必须在其 pod 上定义网络抽象(称为Kubernetes Service)。Kubernetes Service
为一组 pod 提供稳定的网络端点。
有多种类型的服务,包括 LoadBalancer 服务,这些服务会公开外部 IP 地址,以便您可以从集群外部访问应用。
Kubernetes 还具有用于内部地址解析的内置 DNS 系统,该系统可将 DNS 名称(例如
helloserver.default.cluster.local)分配给服务。
这允许集群内的 pod 访问使用稳定地址的集群中的其他
pod。您无法在集群外部(例如通过 gdcloud CLI)使用此 DNS 名称。
如需了解详情,请参阅 Kubernetes 服务 文档。
存储
如果您的应用需要保存超出其 pod 生命周期的数据(例如在有状态应用中),您可以使用 Kubernetes PersistentVolume
对象来预配此存储。您还可以选择使用临时存储,该存储会在相应的 pod 终止时销毁。
如需了解详情,请参阅 Kubernetes 文档:
基于角色的访问权限控制
Kubernetes 包含 基于角色的访问权限控制 (RBAC) 机制,可让您创建授权政策来访问集群及其资源。 使用 GDC 时,您通常会结合使用 Kubernetes RBAC 和 GDC 的 Identity and Access Management (IAM) 来保护应用。
如需了解详情,请参阅 Kubernetes 基于角色的访问权限控制 文档。
推荐的阅读内容
本部分提供了推荐资源的链接,以便您详细了解 Kubernetes。特别是 Kubernetes.io Kubernetes.io 提供了关于 Kubernetes 的全面可靠的资料。
外部指南和教程
- Kubernetes 概览:对 Kubernetes 的全面概念概览。
- 教程:了解 Kubernetes 基础知识: 通过示例了解 Kubernetes 的基础知识。
- Kubernetes 教程:当您 准备好了解基础知识之外的内容时,Kubernetes 文档的这一部分提供了有关各种 Kubernetes 主题的教程,从 有状态应用到安全性。
参考文档
- Kubernetes 术语表:Kubernetes 术语的 全面标准化列表。如果您不确定某个 Kubernetes 术语,请参阅术语表。