应用管理

应用

概述

应用是由Helm工具发布的实例,是一组工作负载、服务、存储等资源对象的集合。支持通过应用实现资源统一管理。

相关定义

应用涉及以下核心概念:
  • Helm:由Deis发起的开源工具,是一款Kubernetes包管理器,可以方便地发现、共享和使用Kubernetes构建的应用。ZStack Zaku集成Helm 3.0工具并进行扩展,简化Kubernetes应用分发与部署的复杂性,从而实现可视化的应用发布、升级、回滚、版本管理等操作。
  • 部署包:即Helm Chart。Chart包描述了部署和运行一个应用所需的工作负载、容器镜像、依赖和资源定义,还可能包含Kubernetes集群中服务的定义。Helm和Chart的关系类似于APT和DPKG,或YUM和RPM文件。用户可使用Chart来部署一个完整的应用。

发布应用

发布应用指将Chart部署包发布到集群,部署一个应用实例。用户可在应用制品仓库界面以两种方式发布应用,本节主要介绍通过应用界面的发布方式。

ZStack Zaku主菜单,点击容器编排 > 应用管理 > 应用,进入应用界面。点击发布应用,弹出发布应用界面。

可参考以下示例输入相应内容:
  • 应用名称:设置应用名称。命名规则:长度限制2-20字符,输入内容只能包含小写字母、数字及分隔符 (-),且必须以小写字母开头,以小写字母或者数字结尾
  • 版本:设置应用版本
  • 简介:可选项,备注应用相关信息
  • 集群:选择应用将发布到的集群
  • 命名空间 :选择应用将发布到的命名空间
  • 部署包来源:选择Chart部署包来源,可选择本地仓库或应用市场
    如选择本地仓库,请设置以下参数:
    • 部署包路径:选择路径以定位部署包
    • 应用配置:修改部署包中values文件的配置内容。本地仓库的部署包仅支持YAML编辑一种修改方式。用户可点击修改内容查看修改前后对比
    如选择应用市场,请设置以下参数:
    • 部署包:选择部署包
    • 应用配置:修改部署包中values文件的配置内容。应用市场的部署包支持表单编辑YAML编辑两种修改方式。用户可点击修改内容查看修改前后对比
图 1图 2所示:
图 1. 发布应用|部署包来源: 本地仓库


图 2. 发布应用|部署包来源: 应用市场


管理应用

ZStack Zaku主菜单,点击容器编排 > 应用管理 > 应用,进入应用界面。

应用支持以下操作:
操作 描述
发布应用 将Chart部署包发布到集群,部署一个应用实例。
更新应用 基于当前部署包更新应用配置,或使用一个新部署包更新应用。
Note:
  • 非控制台发布或更新的应用,不支持基于当前部署包更新。
  • 当前部署包已被删除时,不支持基于当前部署包更新。
应用详情 进入应用详情页,查看应用基本信息、历史版本、配置资源和关联资源,包括:容器组、数据卷、服务、路由。
回滚应用 将应用回滚到指定版本。
Note:
  • 执行该操作,请进入应用详情页,点击历史版本 > 操作 > 回滚
  • 仅支持回滚到已启用已发布状态的版本。
删除历史版本 删除应用的历史版本。
Note: 执行该操作,请进入应用详情页,点击历史版本 > 操作 > 删除
删除应用 将应用从集群删除。
Note:
  • 删除后,应用相关的资源对象将被同步删除。
  • 应用中通过volumeClaimTemplates创建的数据卷不会被同步删除。如需删除,请进入数据卷列表,单独执行删除操作。

工作负载

概述

工作负载是Kubernetes上运行的应用程序,管理一组使用相同镜像的容器组,包括Deployment、StatefulSet和DaemonSet等类型。

相关定义

工作负载涉及以下核心概念:
  • 工作负载类型ZStack Zaku支持三种工作负载类型:
    • Deployment:Deployment类型的工作负载声明了容器组模板和运行策略,主要用于管理无状态的应用程序,即各个应用程序完全独立但功能相同。Deployment下的每个容器组除名称和IP地址不同外,其他配置完全相同。
    • StatefulSet:StatefulSet类型的工作负载支持容器有序部署、删除,和持久化存储,主要用于管理有状态的应用程序,即各个应用程序的角色 (或功能) 不同,例如数据库主备角色。StatefulSet类型的工作负载具有以下特点:
      • StatefulSet工作负载为每个容器组提供统一、固定的名称,并在统一名称后增加0-N的后缀用作资源区分。容器组重新调度后,名称和HostName不会改变。
      • StatefulSet工作负载通过Headless服务为每个容器组提供固定的访问域名。
      • StatefulSet工作负载会创建具有固定标识的数据卷 (PVC),用于持久化数据存储,使容器组重新调度后仍能访问到相同的数据。
    • DeamonSet:DeamonSet类型的工作负载在集群的每个节点上都运行一个容器组,且只运行一个容器组,主要用于管理系统层面的应用程序,如日志收集、资源监控等。这类应用程序在每个节点上都需要运行,但并不需要过多的容器组。
  • 容器组:容器组是一组容器的集合,是Kubernetes集群调度和管理的最小单位。工作负载管理一组使用相同镜像的容器组,应用程序实际在容器组中运行。
    • 副本:即工作负载包含的容器组数量,一个Deployment或StatefulSet类型的工作负载最多可包含100个容器组。
    • 容器:容器是容器组的组成部分。通常情况下,一个容器组中只包含一个容器,但在应用程序需多个容器耦合工作、资源共享的情况下,用户也可为一个容器组添加多个容器。
      • 工作容器:在一个容器组中,工作容器负责运行实际应用程序。
      • 初始化容器:在一个容器组中,初始化容器负责执行初始化任务,并在容器组就绪前运行完成。仅当初始化容器运行完成后,工作容器才会启动。初始化容器可用于以下场景:
        • 通过初始化容器准备一组应用程序运行的前置条件,仅当前置条件满足时,才使工作容器启动,并运行应用程序。
        • 通过初始化容器准备不必要安装在工作容器中的实用工具或配置,并使其安全地运行实用程序和自定义代码,降低工作容器被攻击的风险。
        Note: 初始化容器不支持开启存活探针、就绪探针、启动探针和生命周期回调。

创建工作负载

ZStack Zaku主菜单,点击容器编排 > 应用管理 > 工作负载,进入工作负载界面。点击创建工作负载,弹出创建工作负载界面。

创建工作负载分为以下五步:

  1. 基础信息
    可参考以下示例输入相应内容:
    • 名称:设置工作负载名称。命名规则:长度限制2-50字符,输入内容只能包含小写字母、数字及分隔符 (-),且必须以小写字母开头,以数字或小写字母结尾
      Note: 同一个命名空间下,同一类型的工作负载不能使用相同的名称。
    • 类型:选择工作负载类型,支持Deployment、StatefulSet、DaemonSet三种类型,类型区别详见工作负载类型
    • 副本数:设置工作负载包含的容器组个数,最多支持100副本。DeamonSet类型的工作负载不需要设置副本数
    • 工作负载标签:设置工作负载标签。系统会默认为工作负载添加app、workloadType两个标签,标签的值分别对应该工作负载名称和工作负载类型。这两个标签不能被编辑和删除。用户还可以自定义添加其他标签,请设置以下参数:
      • :填写标签键名
        Note:
        • 通常情况下,键名可包含1-63个字符,包括字母、数字和以下特殊字符:(-)(_)(.),特殊字符不能用于键名开头或结尾。
        • 支持在键名前添加前缀,并用/与键名连接,例如k8s.io/app,填写在/之前的所有字符都将被认为是键名前缀,之后的所有字符都将被认为是键名。
        • 键名前缀可包含1-253个字符,包括小写字母、数字和以下特殊字符:(-)(_)(.) ,不能连续使用2个及以上特殊字符,且不能将特殊字符用于前缀开头或结尾。
        • 请注意,您并不必须使用键名前缀,但必须填写键名。
      • :填写标签的值
    • 工作负载注解:可选项,添加工作负载注解
      • :填写注解键名
        Note:
        • 通常情况下,键名可包含1-63个字符,包括字母、数字和以下特殊字符:(-)(_)(.),特殊字符不能用于键名开头或结尾。
        • 支持在键名前添加前缀,并用/与键名连接,例如k8s.io/app,填写在/之前的所有字符都将被认为是键名前缀,之后的所有字符都将被认为是键名。
        • 键名前缀可包含1-253个字符,包括小写字母、数字和以下特殊字符:(-)(_)(.) ,不能连续使用2个及以上特殊字符,且不能将特殊字符用于前缀开头或结尾。
        • 请注意,您并不必须使用键名前缀,但必须填写键名。
      • :填写注解的值
    • 容器组标签:设置容器组标签。系统会默认为容器组添加app、workloadType两个标签,标签的值分别对应该工作负载名称和工作负载类型。这两个标签不能被编辑和删除。用户还可以自定义添加其他标签,请设置以下参数:
      • :填写标签键名
        Note:
        • 通常情况下,键名可包含1-63个字符,包括字母、数字和以下特殊字符:(-)(_)(.),特殊字符不能用于键名开头或结尾。
        • 支持在键名前添加前缀,并用/与键名连接,例如k8s.io/app,填写在/之前的所有字符都将被认为是键名前缀,之后的所有字符都将被认为是键名。
        • 键名前缀可包含1-253个字符,包括小写字母、数字和以下特殊字符:(-)(_)(.) ,不能连续使用2个及以上特殊字符,且不能将特殊字符用于前缀开头或结尾。
        • 请注意,您并不必须使用键名前缀,但必须填写键名。
      • :填写标签的值
    • 容器组注解:可选项,添加容器组注解
      • :填写注解键名
        Note:
        • 通常情况下,键名可包含1-63个字符,包括字母、数字和以下特殊字符:(-)(_)(.),特殊字符不能用于键名开头或结尾。
        • 支持在键名前添加前缀,并用/与键名连接,例如k8s.io/app,填写在/之前的所有字符都将被认为是键名前缀,之后的所有字符都将被认为是键名。
        • 键名前缀可包含1-253个字符,包括小写字母、数字和以下特殊字符:(-)(_)(.) ,不能连续使用2个及以上特殊字符,且不能将特殊字符用于前缀开头或结尾。
        • 请注意,您并不必须使用键名前缀,但必须填写键名。
      • :填写注解的值

    图 1所示

    图 1. 基础信息


  2. 容器配置
    点击添加容器,并参考以下示例输入相应内容,一个工作负载可以添加多条容器配置:
    • 容器名称:设置容器名称。命名规则:长度限制1-63字符,只能包含小写字母、数字及分隔符 (-),必须以小写字母开头
    • 容器类型:选择容器类型,支持工作容器、初始化容器两种类型。默认为工作容器
    • 镜像来源:选择容器镜像来源,支持本地仓库和外部仓库两种镜像来源
      如选择本地仓库,将使用已上传到ZStack Zaku本地仓库的镜像创建容器,请设置以下参数:
      • 镜像:选择容器镜像
      • 镜像标签:选择镜像标签
      如选择外部仓库,将从ZStack Zaku外的仓库拉取镜像创建容器,请设置以下参数:
      • 镜像:输入详细的镜像地址,例如:docker.io/library/nginx:latest
      • 镜像拉取保密字典:可选项,如镜像所属的外部仓库是私有仓库,需选择保密字典用于镜像仓库认证
    • 镜像拉取策略:选择镜像拉取策略,定义容器每次启动时,是否重新从镜像仓库获取镜像,支持以下三种策略:
      • 始终拉取新镜像:容器每次启动时都会重新获取指定镜像
      • 本地不存在时拉取镜像:仅当容器所在节点不存在指定的容器镜像时,容器会重新获取镜像
      • 始终不拉取镜像:无论容器所在节点是否存在指定的容器镜像,均不重新获取;当所在节点没有指定镜像可用时,容器将启动失败
    • 特权模式:选择是否为容器开启特权模式。开启后,容器所在的节点将以root用户身份运行容器进程
    • 资源申请:可选项,设置容器CPU/内存申请值。CPU单位:核,内存单位:Mi、Gi
      Note:
      • CPU/内存申请值是容器所需的最小CPU/内存值,进行容器调度时,只有当节点可分配CPU/内存总量≥容器CPU/内存申请值时,容器才会被调度到该节点上。
      • CPU/内存申请值不能大于CPU/内存限制值。
      • CPU/内存申请值不能大于当前命名空间的CPU/内存限额,否则工作负载将创建失败。
      • 如不设置,CPU/内存申请值默认等于CPU/内存限制值。
      • 支持同时设置CPU申请值和内存申请值,也可单独设置CPU申请值或内存申请值。
    • 资源限制:可选项,设置容器CPU/内存限制值。CPU单位:核,内存单位:Mi、Gi
      Note:
      • CPU/内存限制值是容器可使用的最大CPU/内存限制,生产环境建议设置CPU/内存限制值,避免容器资源超额造成系统故障。
      • 容器已使用CPU/内存超过限制值时可能会触发容器组重启,影响工作负载正常运行,请根据实际情况设置限制值。
      • 如不设置,容器将使用当前命名空间的默认资源限制。
      • 支持同时设置CPU限制值和内存限制值,也可单独设置CPU限制值或内存限制值。
    • 启动命令:可选项,设置容器启动时运行的命令,例如:/bin/sh。如留空不填,容器启动时将运行镜像默认命令
    • 启动参数:可选项,设置启动命令的参数,支持添加多个参数,并用半角逗号 (,) 隔开
    • 环境变量:可选项,添加容器环境变量。支持多种变量添加方式:
      • 自定义键值对:通过自定义键/值对添加容器环境变量
        • 变量名:设置变量名
        • 变量值:设置变量值
      • 引用容器组信息:引用容器组Yaml字段作为容器环境变量
        • 变量名:设置变量名
        • 容器组路径:选择需要引用的容器组字段
      • 引用资源申请/限制信息:引用容器的资源申请/限制字段作为环境变量
        • 变量名:设置变量名
        • 资源路径:选择需要引用的资源申请/限制字段
        • 容器名称:设置需被引用的容器名称,如留空不填,默认引用当前容器的资源申请/限制字段
      • 导入配置集键值:引用指定的配置集键/值作为环境变量
        • 变量名:设置变量名
        • 配置集:选择需要引用的配置集
        • 配置集键名:选择需要引用的配置集键名
      • 导入配置集:引用完整的指定配置集作为环境变量
        • 配置集:选择需要引用的配置集
        • 前缀:可选项,填写前缀,前缀将与配置集键名一起组成环境变量名称
      • 导入保密字典键值:引用指定的保密字典键/值作为环境变量
        • 变量名:设置变量名
        • 配置集:选择需要引用的保密字典
        • 配置集键名:选择需要引用的保密字典键名
      • 导入保密字典:引用完整的指定保密字典作为环境变量
        • 保密字典:选择需要引用的保密字典
        • 前缀:可选项,填写前缀,前缀将与保密字典键名一起组成环境变量名称
    • 存活探针:选择是否开启存活探针,判断容器是否存活,检测到未存活时,容器将自动重启。开启存活探针需设置以下参数:
      • 探测方式:选择探测方式,支持HTTP请求、TCP连接、自定义命令、GPRC四种探测方式:
        • HTTP请求:该方式主要用于探测提供HTTP/HTTPS服务的容器,集群将周期性向容器发起HTTP/HTTPS GET请求,如收到的返回码在200~399范围内,则为探测成功,否则为探测失败。选择HTTP请求方式,需设置以下参数:
          • 协议:选择探测协议,支持HTTP、HTTPS两种协议类型
          • 路径:可选项,输入探测路径
          • 端口:输入探测端口
          • 请求头:可选项,输入探测请求头

            示例:选择HTTP协议,探测路径填写/healthcheck,探测端口填写8080,容器IP为192.168.0.32,则集群将向http://192.168.0.32:8080/healthcheck发起周期性GET请求

        • TCP连接:该方式主要用于探测提供TCP服务的容器,集群将周期性向容器建立TCP连接,如连接成功,则为探测成功,否则为探测失败。选择TCP连接方式,需设置以下参数:
          • 端口:输入建立TCP连接使用的端口
        • 自定义命令:该方式需自定义一个容器可执行的命令,集群将周期性地在容器内执行该命令,如命令返回结果为0,则为探测成功,否则为探测失败。选择自定义命令方式,需设置以下参数:
          • 自定义探测命令:输入自定义探测命令
        • GRPC:该方式主要用于探测实现GRPC健康检查协议的容器,集群将周期性通过GRPC执行远程过程调用,响应状态为SERVING时表示探测成功,否则为探测失败。选择GRPC方式,需设置以下参数:
          • 端口:输入用于GRPC探测的端口
      • 初次探测延时时间:设置初次探测延时时间,初次探测将在容器启动且延时时间结束后进行,默认为3秒
      • 探测频率:设置探测频率,默认每10秒探测一次
      • 超时时间:设置探测超时等待时间,默认为1秒
      • 探测失败阈值:设置允许的探测失败次数,默认为3次。达到设置的次数上限时,将认定应用容器未存活,容器将自动重启
    • 就绪探针:选择是否开启就绪探针,判断容器是否准备就绪并可对外提供服务,检测到未就绪时,流量不会被转发到该容器。开启就绪探针需设置以下参数:
      • 探测方式:选择探测方式,支持HTTP请求、TCP连接、自定义命令、GPRC四种探测方式:
        • HTTP请求:该方式主要用于探测提供HTTP/HTTPS服务的容器,集群将周期性向容器发起HTTP/HTTPS GET请求,如收到的返回码在200~399范围内,则为探测成功,否则为探测失败。选择HTTP请求方式,需设置以下参数:
          • 协议:选择探测协议,支持HTTP、HTTPS两种协议类型
          • 路径:可选项,输入探测路径
          • 端口:输入探测端口
          • 请求头:可选项,输入探测请求头

            示例:选择HTTP协议,探测路径填写/healthcheck,探测端口填写8080,容器IP为192.168.0.32,则集群将向http://192.168.0.32:8080/healthcheck发起周期性GET请求

        • TCP连接:该方式主要用于探测提供TCP服务的容器,集群将周期性向容器建立TCP连接,如连接成功,则为探测成功,否则为探测失败。选择TCP连接方式,需设置以下参数:
          • 端口:输入建立TCP连接使用的端口
        • 自定义命令:该方式需自定义一个容器可执行的命令,集群将周期性地在容器内执行该命令,如命令返回结果为0,则为探测成功,否则为探测失败。选择自定义命令方式,需设置以下参数:
          • 自定义探测命令:输入自定义探测命令
        • GRPC:该方式主要用于探测实现GRPC健康检查协议的容器,集群将周期性通过GRPC执行远程过程调用,响应状态为SERVING时表示探测成功,否则为探测失败。选择GRPC方式,需设置以下参数:
          • 端口:输入用于GRPC探测的端口
      • 初次探测延时时间:设置初次探测延时时间,初次探测将在容器启动且延时时间结束后进行,默认为3秒
      • 探测频率:设置探测频率,默认每10秒探测一次
      • 超时时间:设置探测超时等待时间,默认为1秒
      • 探测失败阈值:设置允许的探测失败次数,默认为3次。达到设置的次数上限时,将认定容器未就绪,流量不会被转发到该容器
      • 探测成功阈值:设置容器被认定为就绪前,需完成的最小成功探测次数,默认为1次,如设置为2次,则该容器需被连续探测成功2次,才能被认定为就绪
    • 启动探针:选择是否开启启动探针,判断容器应用是否已初始化成功;检测到应用未初始化成功时,容器将自动重启。如容器运用需耗费较长时间进行初始化,建议开启启动探针。开启启动探针需设置以下参数:
      • 探测方式:选择探测方式,支持HTTP请求、TCP连接、自定义命令、GPRC四种探测方式:
        • HTTP请求:该方式主要用于探测提供HTTP/HTTPS服务的容器,集群将周期性向容器发起HTTP/HTTPS GET请求,如收到的返回码在200~399范围内,则为探测成功,否则为探测失败。选择HTTP请求方式,需设置以下参数:
          • 协议:选择探测协议,支持HTTP、HTTPS两种协议类型
          • 路径:可选项,输入探测路径
          • 端口:输入探测端口
          • 请求头:可选项,输入探测请求头

            示例:选择HTTP协议,探测路径填写/healthcheck,探测端口填写8080,容器IP为192.168.0.32,则集群将向http://192.168.0.32:8080/healthcheck发起周期性GET请求

        • TCP连接:该方式主要用于探测提供TCP服务的容器,集群将周期性向容器建立TCP连接,如连接成功,则为探测成功,否则为探测失败。选择TCP连接方式,需设置以下参数:
          • 端口:输入建立TCP连接使用的端口
        • 自定义命令:该方式需自定义一个容器可执行的命令,集群将周期性地在容器内执行该命令,如命令返回结果为0,则为探测成功,否则为探测失败。选择自定义命令方式,需设置以下参数:
          • 自定义探测命令:输入自定义探测命令
        • GRPC:该方式主要用于探测实现GRPC健康检查协议的容器,集群将周期性通过GRPC执行远程过程调用,响应状态为SERVING时表示探测成功,否则为探测失败。选择GRPC方式,需设置以下参数:
          • 端口:输入用于GRPC探测的端口
      • 初次探测延时时间:设置初次探测延时时间,初次探测将在容器启动且延时时间结束后进行,默认为3秒
      • 探测频率:设置探测频率,默认每10秒探测一次
      • 超时时间:设置探测超时等待时间,默认为1秒
      • 探测失败阈值:设置允许的探测失败次数,默认为3次。达到设置的次数上限时,容器应用将被认定为未初始化成功,容器将自动重启
    • 启动后回调:选择是否开启启动后回调,用于在容器创建完成后立即执行指定的初始化操作。开启启动后回调,请设置以下参数:
      • 回调方式:选择回调方式,支持HTTP请求和自定义命令两种方式:
        • HTTP请求:对容器上的特定端点执行HTTP请求,选择HTTP请求方式,请设置以下参数:
          • 协议:选择协议类型,当前Kubernetes版本仅支持HTTP协议
          • 请求地址:设置HTTP请求地址。如留空不填,默认使用当前容器组IP地址
          • 路径:可选项,设置HTTP请求路径,默认为/
          • 端口:设置HTTP请求端口
          • 请求头:可选项,设置HTTP请求头
        • 自定义命令:在容器cgroups和名字空间中执行自定义命令。选择自定义命令方式,请设置以下参数:
          • 自定义命令:设置自定义命令。支持设置多条命令,每条命令用半角逗号 (,) 隔开
          Note: 自定义命令消耗的资源将被计入容器资源消耗总量。
    • 停止前回调:选择是否开启停止前回调,用于在容器停止前执行指定的清理操作,如保存数据、关闭连接、通知其他系统等。开启停止前回调,需设置以下参数:
      • 回调方式:选择回调方式,支持HTTP请求和自定义命令两种方式:
        • HTTP请求:对容器上的特定端点执行HTTP请求,选择HTTP请求方式,请设置以下参数:
          • 协议:选择协议类型,当前Kubernetes版本仅支持HTTP协议
          • 请求地址:设置HTTP请求地址。如留空不填,默认使用当前容器组IP地址
          • 路径:可选项,设置HTTP请求路径,默认为/
          • 端口:设置HTTP请求端口
          • 请求头:可选项,设置HTTP请求头
        • 自定义命令:在容器cgroups和名字空间中执行自定义命令。选择自定义命令方式,请设置以下参数:
          • 自定义命令:设置自定义命令。支持设置多条命令,每条命令用半角逗号 (,) 隔开
          Note: 自定义命令消耗的资源将被计入容器资源消耗总量。
    图 2所示:
    图 2. 容器配置




  3. 资源挂载
    1. 挂载数据卷。支持两种方式挂载数据卷:创建新数据卷、挂载已有数据卷
      • 创建新数据卷:通过数据卷模板为工作负载下的每个容器组各创建一个数据卷并分别挂载。该方式仅适用于StatefulSet类型的工作负载。请点击添加数据卷模板,并设置以下参数:
        • 数据卷名称:设置数据卷的名称。命名规则:长度限制1-50个字符,只能包含小写字母、数字及分隔符 (-),且必须以小写字母开头,数字或小写字母结尾
        • 存储类:选择创建数据卷使用的存储类(StorageClass)
          Note:
          • 存储类是 Kubernetes 中用于动态创建数据卷的配置模板,定义了数据卷的属性、创建策略和所需的存储插件。
          • 存储类由管理员创建和管理。如无可用存储类,请联系管理员。
        • 访问模式:选择数据卷的访问模式。支持以下三种访问模式:
          • ReadWriteOnce:仅支持单节点读写
          • ReadWriteMany:支持多节点读写
          • ReadOnlyMany:支持多节点只读
        • 容量:设置数据卷的容量,单位:Gi、Ti
        • 容器:选择数据卷要挂载的容器
        • 挂载路径:选择数据卷在容器上的挂载路径
        • 权限:设置数据卷权限,包括只读、读写两种权限
        • 子路径:可选项,填写挂载到容器的数据卷子路径
          Note:
          • 子路径指数据卷中的某个目录或文件,填写后,只有该路径下的内容会被挂载。将同一个数据卷挂载到多个容器或挂载到一个容器的多个路径下时,可能需填写子路径。
          • 如留空不填,将默认挂载数据卷根目录下的内容。
      • 挂载已有数据卷:选择已有的数据卷挂载到工作负载,工作负载下的所有容器组将同时共享该数据卷。请点击添加数据卷,并设置以下参数:
        • 数据卷:选择数据卷
          Note: 独享盘类型的数据卷同时只支持一个容器组读写,因此最多只能被挂载到一个工作负载,且该工作负载的副本数必须为1。
        • 容器:选择数据卷要挂载的容器
        • 挂载路径:设置数据卷在容器上的挂载路径,同一容器内,所有挂载资源的挂载路径不能相同
        • 权限:设置数据卷权限,包括只读读写两种权限
        • 子路径:可选项,填写挂载到容器的数据卷子路径
          Note:
          • 子路径指数据卷中的某个目录或文件,填写后,只有该路径下的内容会被挂载。将同一个数据卷挂载到多个容器或挂载到一个容器的多个路径下时,可能需填写子路径。
          • 如留空不填,将默认挂载数据卷根目录下的内容。
    2. 挂载主机路径:将所在节点的文件目录挂载到工作负载。工作负载下的所有容器组均能使用该主机路径。请点击添加主机路径,并设置以下参数:
      • 主机路径:输入要挂载的主机目录
        Note:
        • 主机路径必须以/开头。
        • 以下系统目录不能被挂载://bin/boot/data/dev/etc/home/lib/lib64/opt/proc/root/run/sbin/srv/sys/tmp/usr/var
      • 容器:选择主机路径要挂载的容器
      • 挂载路径:设置主机目录在容器上的挂载路径,同一容器内,所有挂载资源的挂载路径不能相同
      • 权限:设置主机路径权限,包括只读读写两种权限
      • 子路径:可选项,填写挂载到容器的主机路径子路径
        Note:
        • 子路径指当前主机路径下的某个目录或文件,填写后,只有该目录或文件会被挂载。将同一个主机路径挂载到多个容器或挂载到一个容器的多个路径下时,可能需要填写子路径。
        • 如留空不填,将默认挂载该主机路径下的全部内容。
    3. 挂载配置集:将已有的配置集挂载到工作负载。工作负载下的所有容器组均能使用该配置集。请点击添加配置集,并设置以下参数:
      • 配置集:选择配置集
      • 挂载内容:选择需要挂载的内容,可选择挂载配置集下的全部键,或仅挂载一个或多个特定键
        如选择挂载全部,需设置以下挂载配置参数:
        • 容器:选择配置集要挂载的容器
        • 挂载路径:设置配置集在容器上的挂载路径,同一容器内所有资源的挂载路径不能相同
        • 子路径:可选项,填写要挂载到容器的配置集卷内的子路径
          Note:
          • 如填写子路径,该配置集将在挂载路径的倒数第二级下生成对应文件,文件名为挂载路径的最后一级。例如,设置挂载路径为/data/config.conf,则配置集将被挂载到容器/data/目录下,文件名为config.conf,/data/目录中原有的其他文件不会被覆盖。
          • 挂载内容为配置集全部键时,子路径需要填写为配置集中的键名,一个子路径只能对应一个键名,用户可点击添加挂载来设置不同键的挂载配置。
          • 如填写子路径,每次更新配置集后,需重启容器组使更新同步。
          • 如留空不填,配置集将被挂载到挂载路径最后一级。例如,设置挂载路径为/data/config,则配置集将被挂载到/data/config目录下,且/data/config目录下的原有文件将被覆盖。
        如选择挂载特定键,需设置以下参数:
        • :选择特定键
        • 路径:定义键在挂载目录下生成的路径,如在挂载配置中使用子路径,则此处填写的路径应当与子路径相同。不要使用绝对路径

          设置挂载配置参数:

        • 容器:选择配置集要挂载的容器
        • 挂载路径:设置配置集在容器上的挂载路径,同一容器内所有资源的挂载路径不能相同
        • 子路径:可选项,填写要挂载到容器的配置集卷内的子路径
          Note:
          • 如填写子路径,该配置集将在挂载路径的倒数第二级下生成对应文件,文件名为挂载路径的最后一级。例如,设置挂载路径为/data/config.conf,则配置集将被挂载到容器/data/目录下,文件名为config.conf,/data/目录中原有的其他文件不会被覆盖。
          • 挂载内容为配置集特定键时,子路径需要与键路径相同,用户可点击添加挂载来设置不同键的挂载配置。
          • 如填写子路径,每次更新配置集后,需重启容器组使更新同步。
          • 如留空不填,配置集将被挂载到挂载路径最后一级。例如,设置挂载路径为/data/config,则配置集将被挂载到/data/config目录下,且/data/config目录下的原有文件将被覆盖。
    4. 挂载保密字典:将已有的保密字典挂载到工作负载。工作负载下的所有容器组均能使用该保密字典。请点击添加保密字典,并设置以下参数:
      • 保密字典:选择保密字典
      • 挂载内容:选择需要挂载的内容,可选择挂载保密字典下的全部键,或仅挂载一个或多个特定键
        如选择挂载全部,需设置以下挂载配置参数:
        • 容器:选择保密字典要挂载的容器
        • 挂载路径:设置保密字典在容器上的挂载路径,同一容器内所有资源的挂载路径不能相同
        • 子路径:可选项,填写要挂载到容器的保密字典卷内的子路径
          Note:
          • 如填写子路径,该保密字典将在挂载路径的倒数第二级下生成对应文件,文件名为挂载路径的最后一级。例如,设置挂载路径为/data/config.conf,则保密字典将被挂载到容器/data/目录下,文件名为config.conf,/data/目录中原有的其他文件不会被覆盖。
          • 挂载内容为保密字典全部键时,子路径需要填写为保密字典中的键名,一个子路径只能对应一个键名,用户可点击添加挂载来设置不同键的挂载配置。
          • 如填写子路径,每次更新保密字典后,需重启容器组使更新同步。
          • 如留空不填,保密字典将被挂载到挂载路径最后一级。例如,设置挂载路径为/data/config,则保密字典将被挂载到/data/config目录下,且/data/config目录下的原有文件将被覆盖。
        如选择挂载特定键,需设置以下参数:
        • :选择特定键
        • 路径:定义键在挂载目录下生成的路径,如在挂载配置中使用子路径,则此处填写的路径应当与子路径相同,不要使用绝对路径

          设置挂载配置参数:

        • 容器:选择保密字典要挂载的容器
        • 挂载路径:设置保密字典在容器上的挂载路径,同一容器内所有资源的挂载路径不能相同
        • 子路径:可选项,填写要挂载到容器的保密字典卷内的子路径
          Note:
          • 如填写子路径,该保密字典将在挂载路径的倒数第二级下生成对应文件,文件名为挂载路径的最后一级。例如,设置挂载路径为/data/config.conf,则保密字典将被挂载到容器/data/目录下,文件名为config.conf,/data/目录中原有的其他文件不会被覆盖。
          • 挂载内容为保密字典特定键时,子路径需要与键路径相同。
          • 如填写子路径,每次更新保密字典后,需重启容器组使更新同步。
          • 如留空不填,保密字典将被挂载到挂载路径最后一级。例如,设置挂载路径为/data/config,则保密字典将被挂载到/data/config目录下,且/data/config目录下的原有文件将被覆盖。
    图 3所示:
    图 3. 资源挂载


  4. 高级配置
    可参考以下示例输入相应内容:
    • GPU配置:默认关闭,如需使用 GPU 资源则开启,需设置以下参数:
      • GPU厂商:选择要使用的 GPU 卡的厂商,当前支持 NVIDIA、华为、海光、天数四个厂商
        • GPU厂商选择NVIDIA时,请设置以下参数:
          • GPU卡选择方式:选择GPU卡选择方式,支持以下三种方式:不指定GPU卡、指定GPU型号、指定GPU卡
            • 不指定GPU卡 :即不指定容器组需要使用的 GPU 卡,由平台根据 GPU 资源配置调度到任意满足 GPU 资源配置的 GPU 上
            • 指定GPU型号 :选择一个或多个 GPU 型号,工作负载容器组将被调度到所选型号的满足 GPU 资源配置的 GPU 卡上
            • 指定GPU卡 :选择一个或多个 GPU 卡,工作负载容器组将被调度到所选 GPU 卡中满足 GPU 资源配置的 GPU 卡上
          • GPU型号/GPU卡:指定 GPU 型号或 GPU 卡
          • 容器:固定为第一个工作容器,仅支持第一个工作容器使用 GPU
          • GPU数:设置容器需要使用的 GPU 卡的数量
            Note: 容器只能使用容器组所在节点的 GPU 卡,不能跨节点使用。
          • 每GPU显存:设置容器需使用的单张 GPU 卡的显存大小。单位可选:Gi、Mi
            Note:
            • 如 GPU数设置大于1时,每张 GPU 卡都会申请每GPU显存大小的 GPU。
            • 每GPU显存不能超出单张 GPU 卡的最大显存。
          • 每GPU算力百分比:设置容器需使用的单张 GPU 卡的算力百分比
            Note:
            • 如 GPU数设置大于1时,每张 GPU 卡都可使用到每GPU算力百分比的算力。
            • 如未设置每GPU算力百分比,则默认为0,容器组可能调度到任意满足显存需求的 GPU 上。
            • 容器以共享的方式使用 GPU 卡,若需要独享,可将每GPU算力百分比设置为 100% 。
        • GPU厂商选择华为时,请设置以下参数:
          • GPU型号:选择要使用的 GPU 卡的型号,可选型号为当前集群下所有的华为 GPU 卡型号
          • 容器:固定为第一个工作容器,仅支持第一个工作容器使用 GPU
          • GPU数:设置容器需要使用的 GPU 卡的数量
            Note: 容器只能使用容器组所在节点的 GPU 卡,不能跨节点使用。
          • 独享GPU卡:选择是否独享GPU卡。默认关闭,则容器以共享方式使用 GPU 卡,如需使用整卡则可开启该配置
            Note: 华为不支持多卡共享,即GPU数配置大于 1 时,只能独享 GPU 卡
          • 每GPU显存:选择容器需使用到的单张 GPU 卡的显存大小
            Note: 华为只允许按照固定的几种规格切分 GPU 卡,且显存对应的 AI Core 核数也是固定的,不同的 GPU 卡切分规格不一样,具体规格参考每GPU显存下拉框所示。
        • GPU厂商选择海光时,请设置以下参数:
          • GPU型号:选择要使用的 GPU 卡的型号,可选型号为当前集群下所有的海光 GPU 卡型号
            Note: 如命名空间配置了海光 GPU 显存配额,则独享 GPU 卡时必须指定 GPU 型号,否则容器组将创建失败。
          • 容器:固定为第一个工作容器,仅支持第一个工作容器使用 GPU
          • GPU数:设置容器需要使用的 GPU 卡的数量
            Note: 容器只能使用容器组所在节点的 GPU 卡,不能跨节点使用。
          • 独享GPU卡:选择是否独享GPU卡。默认关闭,则容器以共享方式使用 GPU 卡,如需使用整卡则可开启该配置
            Note: 海光不支持多卡共享,即GPU数配置大于 1 时,只能独享 GPU 卡
          • 每GPU显存:填写容器需使用到的单张 GPU 卡的显存大小。单位可选:Gi、Mi
            Note: 每GPU显存不能超出单张 GPU 卡的最大显存。
          • 每GPU算力百分比:设置容器需使用的单张 GPU 卡的算力百分比
        • GPU厂商选择天数时,请设置以下参数:
          • GPU型号:选择要使用的 GPU 卡的型号,可选型号为当前集群下所有的天数 GPU 卡型号
          • 容器:固定为第一个工作容器,仅支持第一个工作容器使用 GPU
          • GPU数:设置容器需要使用的 GPU 卡的数量
            Note: 容器只能使用容器组所在节点的 GPU 卡,不能跨节点使用。
          • 独享GPU卡:选择是否独享GPU卡。默认关闭,则容器以共享方式使用 GPU 卡,如需使用整卡则可开启该配置
            Note: 天数不支持多卡共享,即GPU数配置大于 1 时,只能独享 GPU 卡
          • 每GPU显存:填写容器需使用到的单张 GPU 卡的显存大小。单位可选:Gi、Mi
            Note: 天数要求每GPU显存的大小必须是 256Mi 的整数倍。
          • 每GPU算力百分比:设置容器需使用的单张 GPU 卡的算力百分比
          Note: 如需使用天数GPU,需将天数软件栈lib库预加载到容器中。
        • GPU厂商选择阿里巴巴时,请设置以下参数:
          • GPU卡选择方式:配置GPU选择方式,支持以下三种方式:不指定、指定GPU、排除GPU
            • 不指定 :默认从所有 GPU 中,选择符合资源配置的 GPU 进行分配
            • 指定GPU :仅从指定的 GPU 范围内,选择符合资源配置的 GPU 分配,若范围内无符合条件的 GPU 则分配失败
            • 排除GPU :不会选择排除的 GPU,从其余 GPU 中选择符合资源配置的设备分配
          • 指定GPU卡/排除GPU卡:选择要指定/排除的GPU卡
          • 容器:固定为第一个工作容器,仅支持第一个工作容器使用 GPU
          • GPU数:设置容器需要使用的 GPU 卡的数量
            Note: 容器只能使用容器组所在节点的 GPU 卡,不能跨节点使用。
          • 每GPU显存:设置容器需使用的单张 GPU 卡的显存大小。单位可选:Gi
            Note: 每GPU显存不能超出单张 GPU 卡的最大显存。
          • 每GPU算力百分比:设置容器需使用的单张 GPU 卡的算力百分比
            Note: 容器默认以共享方式使用 GPU 卡,若需实现 GPU 独享,可将每GPU显存设为该卡最大显存,并将每GPU算力百分比设置为 100%。
    • 节点调度策略:选择是否设置节点调度策略,默认不开启,即在节点调度时,遵循Kubernetes的默认策略,如开启,可自定义设置调度策略,需设置以下参数:
      • 策略类型:选择策略类型,支持按节点名称选择和按节点标签选择两种类型
        • 按节点名称选择:选择一个节点,工作负载容器组将被调度到这个节点上
        • 按节点标签选择:填写一个或多个节点标签,工作负载容器组将被调度到拥有指定标签的节点上
      • 节点/节点标签:指定节点或节点标签
    • 容器组亲和性:可选项,设置当前工作负载下各容器组的亲和关系,或当前工作负载与其他工作负载容器组的亲和关系,指定它们是否被调度到相同的节点上
      • 添加方式:支持两种亲和性添加方式:基本、高级
        • 选择基本方式时,请设置以下参数:
          • 工作负载:选择工作负载,支持选择当前工作负载或其他工作负载
            • 选择当前工作负载,表示将当前工作负载下的容器组调度到同一个节点上
            • 选择其他工作负载,表示将当前工作负载下的容器组和指定工作负载下的容器组调度到同一个节点上
        • 选择高级方式时,请设置以下参数:
          • 亲和策略:选择亲和策略。支持强制、非强制两种策略:
            • 强制:该亲和性必须被满足
            • 非强制:该亲和性尽量被满足,无法满足时,部分容器组可能被调度到不同的节点上
          • 权重:设置亲和性权重,亲和策略为非强制时,需设置该参数
          • 命名空间:选择命名空间,选择后,可设置当前工作负载的容器组和该命名空间下容器组的亲和关系
          • 命名空间选择器:用户也可以通过命名空间选择器来选择命名空间,支持按标签选择,或按标签表达式选择
            • 匹配标签:填写标签键、值,系统将自动选择包含该标签的命名空间;如填写多个标签,命名空间必须同时包含这些标签才会被选择
            • 匹配标签表达式:填写标签表达式键、值、操作符,系统将自动选择符合该标签表达式的命名空间;如同时填写多个标签表达式,命名空间必须同时符合这些标签表达式才会被选择
            Note: 如不手动选择命名空间,也不使用命名空间选择器匹配命名空间,系统将默认选择当前工作负载所在的命名空间
          • 容器组选择器:用于选择容器组。当前命名空间下的容器组将和此处选择的容器组调度到同一个节点上。支持按标签选择,或按标签表达式选择
            • 匹配标签:填写标签键、值,系统将自动选择包含该标签的容器组;如填写多个标签,容器组必须同时包含这些标签才会被选择
            • 匹配标签表达式:填写标签表达式键、值、操作符,系统将自动选择符合该标签表达式的容器组;如同时填写多个标签表达式,容器组必须同时符合这些标签表达式才会被选择
              Note: 如不手动选择,当前容器组将和已选命名空间下的任意一个容器组调度到同一个节点
    • 容器组反亲和性:可选项,设置当前工作负载下各容器组的反亲和关系,或当前工作负载与其他工作负载容器组的反亲和关系,用于指定它们是否被调度到不同的节点上
    • 添加方式:支持两种亲和性添加方式:基本、高级
      • 选择基本方式时,请设置以下参数:
        • 工作负载:选择工作负载,支持选择当前工作负载或其他工作负载
          • 选择当前工作负载,表示将当前工作负载下的容器组分散调度到不同的节点上
          • 选择其他工作负载,表示将当前工作负载下的容器组和指定工作负载下的容器组调度到不同的节点上
      • 选择高级方式时,请设置以下参数:
        • 亲和策略:选择亲和策略。支持强制、非强制两种策略:
          • 强制:该反亲和性必须被满足
          • 非强制:该反亲和性尽量被满足,无法满足时,部分容器组可能被调度到相同的节点上
        • 权重:设置反亲和性权重,亲和策略为非强制时,需设置该参数
        • 命名空间:选择命名空间,选择后,可设置当前工作负载的容器组和该命名空间下容器组的反亲和关系
        • 命名空间选择器:用户也可以通过命名空间选择器来选择命名空间,支持按标签选择,或按标签表达式选择
          • 匹配标签:填写标签键、值,系统将自动选择包含该标签的命名空间;如填写多个标签,命名空间必须同时包含这些标签才会被选择
          • 匹配标签表达式:填写标签表达式键、值、操作符,系统将自动选择符合该标签表达式的命名空间;如同时填写多个标签表达式,命名空间必须同时符合这些标签表达式才会被选择
          Note: 如不手动选择命名空间,也不使用命名空间选择器匹配命名空间,系统将默认选择当前工作负载所在的命名空间
        • 容器组选择器:用于选择容器组。当前命名空间下的容器组将和此处选择的容器组调度到不同的节点上。支持按标签选择,或按标签表达式选择
          • 匹配标签:填写标签键、值,系统将自动选择包含该标签的容器组;如填写多个标签,容器组必须同时包含这些标签才会被选择
          • 匹配标签表达式:填写标签表达式键、值、操作符,系统将自动选择符合该标签表达式的容器组;如同时填写多个标签表达式,容器组必须同时符合这些标签表达式才会被选择
            Note: 如不手动选择,当前容器组不会和所选命名空间下的任何容器组调度到同一个节点
    • 容忍:可选项,设置工作负载容器组对节点污点的容忍策略,设置后,容器组将允许被调度到包含污点的节点上
      • :填写需要容忍的污点的键,如留空不填,默认匹配所有污点的键
      • 操作:选择污点匹配方式。如选择Equal,则需进一步匹配污点的值和效果;如选择Exist,则需进一步匹配污点的效果
      • :填写需要容忍的污点的值,仅操作Equal时,需要设置该参数
      • 效果:填写需要容忍的污点效果,请填写与污点实际配置一致的效果。污点可能被配置以下效果:
        • 不调度 (NoSchedule):系统不会将容器组调度到该节点上,除非容器组配置了与该污点及污点效果匹配的容忍策略;已调度到该节点上的容器组不会被驱逐。
        • 尽量不调度 (PreferNoSchedule):系统尽量避免将容器组调度到该节点上,除非容器组配置了与该污点及污点效果匹配的容忍策略;该效果不能完全避免容器组被调度到该节点上。
        • 不调度且驱逐已有容器组 (NoExecute):系统不会将容器组调度到该节点上,并会在设置的容忍时间结束后,驱逐该节点上已有的容器组,除非容器组配置了与该污点及污点效果匹配的容忍策略。
      • 容忍时间:容忍效果为NoExecute时,需设置该参数,污点节点上已有的容器组将在容忍时间结束后被驱逐。单位:秒
        Note:
        • 如不设置,则默认可以一直容忍,该节点上已有的容器组不会被驱逐。
        • 如设置为0或负数,该节点上已有的容器组将被立即驱逐。
    • 服务名称:默认为工作负载名称,可修改为其他值,仅工作负载类型为 StatefulSet 支持该参数。校验规则:输入内容需在 1-63 字符范围内,只能包含小写字母、数字及特殊字符 "-",且必须以小写字母开头,以数字或小写字母结尾
      Note: 服务名称即 serviceName,如需使用 Headless 类型的服务需配置该字段,且 Headless类型的服务的名称需与该字段值保持一致。
    • 网络配置:可选项,设置工作负载使用的网络。默认使用原生 Kubernetes 容器网络。
      • 使用主机网络:可选,开启主机网络(hostNetwork),容器组与宿主机共享网络并占用宿主机端口。
        Note:
        1. 开启使用主机网络时,请确保副本数不超过集群总节点数,避免因端口冲突导致容器组启动失败。
        2. 使用主机网络时,网络策略对容器组不生效。
      • 网络类型:选择网络类型,支持仅容器组网络、仅容器组外部网络、容器组网络和外部网络3种类型
        Note:
        • 容器组网络指原生 Kubernetes 容器网络,仅支持Kubernetes集群内访问。
        • 容器组外部网络支持 Kubernetes 集群外直接访问容器组 IP。
        • 工作负载的网络类型为仅容器组外部网络时,不支持使用 LoadBalancer 类型的服务。
        • 只有当工作负载的网络类型为仅容器组网络时,才支持微服务治理功能。
      • 容器组外部网络:网络类型为仅容器组外部网络或容器组网络和外部网络时,需选择要使用的容器组外部网络段
    • 更新策略:可选项,设置工作负载更新的策略。不同类型的工作负载,需设置的参数不同
      • 工作负载类型为Deployment时,参数如下:
        • 更新方式:选择工作负载更新的方式,可选:滚动更新、重新创新
        • 最大超出副本数:可选项,设置更新过程中允许超出期望容器组副本数的最大数量或百分比,即 maxSurge。默认为 25%,单位可选:%、个。当更新方式为滚动更新时可设置该参数
        • 最大不可用副本数:可选项,设置更新过程中允许的不可用容器组副本的最大数量或百分比,即 maxUnavailable。默认为25%,单位可选:%、个。当更新方式为滚动更新时可设置该参数
          Note: 最大超出副本数和最大不可用副本数不可同时设置为0。
        • 最短就绪时间:设置在容器组准备就绪后被视为可用的最短等待时间,即 minReadySeconds。单位为秒
        • 更新超时时间:在标记 Deployment 失败之前,等待更新进行的超时时间,即 progressDeadlineSeconds。默认为600秒
          Note: 更新超时时间必须大于最短就绪时间
        • 保留历史版本数量:设置工作负载要保留的历史版本数量,默认为10。可在工作负载详情页查看工作负载历史版本
      • 工作负载类型为StatefulSet时,参数如下:
        • 更新方式:选择工作负载更新的方式,可选:滚动更新、手动删除后更新
        • 分割点:即partition,可选项,如设置分割点,则更新 StatefulSet 时只更新序号大于等于分割点的容器组。当更新方式为滚动更新时可设置该参数
          Note: 当分割点设置大于 StatefulSet 的副本数时,则 StatefulSet 不会被更新
        • 容器组管理策略:即 podManagementPolicy,可选项,定义扩缩容时扩缩容容器组的策略,可选:顺序、并行
        • 保留历史版本数量:设置工作负载要保留的历史版本数量,默认为10。可在工作负载详情页查看工作负载历史版本
      • 工作负载类型为DaemonSet时,参数如下:
        • 更新方式:选择工作负载更新的方式,可选:滚动更新、手动删除后更新
        • 最大超出副本数:设置更新过程中允许超出期望容器组副本数的最大数量或百分比,即 maxSurge。默认为 0个,单位可选:%、个。当更新方式为滚动更新时需设置该参数
        • 最大不可用副本数:设置更新过程中允许的不可用容器组副本的最大数量或百分比,即 maxUnavailable。默认为1个,单位可选:%、个。当更新方式为滚动更新时需设置该参数
          Note: 最大超出副本数和最大不可用副本数必须同时有且仅有1个为0。
        • 最短就绪时间:设置在容器组准备就绪后被视为可用的最短等待时间,即 minReadySeconds。单位为秒
        • 保留历史版本数量:设置工作负载要保留的历史版本数量,默认为10。可在工作负载详情页查看工作负载历史版本
    图 4所示:
    图 4. 高级配置






  5. 确认信息

    查看将要创建的工作负载,支持跳转修改。

    图 5所示:
    图 5. 确认信息




管理工作负载

ZStack Zaku主菜单,点击容器编排 > 应用管理 > 工作负载,进入工作负载界面。

工作负载支持以下操作:

操作 描述
创建工作负载 创建一个新的工作负载。
修改工作负载 通过表单形式更新工作负载配置。
更新镜像 更新工作负载容器镜像。
更新Yaml 通过Yaml形式更新工作负载配置。
重启工作负载 重启工作负载。
Note:
  • 重启后,系统将根据更新策略为工作负载创建新的容器组,并将当前容器组删除。该过程可能造成业务中断,请谨慎操作。
  • 如工作负载为Deployment类型,且挂载独享盘类型的数据卷,请通过手动删除其下容器组的方式实现重启。
弹性伸缩 调整工作负载副本数,支持手动伸缩和自动伸缩两种伸缩方式。
  • 自动伸缩支持CPU目标利用率、内存目标利用率两个触发指标。
工作负载详情 进入工作负载详情页,查看工作负载的基本信息、容器组、历史版本、事件,及其他关联资源,包括:服务、数据卷等。
回滚工作负载 将工作负载回滚到指定版本,系统将按照回滚的版本配置重建工作负载。
Note: 执行该操作,请进入工作负载详情页,点击历史版本 > 操作 > 回滚
删除工作负载 将工作负载从集群删除。
导出工作负载信息 将工作负载信息导出为CSV文件。支持导出当前页、全部

任务

概述

任务负责批量处理短暂的业务,并保证用于批处理业务的一个或多个容器组成功终止,包括一次性任务和定时任务两种类型。

任务类型

  • 一次性任务:即Kubernetes中的Job,仅处理一次性的短暂业务,业务成功完成后,负责运行这些业务的容器组会自动退出并删除。
  • 定时任务:即Kubernetes中的Cronjob,在Job的基础上添加了时间的概念。定时任务会按照指定的时间周期,重复运行相同的业务,例如数据卷备份、发送邮件等。

批处理业务与长期伺服业务

  • 批处理业务:批处理业务有明确的运行始终,一旦业务成功完成,容器组就会停止运行。在ZStack Zaku中,这类业务和运行它们的容器组由任务管理。
  • 长期伺服业务:长期伺服业务没有明确的运行终止,只要用户不停止,就会永远运行下去。在ZStack Zaku中,这类业务和运行它们的容器组由Deployment或Statefulset类型的工作负载管理。

创建任务

ZStack Zaku主菜单,点击容器编排 > 应用管理 > 任务,进入任务界面。点击创建任务,弹出创建任务界面。

创建任务分为以下五步:
  1. 基础信息
    可参考以下示例输入相应内容:
    • 名称:设置任务名称。命名规则:长度限制2-50字符,输入内容只能包含小写字母、数字及分隔符 (-),且必须以小写字母开头,以数字或小写字母结尾
      Note: 同一个命名空间下,同一类型的任务不能使用相同的名称。
    • 类型:选择任务类型,支持Job (一次性任务) 和CronJob (定时任务) 两种类型
    图 1所示:
    图 1. 基础信息


  2. 任务配置
    可参考以下示例输入相应内容:
    • 并发策略:仅CronJob类型的任务需要设置此参数,用于定义定时任务中,新旧任务时间冲突时的处理策略,支持Forbid、Allow、Replace三种策略:
      • Forbid:前一个任务没有完成时,不会创建新的任务。
      • Allow:已到达新任务时间点,但前一个任务没有完成时,允许创建新的任务,新旧任务并行运行。
      • Replace:已到达新任务时间点,但前一个任务没有完成时,将创建新的任务并取代前一个任务。
    • 任务计划:仅CronJob类型的任务需要设置此参数,用于定义定时任务的执行周期。支持按分钟、小时、天、周、月等单位快速选择,或自定义规则,自定义规则需遵循Cron时间表语法
      Note: 任务默认按UTC时间执行,请考虑所属时区的时差因素。
    • 任务记录:可选项,CronJob类型的任务可设置此项,用于定义在任务详情页保留的成功/失败执行记录条数。默认保留成功记录3条,失败记录1条
    • 期望完成数:可选项,默认为1,设置任务结束前,需要成功运行完的容器组个数
    • 并发数:可选项,默认为1,设置同时运行的容器组个数
    • 超时时间:可选项,设置任务超时时间,如超过该时间任务还未结束,系统将尝试终止任务中的全部容器组,单位:秒
    • 最大重试次数:可选项,默认为6,设置任务尝试执行的次数上限,超过该上限后,任务不会继续尝试执行
    • 重启策略:设置容器组故障时的重启策略,支持Never和Onfailure两种策略
      • Never:容器组故障时不会重启,系统将创建新的容器组
      • Onfailure:容器组故障时将尝试重启内部容器
    图 2所示:
    图 2. 任务配置


  3. 容器配置
    可参考以下示例输入相应内容:
    • 镜像来源:选择容器镜像来源,支持本地仓库和外部仓库两种镜像来源
      如选择本地仓库,将使用已上传到ZStack Zaku本地仓库的镜像创建容器,请设置以下参数:
      • 镜像:选择容器镜像
      • 镜像标签:选择镜像标签
      如选择外部仓库,将从ZStack Zaku外的仓库拉取镜像创建容器,请设置以下参数:
      • 镜像:输入详细的镜像地址,例如:docker.io/library/nginx:latest
      • 镜像拉取保密字典:如镜像所属的外部仓库是私有仓库,需选择保密字典用于镜像仓库认证
    • 资源申请:可选项,设置容器CPU/内存申请值。CPU单位:核,内存单位:Mi、Gi
      Note:
      • CPU/内存申请值是容器所需的最小CPU/内存值,进行容器调度时,只有当节点可分配CPU/内存总量≥容器CPU/内存申请值时,容器才会被调度到该节点上。
      • CPU/内存申请值不能大于CPU/内存限制值。
      • CPU/内存申请值不能大于当前命名空间的CPU/内存限额,否则工作负载将创建失败。
      • 如不设置,CPU/内存申请值默认等于CPU/内存限制值。
      • 支持同时设置CPU申请值和内存申请值,也可单独设置CPU申请值或内存申请值。
    • 资源限制:可选项,设置容器CPU/内存限制值。CPU单位:核,内存单位:Mi、Gi
      Note:
      • CPU/内存限制值是容器可使用的最大CPU/内存限制,生产环境建议设置CPU/内存限制值,避免容器资源超额造成系统故障。
      • 容器已使用CPU/内存超过限制值时可能会触发容器组重启,影响工作负载正常运行,请根据实际情况设置限制值。
      • 如不设置,容器将使用当前命名空间的默认资源限制。
      • 支持同时设置CPU限制值和内存限制值,也可单独设置CPU限制值或内存限制值。
    • 启动命令:可选项,设置容器启动时运行的命令,例如:/bin/sh。如留空不填,容器启动时将运行镜像默认命令
    • 启动参数:可选项,设置启动命令的参数,支持添加多个参数,并用半角逗号 (,) 隔开
    • 环境变量:可选项,添加容器环境变量
      • :填写环境变量键,只能包含字母数字及特殊字符 (-)(_)(.)
      • :填写环境变量值
    • 存活探针:选择是否开启存活探针,判断容器是否存活,检测到未存活时,容器将自动重启。开启存活探针需设置以下参数:
      • 探测方式:选择探测方式,支持HTTP请求、TCP连接、自定义命令三种探测方式:
        • HTTP请求:该方式主要用于探测提供HTTP/HTTPS服务的容器,集群将周期性向容器发起HTTP/HTTPS GET请求,如收到的返回码在200~399范围内,则为探测成功,否则为探测失败。选择HTTP请求方式,需设置以下参数:
          • 协议:选择探测协议,支持HTTP、HTTPS两种协议类型
          • 路径:可选项,输入探测路径
          • 端口:输入探测端口
          • 请求头:可选项,输入探测请求头

            示例:选择HTTP协议,探测路径填写/healthcheck,探测端口填写8080,容器IP为192.168.0.32,则集群将向http://192.168.0.32:8080/healthcheck发起周期性GET请求

        • TCP连接:该方式主要用于探测提供TCP服务的容器,集群将周期性向容器建立TCP连接,如连接成功,则为探测成功,否则为探测失败。选择TCP连接方式,需设置以下参数:
          • 端口:输入建立TCP连接使用的端口
        • 自定义命令:该方式需自定义一个容器可执行的命令,集群将周期性地在容器内执行该命令,如命令返回结果为0,则为探测成功,否则为探测失败。选择自定义命令方式,需设置以下参数:
          • 自定义探测命令:输入自定义探测命令
      • 初次探测延时时间:设置初次探测延时时间,初次探测将在容器启动且延时时间结束后进行,默认为3秒
      • 探测频率:设置探测频率,默认每10秒探测一次
      • 超时时间:设置探测超时等待时间,默认为1秒
      • 探测失败阈值:设置允许的探测失败次数,默认为3次。达到设置的次数上限时,将认定应用容器未存活,容器将自动重启
    • 就绪探针:选择是否开启就绪探针,判断容器是否准备就绪并可对外提供服务,检测到未就绪时,流量不会被转发到该容器。开启就绪探针需设置以下参数:
      • 探测方式:选择探测方式,支持HTTP请求、TCP连接、自定义命令三种探测方式:
        • HTTP请求:该方式主要用于探测提供HTTP/HTTPS服务的容器,集群将周期性向容器发起HTTP/HTTPS GET请求,如收到的返回码在200~399范围内,则为探测成功,否则为探测失败。选择HTTP请求方式,需设置以下参数:
          • 协议:选择探测协议,支持HTTP、HTTPS两种协议类型
          • 路径:可选项,输入探测路径
          • 端口:输入探测端口
          • 请求头:可选项,输入探测请求头

            示例:选择HTTP协议,探测路径填写/healthcheck,探测端口填写8080,容器IP为192.168.0.32,则集群将向http://192.168.0.32:8080/healthcheck发起周期性GET请求

        • TCP连接:该方式主要用于探测提供TCP服务的容器,集群将周期性向容器建立TCP连接,如连接成功,则为探测成功,否则为探测失败。选择TCP连接方式,需设置以下参数:
          • 端口:输入建立TCP连接使用的端口
        • 自定义命令:该方式需自定义一个容器可执行的命令,集群将周期性地在容器内执行该命令,如命令返回结果为0,则为探测成功,否则为探测失败。选择自定义命令方式,需设置以下参数:
          • 自定义探测命令:输入自定义探测命令
      • 初次探测延时时间:设置初次探测延时时间,初次探测将在容器启动且延时时间结束后进行,默认为3秒
      • 探测频率:设置探测频率,默认每10秒探测一次
      • 超时时间:设置探测超时等待时间,默认为1秒
      • 探测失败阈值:设置允许的探测失败次数,达到设置的次数上限时,将认定容器未就绪,流量不会被转发到该容器。默认为3次
      • 探测成功阈值:设置容器被认定为就绪前,需完成的最小成功探测次数,默认为1次,如设置为2次,则该容器需被连续探测成功2次,才能被认定为就绪
    图 3所示:
    图 3. 容器配置




  4. 资源挂载
    • 挂载数据卷:为任务挂载数据卷,提供持久化存储。点击添加数据卷,参考以下示例输入相应内容:
      • 数据卷:选择数据卷,仅支持选择当前任务所在命名空间下的数据卷
        Note: 一个数据卷只能同时挂载到一个任务
      • 挂载路径:设置数据卷在容器上的挂载路径
      • 权限:设置数据卷权限,包括只读、读写两种权限
    • 挂载配置集:挂载配置集到容器,为任务添加配置数据。点击添加配置集,参考以下示例输入相应内容:
      • 配置集:选择配置集
      • 挂载内容:选择需要挂载的内容,可选择挂载配置集下的全部键,或仅挂载一个或多个特定键
        如选择挂载全部,需设置以下参数:
        • 挂载路径:设置配置集在容器上的挂载路径,配置集下的每个键都会在该路径下生成一个配置文件,文件名称为键名,文件内容为键值
        如选择挂载特定键,需设置以下参数:
        • :选择特定键
        • 挂载路径:设置该键在容器上的挂载路径
        • 子路径:选择是否启用子路径,默认不启用
          • 如启用子路径,该键将在挂载路径倒数第二级下生成一个配置文件,配置文件名为挂载路径的最后一级,文件内容为键值。例如,填写挂载路径为/data/config.conf,则该键会在容器/data/目录下生成一个名为config.conf的文件,/data/目录下原有文件不会被覆盖。
          • 如不启用子路径,该键将在挂载路径最后一级下生成一个配置文件,文件名为键名,文件内容为键值,挂载路径下原有文件将被覆盖。
    • 挂载保密字典:挂载保密字典到容器。点击添加保密字典,参考以下示例输入相应内容:
      • 保密字典:选择保密字典
      • 挂载内容:选择需要挂载的内容,可选择挂载保密字典下的全部键,或仅挂载一个或多个特定键
        如选择挂载全部,需设置以下参数:
        • 挂载路径:设置保密字典在容器上的挂载路径,保密字典下的每个键都会在该路径下生成一个配置文件,文件名称为键名,文件内容为键值
        如选择挂载特定键,需设置以下参数:
        • :选择特定键
        • 挂载路径:设置该键在容器上的挂载路径
        • 子路径:选择是否启用子路径,默认不启用,子路径定义和用法与挂载配置集时的子路径相同
    图 4所示:
    图 4. 资源挂载


  5. 高级配置
    可参考以下示例输入相应内容:
    • GPU配置:默认关闭,如需使用 GPU 资源则开启,需设置以下参数:
      • GPU厂商:选择要使用的 GPU 卡的厂商,当前支持 NVIDIA、华为、海光、天数四个厂商
        • GPU厂商选择NVIDIA时,请设置以下参数:
          • GPU卡选择方式:选择GPU卡选择方式,支持三种以下方式:不指定GPU卡、指定GPU型号、指定GPU卡
            • 不指定GPU卡 :即不指定容器组需要使用的 GPU 卡,由平台根据 GPU 资源配置调度到任意满足 GPU 资源配置的 GPU 上
            • 指定GPU型号 :选择一个或多个 GPU 型号,工作负载容器组将被调度到所选型号的满足 GPU 资源配置的 GPU 卡上
            • 指定GPU卡 :选择一个或多个 GPU 卡,工作负载容器组将被调度到所选 GPU 卡中满足 GPU 资源配置的 GPU 卡上
          • GPU型号/GPU卡:指定 GPU 型号或 GPU 卡
          • GPU数:设置容器需要使用的 GPU 卡的数量
            Note: 容器只能使用容器组所在节点的 GPU 卡,不能跨节点使用。
          • 每GPU显存:设置容器需使用的单张 GPU 卡的显存大小。单位可选:Gi、Mi
            Note:
            • 如 GPU数设置大于1时,每张 GPU 卡都会申请每GPU显存大小的 GPU。
            • 每GPU显存不能超出单张 GPU 卡的最大显存。
          • 每GPU算力百分比:设置容器需使用的单张 GPU 卡的算力百分比
            Note:
            • 如 GPU数设置大于1时,每张 GPU 卡都可使用到每GPU算力百分比的算力。
            • 如未设置每GPU算力百分比,则默认为0,容器组可能调度到任意满足显存需求的 GPU 上。
            • 容器以共享的方式使用 GPU 卡,若需要独享,可将每GPU算力百分比设置为 100% 。
        • GPU厂商选择华为时,请设置以下参数:
          • GPU型号:选择要使用的 GPU 卡的型号,可选型号为当前集群下所有的华为 GPU 卡型号
          • GPU数:设置容器需要使用的 GPU 卡的数量
            Note: 容器只能使用容器组所在节点的 GPU 卡,不能跨节点使用。
          • 独享GPU卡:选择是否独享GPU卡。默认关闭,则容器以共享方式使用 GPU 卡,如需使用整卡则可开启该配置
            Note: 华为不支持多卡共享,即GPU数配置大于 1 时,只能独享 GPU 卡
          • 每GPU显存:选择容器需使用到的单张 GPU 卡的显存大小
            Note: 华为只允许按照固定的几种规格切分 GPU 卡,且显存对应的 AI Core 核数也是固定的,不同的 GPU 卡切分规格不一样,具体规格参考每GPU显存下拉框所示。
        • GPU厂商选择海光时,请设置以下参数:
          • GPU型号:选择要使用的 GPU 卡的型号,可选型号为当前集群下所有的海光 GPU 卡型号
            Note: 如命名空间配置了海光 GPU 显存配额,则独享 GPU 卡时必须指定 GPU 型号,否则容器组将创建失败。
          • GPU数:设置容器需要使用的 GPU 卡的数量
            Note: 容器只能使用容器组所在节点的 GPU 卡,不能跨节点使用。
          • 独享GPU卡:选择是否独享GPU卡。默认关闭,则容器以共享方式使用 GPU 卡,如需使用整卡则可开启该配置
            Note: 海光不支持多卡共享,即GPU数配置大于 1 时,只能独享 GPU 卡
          • 每GPU显存:填写容器需使用到的单张 GPU 卡的显存大小。单位可选:Gi、Mi
            Note: 每GPU显存不能超出单张 GPU 卡的最大显存。
          • 每GPU算力百分比:设置容器需使用的单张 GPU 卡的算力百分比
        • GPU厂商选择天数时,请设置以下参数:
          • GPU型号:选择要使用的 GPU 卡的型号,可选型号为当前集群下所有的天数 GPU 卡型号
          • GPU数:设置容器需要使用的 GPU 卡的数量
            Note: 容器只能使用容器组所在节点的 GPU 卡,不能跨节点使用。
          • 独享GPU卡:选择是否独享GPU卡。默认关闭,则容器以共享方式使用 GPU 卡,如需使用整卡则可开启该配置
            Note: 天数不支持多卡共享,即GPU数配置大于 1 时,只能独享 GPU 卡
          • 每GPU显存:填写容器需使用到的单张 GPU 卡的显存大小。单位可选:Gi、Mi
            Note: 天数要求每GPU显存的大小必须是 256Mi 的整数倍。
          • 每GPU算力百分比:设置容器需使用的单张 GPU 卡的算力百分比
          Note: 如需使用天数GPU,需将天数软件栈lib库预加载到容器中。
        • GPU厂商选择阿里巴巴时,请设置以下参数:
          • GPU卡选择方式:配置GPU选择方式,支持以下三种方式:不指定、指定GPU、排除GPU
            • 不指定 :默认从所有 GPU 中,选择符合资源配置的 GPU 进行分配
            • 指定GPU :仅从指定的 GPU 范围内,选择符合资源配置的 GPU 分配,若范围内无符合条件的 GPU 则分配失败
            • 排除GPU :不会选择排除的 GPU,从其余 GPU 中选择符合资源配置的设备分配
          • 指定GPU卡/排除GPU卡:选择要指定/排除的GPU卡
          • GPU数:设置容器需要使用的 GPU 卡的数量
            Note: 容器只能使用容器组所在节点的 GPU 卡,不能跨节点使用。
          • 每GPU显存:设置容器需使用的单张 GPU 卡的显存大小。单位可选:Gi
            Note: 每GPU显存不能超出单张 GPU 卡的最大显存。
          • 每GPU算力百分比:设置容器需使用的单张 GPU 卡的算力百分比
            Note: 容器默认以共享方式使用 GPU 卡,若需实现 GPU 独享,可将每GPU显存设为该卡最大显存,并将每GPU算力百分比设置为 100%。
    图 5所示:
    图 5. 高级配置


  6. 确认信息

    查看将要创建的任务,支持跳转修改。

    图 6所示:
    图 6. 确认信息




管理任务

ZStack Zaku主菜单,点击容器编排 > 应用管理 > 任务,进入任务界面。

任务支持以下操作:
操作 描述
创建任务 创建一个新任务。
更新Yaml 通过Yaml形式更新任务。
Note: 仅定时任务 (CronJob) 支持更新。
启用任务 将一个已停用的任务启用。
Note: 仅定时任务 (CronJob) 支持启用。
停用任务 将一个已启用的任务停用。
Note: 仅定时任务 (CronJob) 支持停用。
任务详情 进入任务详情页,查看任务概览、执行记录、容器组信息和其他关联资源,如数据卷。
删除任务 将任务从集群删除。

容器组

概述

容器组 (Pod) 是集群调度和管理的最小单元,同一容器组中的容器共享相同的网络和存储。通常情况下,一个容器组中只运行一个容器,但在多个容器需耦合工作、共享资源的场景下,一个容器组中也可能运行多个容器。

ZStack Zaku中,容器组实际运行用户的应用程序,由工作负载或任务来管理。实际使用时,用户在创建工作负载或任务的过程中,即可创建对应的容器组,很少直接创建容器组。

管理容器组

ZStack Zaku主菜单,点击容器编排 > 应用管理 > 容器组,进入容器组界面。

容器组支持以下操作:

操作 描述
查看Yaml 查看容器组的Yaml。
打开终端连接 进入容器终端。
查看监控 跳转查看容器组监控面板。
查看日志 跳转查看容器日志,并可将日志导出到本地保存。
容器组详情 进入容器组详情页,查看容器组基本信息、资源申请、监控数据、容器列表、事件和其他关联资源,如存储卷。
保存容器为镜像 基于当前容器生成镜像并上传到本地仓库。
Note:
  • 执行该操作,需进入容器组详情页,点击容器 > 操作 > 保存为镜像
  • 仅运行中的镜像支持该操作。
删除容器组 删除容器组。
  • 直接创建的容器组将被彻底删除。
  • 通过工作负载或任务创建的容器组删除后,会自动创建新的容器组。此场景下删除操作等同于重启容器组。
导出容器组信息 将容器组信息导出为CSV文件。支持导出当前页、全部