跳到主要内容

VS Code客户端远程开发(DevPod)

DevPod远程开发

背景介绍

大模型时代,由于对GPU、内存等硬件资源的需求不断增加,相关应用在本地计算机上进行开发变得越来越困难。在本地编写代码,在远程服务器上编译、调试、运行的方式逐渐成为开发的主流模式,Devpod也因此受到越来越多的开发者的关注。

本文将介绍使用Devpod和VS Code做为开发工具,在弹性容器集群中进行远程开发的基本流程。

什么是DevPod?

DevPod是一个创建基于容器技术的开发环境的工具,通过配置devcontainer.json文件,开发者可以在本地、远程服务器和公有云等环境中创建出标准化的开发环境,满足不同开发者的需求。

DevPod的核心组件

devcontainer.json

开发者需要在自己的项目中创建.devcontainer/devcontainer.json文件来定义开发环境,下面介绍几个常用的参数

配置类型说明
imagestring开发环境的基础镜像
customizationsobject目前支持的开发工具和服务的配置项,完整清单请查看
portsAttributesobject设置需要转发宿主机的端口及其相关属性
postCreateCommandstring,array,object容器创建后执行的命令,一般用户安装依赖和进行项目的初始化操作
featuresobject需要安装的软件 完整清单请查看

示例:

{
"name": "Python 3",
"image": "registry.hd-01.alayanew.com:8443/public/mcr.microsoft.com/devcontainers/python:1-3.12"
// "features": {},
"customizations": {
// Configure properties specific to VS Code.
"vscode": {
"settings": {},
"extensions": [
"streetsidesoftware.code-spell-checker"
]
}
},
"portsAttributes": {
"9000": {
"label": "Hello Remote World",
"onAutoForward": "notify"
}
},
"postCreateCommand": "pip3 install -r requirements.txt"
}

Workspace

Worksapce是一个容器化的开发环境,包含项目源码和相关依赖项。

Providers

Providers是用于在不同的环境(Docker、Kubernetes、AWS、Azure等)上创建、管理和运行Workspace的CLI程序,使用provider.yaml文件定义相关配置。

使用DevPod和VS Code远程开发

DevPod支持命令行和客户端两种使用方式,本文档中使用命令行的方式进行操作。

在开始前,请参考官方文档安装DevPod。安装完成后,在命令行工具中执行devpod version命令检查是否安装成功。

准备工作

本文中向大家展示了如何为Workspace添加额外的逻辑卷、环境变量等内容,为此准备了一些配置文件,请点击这里下载。

配置文件列表:

文件名说明
provider.yaml用于创建kuberneetes Provider的配置文件
pod-manifest-tmpl.yaml用于定义Workspace的Pod模板
remote-container-env用于添加额外的环境变量

创建Provider

进入配置文件所在目录,执行以下命令创建Provider

devpod provider add  --name kubernetes ./provider.yaml

创建成功后,设置该Provider的参数


# 添加kubeconfig文件路径
devpod provider set-options -o KUBERNETES_CONFIG=$(pwd)/kubeconfig

# 设置storage class,用于保存Workspace中的项目源码等数据
devpod provider set-options -o STORAGE_CLASS=<STORAGE_CLASS_NAME>

# 设置namespace,Wrokspace将被创建在该namespace下
devpod provider set-options -o KUBERNETES_NAMESPACE=devpod

# 设置pod manifest模板文件路径
devpod provider set-options -o POD_MANIFEST_TEMPLATE=$(pwd)/pod-manifest-tmpl.yaml

# 设置额外的环境变量
devpod provider set-options -o ENV_FILE=$(pwd)/remote-container-env

# 设置资源限制
devpod provider set-options -o RESOURCES="limits.cpu=18,limits.memory=200G,limits.nvidia.com/gpu-h800=1,requests.cpu=18,requests.memory=200G,requests.nvidia.com/gpu-h800=1"

检查Provider的参数是否设置成功

 devpod provider options  kubernetes

启动Workspace

Provider创建完成后,执行以下命令启动Workspace

 devpod up --provider kubernetes  github.com/microsoft/vscode-remote-try-python  \
--workspace-env-file ./remote-container-env \
--devcontainer-image registry.hd-01.alayanew.com:8443/public/mcr.microsoft.com/devcontainers/python:1-3.12 \
--ide vscode \
--debug

参数说明:

  1. github.com/leoncamel/vscode-remote-try-python:要启动的项目地址
  2. --workspace-env-file:添加额外的环境变量文件
  3. --devcontainer-image:更改devcontainer.json中指定的镜像
  4. --ide:指定IDE,本文使用VS Code
  5. --debug:开启调试模式,输出更多日志信息

启动成功后,VS Code会自动打开,并连接到DevPod中运行的容器。如有需要外部访问的服务,请在VS Code的"PORTS"中添加端口。

提示

启动Workspace过程中,会涉及到拉取代码、下载安装DevPod agent等操作,请耐心等待。

打开Workspace

启动Workspace后,VS Code会自动打开,也可以通过下面的命令打开:

devpod up <WORKSPACE_NAME> --ide vscode