阿里云-GPU/ASK/ACK/NAS/Docker

ASK

文档路径:https://help.aliyun.com/document_detail/186945.html

流程

  • 安装docker
  • Dockerfile 镜像制作
  • 创建ASK集群
  • 使用镜像创建POD(负载)
  • 创建NAS盘
  • 查看容器

安装Dokcer

Ubuntu

创建目录

mkdir -p /etc/apt/keyrings

添加gpg源

#阿里镜像源
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 官方源
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sources.list 中添加 Docker 软件源

$ echo \
  "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

** #官方源
$ echo \
"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装docker

apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

安装nvidia-container-toolkit

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt-get update && apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

镜像创建

docker build -t registry.cn-hangzhou.aliyuncs.com/cyc_mirror/compile-gpu-jar . -f /data/Dockerfile

运行docker

docker run -itd -v /data/opt/compile:/opt/compile --restart=always [imageId]

进入到docker环境中

docker exec -itd registry.cn-hangzhou.aliyuncs.com/cyc_mirror/ms_compiler /bin/bash

Windows 10

对于Windows 10以下的用户,推荐使用Docker Toolbox

Windows安装文件:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/

对于Windows 10以上的用户 推荐使用Docker for Windows

Windows安装文件:http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/

官方下载地址:https://www.docker.com/products/docker-desktop/

参考文章:

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

http://t.csdn.cn/dQK5C

ACR 镜像库

镜像制作

美摄Dokcer部署文档:https://www.yuque.com/books/share/51ab37d2-f266-4105-af69-78ad5aef773a/gnplsy

ECI Pod默认每次启动后使用内部的containerd从远端拉取容器镜像。如果镜像为公共镜像,则需要开通VPC的NAT网关,或者给ECI Pod挂载EIP。建议您将容器镜像存储在阿里云镜像仓库(ACR),通过VPC网络减小镜像拉取时间。另外对于ACR上的私有镜像,实现了免密拉取功能方便您使用。

同时支持了镜像快照功能。通过把容器镜像缓存到快照中,然后通过快照快速启动容器,避免再次从远端拉取镜像,适合大镜像的场景。

#导入本地镜像文件
docker load < E:\Download\temp\bsedit-compiler-gpu-no-x11-cuda.image 
docker login --username=xpccyc registry.cn-hangzhou.aliyuncs.com
docker tag compiler registry.cn-hangzhou.aliyuncs.com/cyc_mirror/compile-gpu-jar:latest
docker push registry.cn-hangzhou.aliyuncs.com/cyc_mirror/compile-gpu-jar:latest
docker pull registry.cn-hangzhou.aliyuncs.com/cyc_mirror/ms_compiler:latest

镜像创建
docker build -t [imageName] . -f /data/Dockerfile
docker push registry.cn-hangzhou.aliyuncs.com/cyc_mirror/compile-gpu-jar:latest
运行docker
docker run -itd -v /data/opt/compile:/opt/compile --restart=always [imageId]
进入到docker环境中
docker exec -itd registry.cn-hangzhou.aliyuncs.com/cyc_mirror/ms_compiler /bin/bash

创建ASK集群

使用GPU实例

ECI GPU实例内置了显卡设备驱动及CUDA驱动,因此运行ECI GPU实例只需使用内置了CUDA Toolkit等软件的基础镜像即可,无需关心驱动安装。

在Pod定义中增加annotations: k8s.aliyun.com/eci-use-specs,具体示例如下。

  • 在Pod的metadata中添加指定规格的annotations
  • 在Container的resources中声明GPU资源。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-gpu-demo
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
      annotations:
        k8s.aliyun.com/eci-use-specs: ecs.gn6i-c4g1.xlarge
    spec:
      containers:
      - name: nginx
        image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.15.10
        resources:
            limits:
              nvidia.com/gpu: '1'
        ports:
        - containerPort: 80

如何挂载NAS盘

参考视频:https://www.bilibili.com/video/BV1BB4y1v7jc?share_source=copy_web&vd_source=9610c7bb99045af7de23a7f86de4f07b

  • 添加云盘

  • 添加存储卷

  • 存储——增加存储声明

  • 工作负载——增加存储声明

  • 问题解决df: cannot read table of mounted file systems 当出现以上错误时,只要运行一下以上命令即可。

    grep -v rootfs /proc/mounts > /etc/mtab
    

配置文件如何设置

PV和PVC解决了pod间共享目录的挂载,有时候,我们只期望挂载pod内部的配置文件,以便于在pod外部对pod的配置进行修改,PV和PVC就搞不定了,新的机制来满足上述需求,这就是ConfigMap。

为了让Docker镜像和Docker镜像运行时的配置文件解耦,以便实现镜像的可移植性和可复用性,进入了ConfigMap。

启动参数

环境配置 默认测试环境

["--spring.active=dev"]

问题

POD报错:BACK-OFF RESTARTING FAILED CONTAINER 的解决办法

要使Pod持续运行,就必须指定一个永远不会完成的任务。

因此在yaml文件中指定一个启动命令,内容如下:command: [“/bin/bash”, “-ce”, “tail -f /dev/null”]

pod 资源清单

pod是一个逻辑抽象概念,他是kuberneter创建的最小单元,一个pod可以由一个或者多个容器组成

k8s有状态与无状态的区别

Deployment管理无状态服务的pod,每个pod完全一致

无状态服务内的多个Pod创建的顺序是没有顺序的.
无状态服务内的多个Pod的名称是随机的.pod被重新启动调度后,它的名称与IP都会发生变化.
无状态服务内的多个Pod背后是共享存储的.

Stateful管理有状态的应用,它的Pod有如下特征

唯一性: 每个Pod会被分配一个唯一序号.
顺序性: Pod启动,更新,销毁是按顺序进行.
稳定的网络标识: Pod主机名,DNS地址不会随着Pod被重新调度而发生变化.
稳定的持久化存储: Pod被重新调度后,仍然能挂载原有的PV,从而保证了数据的完整性和一致性

待优化问题

  • 容器日志收集
  • 配置文件不能在阿里控制台修改
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好奇新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值