创建开发机
本文为您详细介绍通过控制台和命令行创建开发机的步骤和参数配置。
前提条件
通过控制台创建
💡 注意
旧版开发机目前无法开启docker功能,如需使用,请停止并删除旧版开发机,创建新的开发机使用。
旧版开发机目前无法开启docker功能,如需使用,请停止并删除旧版开发机,创建新的开发机使用。
- 登录英博云控制台。
- 在页面左侧导航栏,选择 开发机,进入开发机列表页面。
- 在开发机列表页面,单击左上角 创建开发机,配置创建开发机所需的参数。
开发机配置
参数
说明
支持通过PVC挂载多块共享存储卷,按容量计费,支持SSD和HDD两种存储类型
支持通过PVC挂载多块块存储卷,按容量计费
💡 注意
平台支持自主搭建Docker Registry用来存储和分发容器镜像,详情请参考镜像仓库。
平台支持自主搭建Docker Registry用来存储和分发容器镜像,详情请参考镜像仓库。


通过kubectl命令行创建
前提:
- 已安装kubectl工具到本地。详情请参考:安装和设置 kubectl。
- 已通过 kubectl 连接目标集群。具体操作详情请参考:连接集群
开发机GPU、CPU类型标签:
型号
GPU标签
GPU显存
资源申请/限制
创建开发机的YAML文件,此示例中创建的单卡H800实例、启动docker容器,未启用公网IP,并挂载名为t256g的共享存储卷,示例文件 gpu-example.yaml代码如下:
########################################################
apiVersion: apps.ebcloud.com/v1alpha1
kind: ContainerServer
metadata:
name: demo3
namespace: default
spec:
command:
- sh
- -c
- |-
if [ -z "${EBCS_SYS_INITIALIZED}" ] || [ "$(echo "${EBCS_SYS_INITIALIZED}" | tr '[:upper:]' '[:lower:]')" = "false" ]; then
## Init-Install命令,安装必要工具包
## 启用密码身份验证,允许用户通过密码登录
mkdir -p /etc/ssh
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
## 允许root登录
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
## 为scp文件启用sftp访问
grep -q "^Subsystem sftp" /etc/ssh/sshd_config && sed -i 's|^Subsystem sftp.*|Subsystem sftp /usr/lib/openssh/sftp-server|' /etc/ssh/sshd_config || echo "Subsystem sftp /usr/lib/openssh/sftp-server" >> /etc/ssh/sshd_config
## 安装sshd及相关服务
dpkg -i /public/shared-resources/openssh-server/ubuntu_22.04_amd64/*.deb
## 安装docker客户端
cp /public/shared-resources/docker-build/docker /usr/bin/docker
## Init-Config命令,设置密码,配置相关环境
## init root password
echo "root:$EBCS_SYS_ROOT_PASSWORD" | chpasswd
echo 'Root password initialization complete.'
## init k8s环境变量
if [ -f /proc/1/environ ]; then
echo 'while IFS= read -r line; do export "$line"; done < <(tr "\\0" "\\n" < /proc/1/environ)' | tee -a /etc/profile
echo "K8s env >> /etc/profile DONE"
fi
## init docker配置文件
if [ -n "$DOCKER_CONFJSON" ]; then
mkdir -p ~/.docker
echo "$DOCKER_CONFJSON" > ~/.docker/config.json
chmod 600 ~/.docker/config.json
echo 'Docker config initialization complete.'
fi
fi
## Launch命令,后台启动jupyter-lab,前台启动sshd作为container server的主进程
## 启动jupyterlab
if command -v jupyter-lab >/dev/null 2>&1 && [ -n "$EBCS_JUPYTER_PORT" ] && [ -n "$EBCS_JUPYTER_TOKEN" ]; then
cd /root && jupyter-lab --allow-root --ip=0.0.0.0 --port=$EBCS_JUPYTER_PORT --NotebookApp.token=$EBCS_JUPYTER_TOKEN --no-browser --NotebookApp.allow_origin='*' --NotebookApp.allow_remote_access=True > /tmp/jupyter.log 2>&1 &
fi
if service ssh start -D; then
echo "SSHD exited."
else
/usr/sbin/sshd -D
echo "SSHD failed to start."
fi
enableDocker: true
image: registry-cn-huabei1-internal.ebcloud.com/ebsys/pytorch:2.5.1-cuda12.2-python3.10-ubuntu22.04-v04
initRootPassword: '*"92Z54sS3$yvA0R'
network:
public: false
tcp:
ports:
- 22
- 80
- 443
power: "ON"
resources:
cpu:
count: "20"
gpu:
count: "1"
type: H800_NVLINK_80GB
memory:
count: 200Gi
sshAccess:
enable: true
targetPort: 22
volumeMounts:
- mountPath: /data
name: t256g
persistentVolumeClaim:
claimName: t256g
# 执行以下命令,创建开发机。
kubectl apply -f gpu-example.yaml
# 执行以下命令,查看弹性容器实例是否创建成功。
kubectl get pod -n default
# 若需要删除开发机,执行以下命令。
kubectl delete -f gpu-example.yaml
配置示例一
- 创建 1核2Gi CPU开发机启动docker容器、未启用公网IP、并挂载名为t256g的共享存储卷。
apiVersion: apps.ebcloud.com/v1alpha1
kind: ContainerServer
metadata:
name: democpu
namespace: default
spec:
command:
- sh
- -c
- |-
if [ -z "${EBCS_SYS_INITIALIZED}" ] || [ "$(echo "${EBCS_SYS_INITIALIZED}" | tr '[:upper:]' '[:lower:]')" = "false" ]; then
## Init-Install命令,安装必要工具包
## 启用密码身份验证,允许用户通过密码登录
mkdir -p /etc/ssh
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
## 允许root登录
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
## 为scp文件启用sftp访问
grep -q "^Subsystem sftp" /etc/ssh/sshd_config && sed -i 's|^Subsystem sftp.*|Subsystem sftp /usr/lib/openssh/sftp-server|' /etc/ssh/sshd_config || echo "Subsystem sftp /usr/lib/openssh/sftp-server" >> /etc/ssh/sshd_config
## 安装sshd及相关服务
dpkg -i /public/shared-resources/openssh-server/ubuntu_22.04_amd64/*.deb
## 安装docker客户端
cp /public/shared-resources/docker-build/docker /usr/bin/docker
## Init-Config命令,设置密码,配置相关环境
## init root password
echo "root:$EBCS_SYS_ROOT_PASSWORD" | chpasswd
echo 'Root password initialization complete.'
## init k8s环境变量
if [ -f /proc/1/environ ]; then
echo 'while IFS= read -r line; do export "$line"; done < <(tr "\\0" "\\n" < /proc/1/environ)' | tee -a /etc/profile
echo "K8s env >> /etc/profile DONE"
fi
## init docker配置文件
if [ -n "$DOCKER_CONFJSON" ]; then
mkdir -p ~/.docker
echo "$DOCKER_CONFJSON" > ~/.docker/config.json
chmod 600 ~/.docker/config.json
echo 'Docker config initialization complete.'
fi
fi
## Launch命令,后台启动jupyter-lab,前台启动sshd作为container server的主进程
## 启动jupyterlab
if command -v jupyter-lab >/dev/null 2>&1 && [ -n "$EBCS_JUPYTER_PORT" ] && [ -n "$EBCS_JUPYTER_TOKEN" ]; then
cd /root && jupyter-lab --allow-root --ip=0.0.0.0 --port=$EBCS_JUPYTER_PORT --NotebookApp.token=$EBCS_JUPYTER_TOKEN --no-browser --NotebookApp.allow_origin='*' --NotebookApp.allow_remote_access=True > /tmp/jupyter.log 2>&1 &
fi
if service ssh start -D; then
echo "SSHD exited."
else
/usr/sbin/sshd -D
echo "SSHD failed to start."
fi
enableDocker: true
image: registry.cn-hangzhou.aliyuncs.com/tangshibo/docker-io-ubuntu:22.04
initRootPassword: '*"92Z54sS3$yvA0R'
network:
public: false
tcp:
ports:
- 22
- 80
- 443
power: "ON"
resources:
cpu:
count: "1"
memory:
count: 2Gi
sshAccess:
enable: true
targetPort: 22
volumeMounts:
- mountPath: /data
name: t256g
persistentVolumeClaim:
claimName: t256g