作业管理

作业列表

平台左侧导航栏中点击 我的作业,进入作业管理界面。

运行中作业

作业管理界面上方有 运行作业历史作业 两个标签,点击 运行作业 标签,进入运行中作业列表,如下图:

../../_images/job_running.png

列表中显示了当前账号正在运行的作业,显示的作业信息包括作业名称、作业 id、作业分区、应用名称、作业机时(核时)、作业状态、所在节点。

作业状态包括:

  • 排队中:等待调度的作业

  • 挂起:暂停运行资源未释放的作业

  • 运行中:正在运行中的作业

  • 已结束:成功结束的作业

  • 已结束(失败):失败退出的作业

  • 创建失败:创建失败的作业

  • 已取消:用户或管理员取消的作业

  • 创建中:已分配资源,在进行运行环境的初始化

  • 退出码异常:作业非正常退出,请确认后主动关闭

  • 未知:未知的作业状态

  • 故障:运行中但不可用

在界面上方可以根据作业 所在集群作业名称作业id作业分区 以及 作业状态 对作业进行筛选。

在列表的 操作 列中:

  • 点击 “查看” 按钮,可以进入该行对应作业的详情页面,详情参考 作业详情

  • 点击 “关闭” 按钮,可以结束作业。

备注

当且仅当作业状态为 运行中排队中 才可在 “运行中作业列表” 关闭;否则需要点击 “查看” 按钮进入 作业详情 界面进行关闭动作(此时可以通过作业详情中的 “查看日志” 和 “状态说明” 检查作业状态不正常的原因)。

历史作业

点击用户作业管理界面 历史作业 标签,进入历史作业列表,如下图:

../../_images/job_history.png

列表中以 “集群” 为单元对用户的历史作业进行展示,显示的作业信息包括作业名称、作业 id、作业分区、作业机时(核时)、作业状态、提交时间、开始时间、结束时间、所在节点。

可以根据 作业名称作业id作业分区作业状态提交时间 对作业进行筛选。

点击 操作 列中的 “查看” 按钮,可以进入该行对应作业的详情页面,详情参考 作业详情

作业详情

点击 运行作业 列表或 历史作业 列表中的作业项的 “查看” 按钮,进入作业详情界面,如下图是一个 容器应用 类作业的 “作业详情” 界面:

../../_images/job_detail.png

作业详情界面包括作业 基本信息文件信息访问入口 三部分。

基本信息

../../_images/job_detail_1.png

基本信息 除展示作业的基本信息(如作业所在的 集群分区 信息, 状态说明 等 )外,还有 “关闭作业” 、“查看日志”(仅限容器类应用的作业)、 “构建镜像”(仅限容器类应用的作业)等功能。

  • 关闭作业

    点击 “关闭作业” 按钮,弹出确定关闭作业窗口,点击 “确定” 按钮,关闭作业。

  • 查看日志

    点击 “查看日志” 按钮,弹出作业运行日志窗口,显示容器的运行日志,即容器内 1 号进程的输出,如下图:

    ../../_images/job_running_log.png
  • 构建镜像

    将容器类作业所在虚拟容器运行环境的当前状态固化为一个新的容器镜像,对应 docker commit 功能。

    构建成功的容器镜像会保存到 镜像仓库 中,可以在 镜像管理 查看,并支持新作业以此镜像为基础创建虚拟运行环境,详见 容器应用 镜像选择。

    点击 “构建镜像” 按钮,弹出 构建镜像 窗口,如下图:

    ../../_images/job_detail_build_image.png

    构建镜像 窗口中,填写 镜像名称描述信息,并设置构建的镜像为 私有公开,点击 “确定” 按钮,则可跳转至 镜像管理 界面,并开始构建镜像。

  • 状态说明

    对于容器类作业, 状态说明 包含三部分:

    • Status: 容器当前的状态

    • Conditions: 容器运行需要的各项状态条件,会按状态条件逐条进行说明

    • Events: 与这个作业相关的事件信息

    用于记录该作业关闭前的系统信息,说明作业处于某种状态的原因。

    对于已经结束的作业,此处没有内容,或显示的内容为作业运行时 状态说明 最后时刻的内容, 历史状态信息可能会被覆盖。

    备注

    用户可以根据 状态说明 信息来分析当前作业状态是否正常。

    • 示例 1

      Status:
        Running
      Conditions:
        Initialized
        Ready
        ContainersReady
        PodScheduled
      
      Events:
      2021-06-04 14:20:19 +0800 CST    Normal    Scheduled    Successfully assigned 1870/bashkuber2-414207-qvskb to cpn255
      2021-06-04 14:20:20 +0800 CST    Normal    Pulling    Pulling image "hub.starlight.nscc-gz.cn/nscc_public/deeplearning-1574907288:centos"
      2021-06-04 14:20:20 +0800 CST    Normal    Pulled    Successfully pulled image "hub.starlight.nscc-gz.cn/nscc_public/deeplearning-1574907288:centos"
      2021-06-04 14:20:20 +0800 CST    Normal    Created    Created container bashkuber2-414207
      2021-06-04 14:20:20 +0800 CST    Normal    Started    Started container bashkuber2-414207
      

      这是一个正常运行中的作业 状态说明

      • Status 为 “运行中” ( Running ),有些状态会在后面附加进一步的说明信息

      • Conditions

        • Initialized 为 “初始化完成”

        • PodScheduled 为 “资源调度完成”

        • Ready 为 “全部就绪”

        • ContainersReady 为 “容器就绪”

      • Events 中可以看到成功完成了资源分配、镜像拉取、容器创建、容器启动等过程

      在完成资源调度后( PodScheduled ),后台会对资源的使用开始计费,在资源释放后则停止计费。

    • 示例 2

      Status:
        Failed
      Conditions:
        Initialized
        Ready    ContainersNotReady    containers with unready status: [bashkuber2-4145313]
        ContainersReady    ContainersNotReady    containers with unready status: [bashkuber2-4145313]
            Container bashkuber2-4145313 Error
        PodScheduled
      
      Events:
      2021-06-04 14:53:32 +0800 CST    Normal    Scheduled    Successfully assigned 1870/bashkuber2-4145313-rc448 to cpn224
      2021-06-04 14:53:34 +0800 CST    Normal    Pulling    Pulling image "hub.starlight.nscc-gz.cn/nsccgz_xxxx_public/deeplearning-1574907288:centos"
      2021-06-04 14:53:34 +0800 CST    Normal    Pulled    Successfully pulled image "hub.starlight.nscc-gz.cn/nsccgz_xxxx_public/deeplearning-1574907288:centos"
      2021-06-04 14:53:34 +0800 CST    Normal    Created    Created container bashkuber2-4145313
      2021-06-04 14:53:34 +0800 CST    Normal    Started    Started container bashkuber2-4145313
      

      这是一个运行一段时间后出错退出的作业 状态说明

      • Status 为失败( Failed

      • Conditions

        • Initialized “初始化完成”

        • Ready 条件未达成,因此后面会有未达成的原因 ContainersNotReady,即 “容器未就绪”,再后面是对应的消息 containers with unready status: [bashkuber2-4145313]

        • ContainersReady 条件未达成,将逐一显示容器的状态(同一资源请求可以包含多个容器创建),即示例中的 Container bashkuber2-4145313 Error

    • 示例 3

      Status:
        Pending
      Conditions:
        Initialized
        Ready    ContainersNotReady    containers with unready status: [elasticsea-41506]
        ContainersReady    ContainersNotReady    containers with unready status: [elasticsea-41506]
            Container elasticsea-41506 ContainerCreating
        PodScheduled
      
      Events:
      2021-06-04 15:00:17 +0800 CST    Normal    Scheduled    Successfully assigned 1870/elasticsea-41506-585f76994c-6gzth to cpn31
      2021-06-04 15:00:20 +0800 CST    Normal    Pulling    Pulling image "hub.starlight.nscc-gz.cn/nsccgz_xxxx_public/elasticsearch-1579573612:7.5.1"
      

      这是一个处于拉取镜像状态的作业示例 状态说明

      • Status 为创建中( Pending ),因为尚有未就绪的条件

      • Conditions

        • ContainersReady 条件未达成, 从 Container elasticsea-41506 ContainerCreating 信息可以看出,未达成的原因是尚还处于容器创建的过程中,结合 Events 信息看,目前尚在进行镜像拉取

      如果镜像较大,计算结点第一次拉取镜像时可能会较为耗时,用户在使用自定义镜像时需合理控制镜像大小。

文件信息

../../_images/job_detail_2.png

用户提交作业后,平台会新建一个文件夹作为作业的工作目录。进入作业详情界面后, 文件信息 部分将显示作业工作目录下的文件,如上图中作业的工作目录为 “/GLOBALFS/xxxxxxxxxxxxx/.bihu/deeplearni-99403”。

若所运行应用的执行逻辑没有进行切换工作目录动作,则作业运行产生的文件默认保存在该目录下,用户可以在此处管理作业运行产生的文件(若有进行切换工作目录动作,则作业运行产生的文件需要用户自己维护)。

访问入口

../../_images/job_detail_1.png

容器云应用所预留的交互操作入口,供用户连入观察作业运行过程中的资源使用情况。

访问入口设置

作业详情访问入口 区域,点击 “访问入口配置” 按钮,弹出访问入口设置界面,如下图:

../../_images/job_change_access_portal.png
添加访问入口

点击 “添加” 按钮,弹出添加访问入口界面,如下图:

../../_images/add_endpoints.png

各项信息说明如下:

  • 名称

    自定义的访问入口名称,用于区分不同的访问入口,不可与已有访问入口名称重复。

  • 协议

    代理入口使用的协议,可选 http、https、ssh 和 tcp。

    备注

    每个协议会有默认的固定端口,如 http 代理入口的默认端口为 8888 ,当代理入口成功启用时,用户便可通过 http://xxxxxx.proxy.nscc-gz.cn:8888 进行访问。

    若不希望使用默认端口,则可勾选 “使用非固定端口”,由系统从 32768 ~ 65535 之间随机选择一个作为外部访问端口。

  • 自定义域名

    该项仅在选择 https 协议时出现,使用已注册备案过的域名,直接通过该域名访问代理入口。

  • 证书文件

    该项仅在选择 https 协议且设置有自定有域名时出现,用于上传 https 证书文件。

  • 密钥文件

    该项仅在选择 https 协议且设置有自定有域名时出现,用于上传 https 密钥文件。

  • 验证级别

    生成的代理链接的验证级别,可选的级别有:私有登陆用户不验证。各级别说明如下:

    • 私有

      该级别的访问入口只有作业运行者本人可以使用,但可以通过共享码的方式共享给其他人。

      通过共享码共享访问入口

      访问入口 区域,对于成功启用的访问入口,点击 “通过共享码共享此链接” 按钮,即可输入共享码并共享该访问入口,如下图:

      ../../_images/endpoints_share.png

      点击 “复制共享码” 按钮,将共享码分享给需要的星光用户,对方登录星光平台后便可在浏览器中通过共享码访问分享的资源,如下图:

      ../../_images/endpoints_share_code.png

      点击 “取消共享” 按钮,取消共享,则其他用户不能再访问。

    • 登陆用户

      该级别的访问入口所有已登录的星光用户都可以访问

    • 不验证

      该级别的访问入口不需要验证,任何人都可以访问。

  • 目的端口

    需要访问的容器内部服务所监听的端口,不可与已有访问入口的目的端口重复。

完成相关信息填写后点击 “确定” 即可创建新的访问入口。

删除访问入口

修改访问入口 窗口点击欲删除的访问入口项的 “移除” 按钮,再点击 “确认” 即可删除相关访问入口。

访问入口使用

网页终端

若具备名为 ttydwebsshweb-terminal 等的访问入口,则可以直接通过浏览器以终端的方式连接到作业运行的容器里。如下图:

../../_images/webterminal_0.jpg

点击 web-terminal 访问入口,会弹出一个作业容器内的网页终端界面,如下图:

../../_images/webterminal_1.jpg
ssh 连接

若容器作业内启动了 ssh 服务,并正确建立了相应的 ssh 协议的访问入口,则可通过 ssh 工具登录作业。

备注

若需在容器作业内启动 ssh 服务及建立访问入口,请参考 容器访问工具 章节。

ssh 直接连接

如下图,在 访问入口 中,可以看到作业有端口号为 8022 的 ssh 访问入口:

../../_images/webterminal_0.jpg

可以使用 ssh 命令 ssh 用户名@主机名 -p 端口 直接连接。

备注

用户名 为星光用户名,可见 “作业详情” \(\rightarrow\) “基本信息” 中的 用户 项:

../../_images/job_username.png

连接需要输入的 password 为用户登录星光所用的密码。

ssh 直接连接示例如下图:

../../_images/ssh_1.jpg
ssh 密钥配置

为避免每次都需要重新输入密码,您可以使用密钥来登录。由于星光容器作业能在不同的集群中提交作业,您可能没有在这些集群都配置 SSH 密钥,需要您自行检查:

在当前作业的终端中,您应该检查是否存在 ~/.ssh 文件夹以及文件夹中是否存在 authorized_keys 文件。如果不存在以上文件及文件夹,您需要进行密钥的配置。

使用 HPC 环境密钥

该方法复制并使用您 HPC 环境的密钥来登录。

  1. 确定在 HPC 环境中家目录路径

    回到星光首页,在首页的 “可用集群” 处找到绿色的按钮,这是 HPC 集群的网页终端入口。

    ../../_images/HPCWebSSHEntry.png

    点击该按钮,在打开的网页终端中输入 pwd,输出的目录就是 HPC 家目录

    ../../_images/HPCWebSSHHome.png
  2. 确定容器环境家目录路径

    连接容器进入终端中,使用 echo $HOME 命令获取 容器家目录

    ../../_images/ContainerHomeDir.png
  3. 复制 .ssh 文件夹

    进入星光的 存储管理 页中拷贝 ssh 配置。

    将存储路径切换为 HPC 家目录,点击显示隐藏文件的按钮,找到 .ssh 文件夹,右键选择复制,然后切换路径到 容器家目录,右键点击粘贴。

    ../../_images/CopyDotSSH.png
  4. 下载并设置密钥访问权限

    复制完成后,进入 .ssh 文件夹,可以看到如下文件:

    ../../_images/ssh_key.png

    下载 id_rsa 密钥,作为您访问当前集群的容器的登陆密钥使用。

    下载的密钥文件的权限可能过于开放,会被本地的 SSH 客户端或其他远程连接软件拒绝,此时需要修改其权限。

    • Linux 和 MacOS 下执行命令:

      chmod 600 <密钥文件>
      
    • Windows 下操作:

      • 右击密钥文件,选择 “属性”

      • 在 “属性” 页面的 “安全” 选项卡中,选择 “高级”

        ../../_images/ssh_key_1.png
      • 在 “高级” 窗口中,先启用 “禁用继承”,然后使用 “添加” 按钮为您自己添加一个权限

        ../../_images/ssh_key_2.png
      • 在弹出的窗口中,使用 “选择主体”,填写您自己的用户名,点击 “检查名称” 保证输入正确,然后点击确定

        ../../_images/ssh_key_3.png
      • 然后保证权限项仅勾选了 “读取” 项,点击 “确定” 来应用权限。

        ../../_images/ssh_key_4.png
  5. 使用密钥访问容器

    ssh 直接连接 的命令后通过 -i 选项即可指定密钥并进行连接:

    ssh 用户名@主机名 -p 端口 -i 密钥
    
配置独立的密钥

也可以选择为该容器(所在集群)配置独立的密钥。

  1. 生成密钥

    在容器的终端内,输入下列命令:

    ssh-keygen -t rsa
    # 或者使用更新的 ed25519 算法,此时密钥文件为 id_ed25519 和 id_ed25519.pub
    # ssh-keygen -t ed25519
    

    回车后根据提示进行交互配置。通常不需要更改任何配置,只需要按回车键使用默认选项。执行完成后, ~/.ssh 文件夹会被自动创建,其中包括了新生成的密钥对 id_rsaid_rsa.pub

  2. 添加公钥至授权列表

    在密钥对生成完成后,我们需要授权这个密钥对。执行下列命令:

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
  3. 下载并设置密钥访问权限

    具体操作请见 此处

  4. 使用密钥访问容器

    具体操作请见 此处

vscode

vscode 使用前所需准备工作

在使用 vscode 进行 ssh 连接前,请确保本地 vscode 软件为 最新版本,并检查本地是否配置有网络代理,若有请关闭,避免影响连接。

若在完成上述准备工作后,仍无法成功通过 vscode 与容器作业建立远程连接,则需要为容器配置网络代理以保证容器内互联网的可访问性:

vscode 与容器作业建立远程连接时,会在容器中先进行初始化。而初始化过程以及后续的扩展下载等操作都需要联网,因此需要将集群上网代理配置进 ~/.bashrc 文件中, vscode 会使用该代理联网。

通过 ssh 直接连接 进入容器作业,在 ~/.bashrc 文件中 加载环境变量脚本

echo -e "\nsource /app/bin/proxy.sh" >> ~/.bashrc

~/.bashrc 文件的修改,除了会影响当前作业之外,所有投递于当前作业所投递集群的作业也均会受到影响,所以在不需要时,请将 ~/.bashrc 文件中的代理配置取消。

首先在作业详情中设置网络访问入口。

如下图,在访问入口中,可以看到作业有端口号为 8022 的 ssh 访问入口,这是星光应用默认创建的 ssh 访问入口,可以使用 mobaxterm、putty 等 ssh 工具连接。但是该端口进行了特殊的端口聚合配置,对 vscode 连接 适用。

../../_images/vscode_1.png

需要点击 访问入口配置 按钮,打开修改访问入口窗口,移除默认的 ssh 访问入口:

../../_images/vscode_2.png

点击 添加 按钮,添加访问入口,配置如下:

../../_images/vscode_3.png

备注

  • 名称:可随意设置

  • 协议:ssh

  • 使用非固定端口:从 32768 ~ 65535 之间随机选择一个作为外部访问端口,避免使用默认端口

  • 目的端口:22

该访问入口同样可以使用 ssh 工具如 mobaxterm、putty 等进行连接。

打开 vscode 进行远程连接,使用 用户名@主机名:端口 进行连接,如下图:

../../_images/vscode_4.jpg

备注

用户名 为星光用户名,可见 “作业详情” \(\rightarrow\) “基本信息” 中的 用户 项:

../../_images/job_username.png

如果需要输入 密码,输入该用户的星光密码即可。

vscode 连接完成后效果如下:

../../_images/vscode_5.jpg
moba-xterm

首先在 作业详情 的访问入口查询远程登录的主机名和端口,如此例中的 ssh-default

../../_images/moba-xterm_1.png

打开 MobaXterm 工具, “session” \(\rightarrow\) “SSH”, 输入主机名和端口信息:

../../_images/moba-xterm_2.png

点击 “OK” 按钮确定后,会要求输入要登录的 用户名密码

备注

用户名 为星光用户名,可见 “作业详情” \(\rightarrow\) “基本信息” 中的 用户 项:

../../_images/job_username.png

密码 为星光平台的登录密码。

将用户名和登录密码输入终端,用户密码验证通过后,会显示正在运行的容器类作业(作业具备端口为 8022 的 ssh-default 访问入口)列表。

../../_images/moba-xterm_4.png

输入要登录的作业编号后按下回车键即可登录到作业运行的容器里(若用户只有一个运行中的作业,则会直接登录到该作业中):

../../_images/moba-xterm_5.png
xshell

首先在 作业详情 的访问入口查询远程登录的主机名和端口,如此例中的 ssh-default

../../_images/xshell_1.png

打开 XShell 工具, “文件” \(\rightarrow\) “新建” 打开 “新建会话属性” ,输入主机名和端口信息:

../../_images/xshell_2.png

点击右侧菜单栏的 “用户身份验证” 选项,方法选项选择 “Keyboard Interactive”

../../_images/xshell_3.png

备注

用户名 为星光用户名,可见 “作业详情” \(\rightarrow\) “基本信息” 中的 用户 项:

../../_images/job_username.png

密码 为星光平台的登录密码。

用户密码验证通过后,会显示正在运行的容器类作业(作业具备端口为 8022 的 ssh-default 访问入口)列表,在输入框中输入要登录的作业编号即可进入作业中。

../../_images/xshell_5.png

出现如下界面则表明登录作业成功(若用户只有一个运行中的作业,则会直接登录到该作业中):

../../_images/xshell_6.png

工作流任务

平台左侧导航栏中点击 “工作流任务”,进入工作流作业管理界面。

../../_images/get_workflow_jobs1.png

点击 “查看” 按钮进入对应的 “工作流运行” 页面。

  • 双击 “开始” 节点,显示提交的输入参数;

  • 双击 “结束” 节点,显示工作流运行结束后的输出数据;

  • 双击 “步骤” 节点,显示对应的步骤详情。

../../_images/wf_step_detail1.png

对于进行了分发的嵌套子工作流,可以点击步骤图框的标题栏上的下拉按钮,查看不同分发流程的执行情况,并可以选择其中具体某一个流程进行进一步的查看:

../../_images/wf_scatter_detail1.gif

也可以双击展开步骤详情页,在作业列表栏中逐级查看:

../../_images/wf_scatter_jobs1.png

如果查看的节点能关联到具体的作业,可以点击 “作业详情” 链接进行跳转查看。

备注

工作流任务中, 计算任务 节点与 星光应用 节点均会产生具体的作业,可于 作业列表 页面查看。

对于还在执行的工作流,可以通过右上角的按钮进行流程的暂停、恢复、终止。

../../_images/wf_job_control1.png
  • 暂停

    流程不再继续执行,但可以恢复。

  • 恢复

    流程恢复继续执行。

  • 终止

    流程不再继续执行,不可以恢复。等待所有仍在运行的步骤结束后释放所有资源。