通过零代码更改加速 Apache Spark

附录

您的 Accelerate Spark 3 LaunchPad 实例是使用 Kubernetes 和 NVIDIA 的 Cloud Native Core 部署的,Cloud Native Core 是一个用于在 NVIDIA GPU 上运行云原生工作负载的软件集合。如果您是 Kubernetes 新手,我们在本附录中提供了 Kubernetes 入门知识,供您进一步了解。

Kubernetes 是一个开源的容器编排平台,可以简化 DevOps 工程师的工作。应用程序可以作为逻辑单元部署在 Kubernetes 上,这些逻辑单元易于管理、升级和部署,并具有零停机时间(滚动升级)和使用复制实现的高可用性。NVIDIA AI Enterprise 应用程序以容器形式提供,可以云原生方式部署在 Kubernetes 上。在 Kubernetes 上部署 Triton Inference Server 也为企业中的 AI 带来了同样的优势。NVIDIA GPU Operator 用于轻松管理集群中的 GPU 资源。

什么是 GPU Operator?

GPU Operator 允许 Kubernetes 集群的管理员像管理集群中的 CPU 节点一样管理 GPU 节点。AI 从业人员无需关心 GPU Operator 的安装,它由维护集群的 DevOps 管理员完成。GPU Operator 已为本实验自动安装在您的集群上。

什么是 Kubernetes Pod?

由于 Kubernetes 不直接运行容器,它将一个或多个容器包装成一个更高级别的单元,称为 Pod。Kubernetes Pod 是一组或多个容器,它们共享存储和网络资源,并具有如何运行容器的规范。Pod 通常也由一个抽象层 Deployment 管理。使用 Deployment,您无需手动处理 Pod。它可以动态地创建和销毁 Pod。Kubernetes Deployment 将一组 pod 作为副本集进行管理。

相同 pod 的多个副本可用于提供高可用性。使用 Kubernetes 部署 Triton Inference Server 也为企业中的 AI 带来了同样的优势。由于 Deployment 具有复制功能,如果一个 Triton 推理服务器 pod 发生故障,部署的其他副本 pod 仍然可以为最终用户提供服务。滚动更新允许 Deployment 更新,例如升级应用程序,且不会造成停机。

什么是 Kubernetes Service?

每个 Pod 都会获得自己的 IP 地址。但是,在 Deployment 中,某个时刻运行的 Pod 集合可能与稍后运行该应用程序的 Pod 集合不同。由于 pod/容器会发生故障,Kubernetes 将使用不同的 IP 将它们启动。这就产生了一个问题:如果某些 Pod(称它们为“后端”)为集群内部的其他 Pod(称它们为“前端”)提供功能,前端如何找出并跟踪要连接的 IP 地址,以便前端可以使用工作负载的后端部分?

我们通过服务来解决这个问题。Kubernetes 集群内部的服务维护静态 IP,因此您可以始终指向它们,它们会将请求中继到 pod。

Kubernetes Service 类型

Kubernetes 服务有几种类型。它们的不同之处在于它们如何暴露服务。

  • ClusterIP: ClusterIP 服务在集群内部 IP 上暴露服务。因此,该服务只能从集群内部访问。

  • NodePort: NodePort 服务在每个节点的 IP 上的静态端口上暴露服务。可以从集群外部访问 NodePort 服务。

  • LoadBalancer: LoadBalancer 服务在集群外部暴露服务。

部署在 Kubernetes 上的应用程序可以有多种类型的 pod、服务和 deployment 对象(微服务)。例如,本实验有一个训练 Jupyter notebook pod、一个 Triton 推理服务器 pod 和一个客户端应用程序 pod。每个 pod 都有服务,Ingress 对象,NGC 密钥等。应用程序的所有这些单独部分都可以整齐地打包到 Helm chart 中,并作为一键安装部署在 Kubernetes 集群上。Helm chart 对于 Kubernetes 就像 apt 包对于 Ubuntu 一样。

© 版权所有 2022-2023,NVIDIA。 上次更新时间:2023 年 6 月 23 日。