构建容器化 HPC 平台
日期: 2023-06-15

 

容器化 HPC 平台优势

 

HPC 高性能计算(High Performance Computing),是指利用大规模并行化的计算资源来解决大规模、高复杂度的计算问题。HPC 通常用于科学计算、工程计算、大数据分析、量化金融等领域,包括气象预报、地震模拟、基因组分析、人工智能等。传统的 HPC 系统复杂,需要专业人员进行维护和管理;缺乏灵活性,不易适应不同的应用场景;不利于快速迭代和开发,部署和更新成本较高。相比之下,容器化 HPC 具有更好的资源管理和调度、应用程序隔离和安全性、计算资源的灵活性和可伸缩性、应用程序部署和更新的简便和快速性、以及更加灵活和可配置的运行环境等优势。帮助用户更加高效地利用计算资源,提高计算效率和性能,从而推动科学计算和数据分析等领域的发展和应用。

 

 

 

 

架构图概览

 

 

 

 

部署步骤

 

Step 1 – Install Kubernetes Tools

    • Install awscli

 

 

 

    • Install eksctl

 

 

 

    • Install kubectl

 

 

 

    • Install Helm

 

 

 

    • ETC

 

 

 

    • Install Docker

 

 

 

安装完 Docker 后,退出当前登录的 Session,再重新登录。

 

 

 

 

Step 2 – Configure setting

 

修改 CLUSTER_NAME 为自己的集群名字,BUCKET_NAME 为被 pod 访问的 Bucket。

 

 

 

 

 

Step 3 – Create EKS Cluster with eksctl

 

  • 创建工作目录

 

 

 

  • 使用 CloudFormation 初始化 Karpenter 组件信息

 

 

 

  • 创建集群(1.25)配置文件(eks-cluster.yaml)

 

 

 

  • 部署 EKS 集群

 

 

集群完全部署大约需要 15 到 20 分钟。您可以在终端中查看集群部署的进度,也可以在 AWS CloudFormation 控制台中查看事件和资源的状态。

 

  • 查看 node 信息

 

 

 

 

 

Step 4 – Create Volcano

 

要求:Kubernetes 集群,集群版本不低于 V1.13,支持 CRD。

 

  • 安装程序

 

 

 

  • 验证 Volcano 组件的状态

 

 

 

  • 输出结果:

 

 

 

 

 

 

Step 5 – Create Karpenter

 

  • Install Karpenter

 

 

 

  • Create Provisioner

 

 

 

  • 创建 deployment 用于测试 Karpenter 的弹性伸缩,将 replicas 改为 5

 

 

 

  • Scale down deployment

 

 

 

  • 查看 Karpenter 的日志

 

 

 

 

 

Step 6 – Create AWS Load Balancer Controller

 

AWS Load Balancer Controller 是一个控制器,用于帮助管理 Kubernetes 集群的弹性负载均衡器。

 

  1. 它通过配置 Application Load Balancers 来满足 Kubernetes Ingress 资源的需求。
  2. 它通过配置 Network Load Balancers 来满足 Kubernetes Service 资源的需求。

 

  • Create an IAM policy

 

 

该步骤创建 AWS Load Balancer Controller 将使用的 IAM 策略。该 IAM 策略将关联到 Kubernetes Service Account,并允许 controller pods 在您的 AWS 账户中创建和管理 ELB 资源。

 

 

  • Create a IAM role and ServiceAccount for the Load Balancer controller

 

该步骤创建名为 aws-load-balancer-controller 的 Kubernetes Service Account。

 

 

上面的命令部署了一个 CloudFormation 模板,该模板创建了一个 IAM 角色并将 IAM 策略附加到它。IAM 角色与 Kubernetes Service Account 相关联。您可以使用以下命令查看已经创建的 Service Account 的详细信息。

 

 

 

  • Install the TargetGroupBinding CRDs

 

 

 

  • Deploy the Helm chart from the Amazon EKS charts repo

 

 

 

  • 可以通过以下的命令查看部署是否成功:

 

 

 

 

 

Step 7 – Create Notebook Image to ECR

 

该步骤创建的是一个示例 Notebook,可以根据自己的业务逻辑封装自己的 Notebook images。

 

  • Pull Notebooke

 

 

 

  • 创建 Repo

 

 

 

  • 获取创建 Repo 的地址

 

 

 

  • 登录 Repo

 

 

 

  • 修改 Notebook 镜像的 Tag

 

 

 

  • 推送镜像到 ECR

 

 

 

 

 

Step 8 – Test the Notebook

 

  • 部署测试程序

创建 Notebook 部署文件:

 

 

 

  • 部署 Notebook

以验证 AWS Load Balancer Controller 是否根据 Ingress 对象创建 Application Load Balancer。

 

 

 

  • 您可以检查部署是否完成:

 

 

 

  • 打印 Notebook 网页地址

 

 

ALB 设置需要一点时间,大概等待 3-5 分钟后,在浏览器中输入打印的 URL,网页正常显示。

 

 

 

 

以上是在线 Notebook 的简单示例,可以在 Notebook 的镜像里加入自己的业务逻辑或者与业务系统进行集成。

 

 

 

 

容器化 HPC 与 STOmics 云平台集成

 

在线任务场景

 

创建在线分析 Task

 

 

 

等待大概 1 分钟,就可以打开 Notebook 进行在线任务分析研究

 

 

 

查看 EKS 集群上对应的 Pod

 

 

 

 

 

离线任务场景

 

创建离线 Task

 

 

 

创建完后台自动运行该任务,在界面中可以查看任务的状态等相关信息

 

 

 

查看 EKS 集群上对应的 Pod

 

 

 

 

总结

 

本文介绍了如何使用 Amazon EKS 服务构建容器化 HPC 平台,用于 STOmics 的个性化分析工作场景。该方案中 Kubernetes 采用 1.25 的版本,基于该版本分别安装 Karpenter、Volcano、AWS Load Balancer Controller 等插件,最后通过创建一个 Notebook 的示例来验证部署结果。文章详细介绍了每个步骤需要执行的命令和操作,并提供了相应的命令行代码示例,适合有一定 AWS 和 Kubernetes 经验的读者阅读。借助容器化的 HPC 平台方案,科学家可以在 STOmics 研究上进行快速创新和试错,同时借助云上大规模的计算能力,解决了当前时空组学大数据面临的算力紧缺问题,并且显著的降低了成本,实现了更好的时效性,这将大大提高生命科学领域的多组学数据分析效率,加速科研进程,助力科研转化。后续我们也会深入的研究存储在容器化 HPC 平台方面的最佳实践以及 STOmics 标准分析、高级分析方面的优化工作。