云原生代表了基础设施部署方式的范式转变。如果您是云原生和 Kubernetes 的新手,您需要牢记 22 个基本的 Kubernetes 概念。
Workloads
- 节点(Node) - 节点可以是虚拟机或物理机,具体取决于集群。每个节点都包含运行 Pod 所需的服务,由控制平面管理。
- 集群(Cluster)——集群是基础。所有容器化应用程序都在集群之上运行。
- Pod——工作的基本单元。Pod 是可在 Kubernetes 中创建和管理的最小可部署计算单元。Pod 几乎从来不会自行创建,而是由 Pod 控制器完成所有实际工作。
- 命名空间(Namespace) - Kubernetes 支持由同一物理集群支持的多个虚拟集群。这些虚拟集群称为命名空间。命名空间适用于许多用户分布在多个团队或项目的环境中。
Pod Controller
- Deployment - 在 Kubernetes 上获取应用程序的最常见方法。为每个部署规范创建一个 ReplicaSet。
- ReplicaSet - 创建一组稳定的 Pod。您几乎永远不会直接创建它。
- DaemonSet - DaemonSet 确保所有(或部分)节点运行 Pod 的副本。当节点添加到集群时,Pod 也会添加到其中。当节点从集群中删除时,这些 Pod 就会被垃圾收集。删除 DaemonSet 将清理它创建的 Pod。常见于系统进程,如 CNI、监控代理、代理等。
- StatefulSet - StatefulSet 是用于管理具有持久存储的有状态应用程序的工作负载 API 对象。Pod 名称是持久的,并在重新安排时保留(app-0、app-1)。与部署不同,Pod 有 DNS 名称。存储与替换 Pod 保持关联。删除 Pod 后卷会保留。Pod 是按顺序单独部署/更新的。
- HorizontalPodAutoscaler - HorizontalPodAutoscaler 根据标准指标(如 CPU 利用率)或自定义指标(如请求延迟)自动缩放复制控制器、部署、副本集或有状态集中的 Pod 数量。
- PodDisruptionBudget - 能够限制在升级和其他计划事件期间中断的 Pod 数量,从而实现更高的可用性,同时允许集群管理员管理集群节点。
- Job - 作业创建一个或多个 Pod 并期望它们成功终止。
- CronJob - 按计划创建作业。
Configuration
- ConfigMaps - 用于以键值对形式存储非机密数据的 API 对象。
- Secrets - 让您可以存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。
Networking
- Ingress - 一个 API 对象,用于管理对集群中服务的外部访问,通常是 HTTP。Ingress 可以提供负载平衡、SSL 终止和基于名称的虚拟托管。
- Service - 将一组 Pod 上运行的应用程序公开为网络服务的抽象方法。
- Network Policy - 有关如何允许 Pod 组相互通信以及如何与其他网络端点通信的规范。
Security-RBAC
- ServiceAccount - 为 Pod 中运行的进程提供身份。
- Role - 角色是特定命名空间内的一组权限;创建角色时,必须指定它所属的命名空间。
- ClusterRole - ClusterRole 与 Role 完全相同,只是它是非命名空间资源。资源具有不同的名称(Role 和 ClusterRole),因为 Kubernetes 对象始终必须具有命名空间或不具有命名空间;不可能两者兼而有之。
- RoleBinding - 将角色中定义的权限授予某些用户组或服务帐户。它包含主题列表(用户、组或服务帐户)以及对所授予角色的引用。RoleBinding 授予特定命名空间内的权限。
- ClusterRoleBinding - 授予集群范围内的访问权限。