本节介绍如何编辑已创建的工作负载的设置。

工作负载创建完成后,您可以编辑工作负载的更新策略、容器、存储和容器组调度规则。

前提条件

您需要加入一个集群并在集群中具有应用负载管理权限。有关更多信息,请参阅集群成员集群角色

操作步骤

  1. 以具有应用负载管理权限的用户登录 KubeSphere 企业版 Web 控制台并进入您的集群。

  2. 在左侧导航栏选择应用负载 > 工作负载

  3. 工作负载页面,点击部署有状态副本集守护进程集,然后在列表中点击一个工作负载的名称打开其详情页面。

  4. 在工作负载详情页面左上角选择更多操作 > 编辑设置

  5. 编辑设置对话框,分别设置工作负载的更新策略、容器、存储、容器组调度规则(对守护进程集不可用)、容器组优雅终止,然后点击确定。有关具体的参数设置方法,请参阅参数描述

参数描述

  • 更新策略

    设置容器组更新时采取的策略。

    参数描述

    滚动更新(推荐)

    用新容器组副本逐步替换旧容器组副本。升级过程中业务流量会负载均衡到新旧容器组副本上,业务不会中断。如果您选择此策略,您需要进一步设置最大不可用容器组数量最大多余容器组数量

    同时更新

    删除全部旧容器组副本再创建新容器组副本。升级过程中业务会中断。

  • 更新策略 > 滚动更新设置

    设置滚动更新策略的相关参数。

    参数描述

    最大不可用容器组数量

    更新过程中允许的不可用容器组副本的最大数量或百分比。

    最大多余容器组数量

    更新过程中允许的多余容器组副本的最大数量或百分比。

  • 容器 > 添加容器

    创建容器组中运行的容器。您可以在容器组中创建多个容器。

    • 点击添加容器可创建容器。

    • 将光标悬停在已创建的容器上,然后在右侧点击pen可编辑容器的设置。

    • 将光标悬停在已创建的容器上,然后在右侧点击trash-light可删除容器。

  • 容器 > 容器设置

    设置容器的镜像、名称、类型和资源。

    参数描述

    镜像

    创建容器所需的镜像。

    • 输入镜像的名称(例如 nginx:latest)或路径(例如 docker.io/nginx:latest),然后按 Enter 键可搜索镜像。

    • 如果您只输入镜像的名称,默认情况下将从 Docker Hub 拉取镜像。如需使用私有镜像服务,您需要创建包含私有镜像服务信息的保密字典,然后在镜像文本框左侧选择私有镜像服务。

    • 点击template可浏览当前镜像服务中的镜像。

    容器名称

    容器的名称。名称只能包含小写字母、数字和连字符(-),必须以小写字母或数字开头和结尾,最长 63 个字符。

    容器类型

    容器的类型。

    • 初始化容器:为工作容器进行初始化工作的容器。工作容器只有在所有初始化容器成功完成之后才会启动。如果初始化容器运行失败,系统会把容器组的状态设置为失败。

    • 工作容器:运行应用程序的容器。通常建议每个容器组中只运行一个工作容器。

    CPU 预留

    为容器预留的 CPU 资源,单位为核。

    CPU 上限

    允许容器使用的 CPU 资源上限,单位为核。

    内存预留

    为容器预留的内存资源,单位为 MiB。

    内存上限

    允许容器使用的内存资源上限,单位为 MiB。

    GPU 类型

    对容器上限使用量的 GPU 类型。目前仅支持设置 NVDIA GPU。

    GPU 上限

    允许容器使用的 GPU 数量上限,单位为 GPU。

  • 容器 > 容器设置 > 端口设置

    设置容器的端口。点击使用默认镜像端口可将容器端口设置为镜像的默认端口。点击添加端口可为容器设置多个端口。

    参数描述

    协议

    容器中的应用程序实际监听的协议。如需使用 KubeSphere 企业版提供的应用治理功能,请确保此处选择的协议与容器中的应用程序实际监听的协议保持一致。

    名称

    端口的名称。如需使用 KubeSphere 企业版提供的应用治理功能,请使用协议名称小写作为端口名称的前缀(例如 http-)。

    容器端口

    容器中的应用程序实际监听的端口号。

  • 容器 > 容器设置 > 镜像拉取策略

    设置容器组创建或更新时是否从镜像服务拉取镜像。

    参数描述

    优先使用本地镜像

    容器组创建或更新时,优先使用容器运行时存储在节点的镜像文件。

    每次都拉取镜像

    容器组创建或更新时,每次都尝试从镜像服务拉取镜像。

    仅使用本地镜像

    容器组创建或更新时,仅使用容器运行时存储在节点的镜像。如果本地不存在所需的镜像,容器创建将出现异常。

  • 容器 > 容器设置 > 健康检查

    检查容器的健康状态。使用此功能前,您需要在容器的应用程序中进行设置,使应用程序可以返回健康检查的结果。

    KubeSphere 企业版支持以下健康检查类型:

    参数描述

    存活检查

    检查容器是否存话。如果存活检查失败,系统将尝试重启容器。

    就绪检查

    检查容器是否已就绪。如果就绪检查失败,系统将禁止通过服务访问容器所在的容器组。

    启动检查

    检查容器是否已启动。如果启动检查失败,系统将禁用容器的其他探针,并尝试重启容器。

    KubeSphere 企业版支持以下检查方式:

    参数描述

    HTTP 请求

    向容器组的虚拟 IP 地址发送 HTTP GET 请求,如果响应状态码为 2XX 或 3XX 则表明检查成功。

    命令

    在容器中运行命令,如果命令的退出码为 0 则表明检查成功。

    TCP 端口

    尝试与指定的容器端口建立 TCP 连接,如果连接建立成功则表明检查成功。

  • 容器 > 容器设置 > 启动命令

    设置容器启动时在容器内部执行的命令。

    参数描述

    命令

    需要执行的命令的名称。

    参数

    需要执行的命令的参数。您可以使用半角逗号(,)分隔多个参数。

  • 容器 > 容器设置 > 环境变量

    设置容器的环境变量。

    • 点击添加环境变量可设置多个环境变量。

    • 点击批量引用可使用配置字典或保密字典中的数据创建环境变量。配置字典或密保字典必须与容器属于同一个项目才能被容器引用。容器创建后环境变量的值不会随配置字典或保密字典设置的变更而动态变化。

    • 在已创建的环境变量右侧点击trash-light可删除环境变量。

    参数描述

    环境变量的名称。

    环境变量的值。

    资源

    配置字典或保密字典的名称。仅在引用配置字典或保密字典时可用。

    资源中的键

    配置字典或保密字典中的键。与该键对应的值将被用作环境变量的值。仅在引用配置字典或保密字典时可用。

  • 容器 > 容器设置 > 容器安全上下文

    设置容器进程在 Linux 系统中的权限。

    参数描述

    访问控制

    容器进程的访问权限。

    • 特权模式:以主机上的 root 用户运行容器进程。

    • 允许特权提升:允许容器进程获取比父进程更多的特权。当特权模式启用时,此选项默认启用。

    • 根目录只读:将容器文件系统的根目录设置为只读。

    用户和用户组

    运行容器进程入口点的用户和用户组。

    • 仅允许非 root 用户运行:启动容器之前检查容器是否将以 root 用户运行。如果容器将以 root 用户运行则不启动容器。启用此功能时系统将忽略特权模式设置。

    • 用户:执行容器进程入口点的 UID。默认为镜像元数据中指定的 UID。

    • 用户组:执行容器进程入口点的 GID。默认为容器运行时的默认 GID。

    SELinux 上下文

    容器进程的 SELinux 标签,包括等级角色类型用户。有关更多信息,请参阅 SELinux 官方文档

    权能

    在 Linux 系统中对容器进程额外添加或移除的权限。请参阅 Linux 官方文档获取 Linux 进程的权能列表。

    • 为容器进程添加或移除权能时,您需要去掉权能名称中的 CAP_ 前缀。例如,在移除文本框中输入 SYS_TIME 可移除容器进程的 CAP_SYS_TIME 权能。

    • 点击添加可设置多条权能添加或移除指令。

  • 容器 > 容器设置 > 同步主机时区

    勾选同步主机时区左侧的复选框将使容器和主机的时区同步。

  • 存储

    为容器挂载卷、配置字典或保密字典。

    参数描述

    添加持久卷声明模板

    为有状态副本集添加持久卷声明模板。系统将为每个容器组副本单独创建持久卷声明和持久卷,并将持久卷分别挂载到每个容器组副本中的指定容器。仅对有状态副本集可用。

    挂载卷

    为容器挂载持久卷、临时卷或 HostPath 卷。

    挂载配置字典或保密字典

    将配置字典或保密字典中的数据作为卷挂载到容器。

    • 将光标悬停在已添加的卷上,然后在右侧点击pen可编辑卷的设置。

    • 将光标悬停在已挂载的卷上,然后在右侧点击trash-light可删除卷。

  • 存储 > 添加持久卷声明模板

    通过持久卷声明模板为每个容器组副本单独创建持久卷声明和持久卷,并将持久卷挂载到容器。仅对有状态副本集可用。

    参数描述

    PVC 名称前缀

    通过持久卷声明模板创建的持久卷声明的名称前缀。系统将按 <名称前缀>-<工作负载名称>-<序列号> 的格式自动命名持久卷声明。同一个有状态副本集不同容器组副本的持久卷声明通过 <序列号> 区分。

    存储类

    用于创建持久卷声明的存储类。

    访问模式

    持久卷的读写模式。

    • RWO(ReadWriteOnce):允许单个节点读取持久卷中的数据并向其中写入数据。

    • ROX(ReadOnlyMany):允许多个节点读取持久卷中的数据。

    • RWX(ReadWriteMany):允许多个节点读取持久卷中的数据并向其中写入数据。

    卷容量

    通过持久卷声明模板创建的每个持久卷的容量。

    挂载方式

    卷在容器上的挂载方式。

    • 读写:允许容器读取卷中的数据并向其中写入数据。

    • 只读:只允许容器读取卷中的数据。

    • 不挂载:卷不挂载到容器上。

    挂载路径

    卷挂载到容器上的路径。点击textfield可设置需要挂载的卷子路径。如果不设置子路径则默认挂载整个卷。

  • 存储 > 挂载卷 > 持久卷

    为容器挂载持久卷。用于创建持久卷的持久卷声明必须属于容器所在的项目。

    参数描述

    选择持久卷声明

    选择用于创建持久卷的持久卷声明。该持久卷声明必须属于容器所在项目。如果容器所在的项目中没有可用的持久卷声明,您需要提前创建一个持久卷声明。

    挂载方式

    卷在容器上的挂载方式。

    • 读写:允许容器读取卷中的数据并向其中写入数据。

    • 只读:只允许容器读取卷中的数据。

    • 不挂载:卷不挂载到容器上。

    挂载路径

    卷挂载到容器上的路径。点击textfield可设置需要挂载的卷子路径。如果不设置子路径则默认挂载整个卷。

  • 存储 > 挂载卷 > 临时卷

    为容器挂载临时卷。临时卷具有以下特点:

    • 由系统自动在容器组所在的节点的存储系统中创建。

    • 由系统自动管理,容量上限为节点的存储容量。

    • 无法保存持久化数据,容器组创建时由系统自动创建临时卷,容器组删除时由系统自动删除临时卷。

    参数描述

    卷名称

    临时卷的名称。

    挂载方式

    卷在容器上的挂载方式。

    • 读写:允许容器读取卷中的数据并向其中写入数据。

    • 只读:只允许容器读取卷中的数据。

    • 不挂载:卷不挂载到容器上。

    挂载路径

    卷挂载到容器上的路径。点击textfield可设置需要挂载的卷子路径。如果不设置子路径则默认挂载整个卷。

  • 存储 > 挂载卷 > HostPath 卷

    将容器组所在的节点上的文件或目录挂载到容器上。

    • 不同节点上相同路径的文件或文件夹可能不同,因此不同节点上的容器组副本可能会从 HostPath 卷中读取到不同的数据。

    • 您需要确保被挂载的路径在容器组所在的节点上存在,并且容器组进程具有所需的权限,否则容器组进程将无法从 HostPath 卷上读取数据或向其中写入数据。

    参数描述

    卷名称

    HsotPath 卷的名称。

    主机路径

    节点上需要挂载的文件或文件夹的路径。

    挂载方式

    卷在容器上的挂载方式。

    • 读写:允许容器读取卷中的数据并向其中写入数据。

    • 只读:只允许容器读取卷中的数据。

    • 不挂载:卷不挂载到容器上。

    挂载路径

    卷挂载到容器上的路径。点击textfield可设置需要挂载的卷子路径。如果不设置子路径则默认挂载整个卷。

  • 存储 > 挂载配置字典或保密字典

    将配置字典或保密字典中的数据作为卷挂载到容器。

    参数描述

    选择配置字典/选择保密字典

    选择当前项目中的配置字典或保密字典。

    挂载方式

    设置配置字典或保密字典中的数据在容器上的挂载方式。配置字典和保密字典只支持以只读方式挂载或不挂载

    挂载路径

    设置配置字典或保密字典中的数据挂载到容器上的路径。

    • 系统将根据配置字典或保密字典中的数据生成一个文件夹,并将其中的每个键值对映射为一个文件,每个文件以键为文件名,值为文件的内容。

    • 点击textfield可指定配置字典或保密字典中的键值对作为文件挂载,如不设置子路径则默认挂载整个配置字典或保密字典。如果使用子路径,挂载到容器中的文件不会随配置字典或保密字典动态更新。

    选择特定键

    将配置字典或保密字典中的键值对作为文件挂载到容器中,挂载到容器中的文件会随配置字典或保密字典动态更新。点击添加可挂载多个键值对。

    • :配置字典或保密字典中的需要挂载的键值对的键名称。

    • 路径:容器中相对于挂载路径的路径。配置字典或保密字典中的指定键值对将挂载到该路径下,挂载路径中原有的文件将被覆盖。

  • 容器组调度规则

    设置容器组副本调度到节点的规则。

    参数描述

    默认规则

    不特别指定规则,由系统决定将容器组副本调度到哪个节点上。

    分散调度

    尽可能将容器组副本调度到不同的节点上。

    集中调度

    尽可能将容器组副本调度到同一个节点上。

    自定义规则

    按照用户自定义的规则将容器组副本调度到节点。如果选择此选项,您需要进一步自定义调度规则。

  • 容器组调度规则 > 自定义规则

    设置自定义的容器组调度规则。

    • 点击添加可以设置多条规则。

    • 在已创建的规则右侧点击trash-light可删除规则。

    参数描述

    类型

    规则的类型。

    • 与目标调度到一起:容器组副本将与当前项目中具特定标签的容器组调度到同一个节点。

    • 远离目标:容器组副本将与当前项目中具特定标签的容器组调度到不同节点。

    策略

    规则实施的策略。

    • 尽可能匹配:尽可能满足规则要求。如果规则要求无法得到满足,容器组副本将被调度到不满足规则要求节点上。

    • 必须匹配:必须满足规则要求。如果规则要求无法得到满足,容器组副本将不能调度到任何节点上。

    目标

    规则的目标。容器组副本将与具有 app=<target> 标签(<target> 为此处选择的值)的容器组调度到同一个节点或不同节点,取决于规则的类型和策略。

  • 容器组优雅终止

    设置容器终止前等待的时间,超时后容器将强制终止。默认取值为 30s。