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,从而保证了数据的完整性和一致性
待优化问题
- 容器日志收集
- 配置文件不能在阿里控制台修改