|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
Kubernetes 工作负载和 Pod
您可以使用两个基本构造在 Kubernetes 中构建任何复杂的容器化应用程序:Pods 和工作负载。一旦您构建了应用程序,您可以通过第三个构造:服务,将其暴露以供同一集群内或互联网上访问。
Pods
Pods 是一个或多个共享网络命名空间和存储卷的容器。大多数 Pods 只有一个容器。因此,当我们讨论 pods 时,这个术语通常与 containers 同义。您以与扩展容器相同的方式扩展 Pods--,通过拥有多个实现服务的相同 Pod 实例。通常,Pods 由工作负载进行扩展和管理。
工作负载
Workloads 是为 Pods 设置部署规则的对象。根据这些规则,Kubernetes 执行部署并使用应用程序的当前状态更新工作负载。 工作负载让您定义应用程序调度、扩展和升级的规则。
工作负载类型
Kubernetes 将工作负载分为不同类型。Kubernetes 支持的最流行类型是:
-
部署 最适合无状态应用程序(即,当您不需要维护工作负载的状态时)。由部署工作负载管理的 Pods 被视为独立且可丢弃的。如果一个 Pod 遇到中断,Kubernetes 会将其删除,然后重新创建它。一个示例应用程序可以是 Nginx 网络服务器。
-
有状态集 与部署相比,最适合在您的应用程序需要维护其身份并存储数据时使用。一个应用程序可以是 Zookeeper--,这是一个需要数据库进行存储的应用程序。
-
DaemonSets 确保集群中的每个节点都运行一个 Pod 的副本。对于收集日志或监控节点性能的用例,这种类似守护进程的工作负载效果最佳。
-
作业 启动一个或多个 Pods,并确保指定数量的 Pods 成功终止。作业最适合运行有限的任务以完成,而不是管理持续的期望应用程序状态。
-
定时作业 类似于作业。然而,定时作业按照 cron 调度计划运行直至完成。
服务
在许多用例中,工作负载必须是:
-
由集群中的其他工作负载访问。
-
暴露给外部世界。
您可以通过创建一个 服务 来实现这些目标。服务通过 选择器/标签方法 (查看代码示例) 映射到底层工作负载的 Pods。Rancher UI 通过自动创建服务和工作负载,简化了此映射过程,使用您选择的服务端口和类型。
服务类型
Rancher 中提供了几种类型的服务。以下描述来源于 Kubernetes 文档。
-
ClusterIP
在集群内部 IP 上暴露服务。选择此值使服务仅能从集群内部访问。这是默认
ServiceType。 -
NodePort
在每个节点的 IP 上以静态端口(
NodePort)暴露服务。一个ClusterIP服务将自动创建,NodePort服务将路由到该服务。您可以通过请求<NodeIP>:<NodePort>从集群外部联系NodePort服务。 -
负载均衡器
使用云提供商的负载均衡器在外部暴露服务。
NodePort和ClusterIP服务将自动创建,外部负载均衡器将路由到这些服务。