本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

Kubernetes 工作负载和 Pod

您可以使用两个基本构造在 Kubernetes 中构建任何复杂的容器化应用程序:Pods 和工作负载。一旦您构建了应用程序,您可以通过第三个构造:服务,将其暴露以供同一集群内或互联网上访问。

Pods

Pods 是一个或多个共享网络命名空间和存储卷的容器。大多数 Pods 只有一个容器。因此,当我们讨论 pods 时,这个术语通常与 containers 同义。您以与扩展容器相同的方式扩展 Pods--,通过拥有多个实现服务的相同 Pod 实例。通常,Pods 由工作负载进行扩展和管理。

工作负载

Workloads 是为 Pods 设置部署规则的对象。根据这些规则,Kubernetes 执行部署并使用应用程序的当前状态更新工作负载。 工作负载让您定义应用程序调度、扩展和升级的规则。

工作负载类型

Kubernetes 将工作负载分为不同类型。Kubernetes 支持的最流行类型是:

  • 部署

    部署 最适合无状态应用程序(即,当您不需要维护工作负载的状态时)。由部署工作负载管理的 Pods 被视为独立且可丢弃的。如果一个 Pod 遇到中断,Kubernetes 会将其删除,然后重新创建它。一个示例应用程序可以是 Nginx 网络服务器。

  • StatefulSets

    有状态集 与部署相比,最适合在您的应用程序需要维护其身份并存储数据时使用。一个应用程序可以是 Zookeeper--,这是一个需要数据库进行存储的应用程序。

  • DaemonSets

    DaemonSets 确保集群中的每个节点都运行一个 Pod 的副本。对于收集日志或监控节点性能的用例,这种类似守护进程的工作负载效果最佳。

  • 作业

    作业 启动一个或多个 Pods,并确保指定数量的 Pods 成功终止。作业最适合运行有限的任务以完成,而不是管理持续的期望应用程序状态。

  • CronJobs

    定时作业 类似于作业。然而,定时作业按照 cron 调度计划运行直至完成。

服务

在许多用例中,工作负载必须是:

  • 由集群中的其他工作负载访问。

  • 暴露给外部世界。

您可以通过创建一个 服务 来实现这些目标。服务通过 选择器/标签方法 (查看代码示例) 映射到底层工作负载的 Pods。Rancher UI 通过自动创建服务和工作负载,简化了此映射过程,使用您选择的服务端口和类型。

服务类型

Rancher 中提供了几种类型的服务。以下描述来源于 Kubernetes 文档

  • ClusterIP

    在集群内部 IP 上暴露服务。选择此值使服务仅能从集群内部访问。这是默认 ServiceType

  • NodePort

    在每个节点的 IP 上以静态端口(NodePort)暴露服务。一个 ClusterIP 服务将自动创建,NodePort 服务将路由到该服务。您可以通过请求 <NodeIP>:<NodePort> 从集群外部联系 NodePort 服务。

  • 负载均衡器

    使用云提供商的负载均衡器在外部暴露服务。NodePortClusterIP 服务将自动创建,外部负载均衡器将路由到这些服务。

工作负载选项

文档的这一部分包含有关部署工作负载和使用工作负载选项的说明。