You need to enable JavaScript to run this app.
导航
创建无状态负载
最近更新时间:2024.08.07 11:18:26首次发布时间:2023.02.09 10:25:42

在运行中始终不保存任何数据或状态的工作负载称为无状态负载,对应 Kubernetes 中的 Deployment。本文描述了如何通过边缘智能控制台创建并部署无状态负载。

前提条件

  • 您已经为项目绑定了节点。相关操作,请参见绑定节点
  • 您已获取应用镜像的 URL。您可以将制作好的应用镜像托管在某个镜像仓库,获取镜像的 URL。我们推荐您将镜像托管到火山引擎镜像仓库

操作步骤

  1. 登录边缘智能控制台

  2. 在左侧导航栏顶部的 我的项目 区域,选择您的项目。

  3. 在左侧导航栏,选择 应用管理 > 工作负载

  4. 单击 无状态负载 页签。

  5. 单击 创建工作负载

  6. 创建工作负载 对话框,选择一种创建方式,然后单击 确定
    可选择的创建方式包括:

    • 快捷创建:通过配置参数指定工作负载的相关属性。
    • YAML创建:通过 YAML 文件指定工作负载的相关属性。

快捷创建

根据以下说明,完成 创建工作负载 配置向导:

  1. 配置工作负载
    完成工作负载相关参数的配置,然后单击 下一步:配置部署节点
    图片

    工作负载配置包括 基础信息容器配置高级配置发布策略 配置。

    • 基础信息

      配置项

      说明

      名称

      为工作负载设置一个名称。您可以使用以下字符:英文字母、数字、汉字、下划线(_)和连字符(-)。请注意以下规则:

      • 长度限制为 32 个字符以内。
      • 下划线和连字符不能用在开头或结尾,也不能连续使用。
      • 同一个边缘智能项目中,工作负载名称不允许重复。

      描述

      为工作负载添加描述。长度不超过 128 个字符。

      是否使用模板

      选择是否使用应用模板。
      如果选择使用模板,需从 模板 下拉列表中选择一个模板。选择模板后,将自动填充模板的配置信息。如无可用模板,可单击 创建模板 进行模板创建。
      只有创建模板并发布模板版本后,才可以选择对应的模板。相关操作,请参见创建应用模板创建模板版本

      说明

      • 使用模板创建的工作负载与模板关联。如果模板信息发生变化,将自动同步到对应工作负载上。
      • 您可以为工作负载更换模板的版本。

      副本数

      设置工作负载在节点中运行的副本总数。取值范围:1~10。

    • 容器配置

      类型

      配置项

      说明

      容器

      N/A

      单击左侧的 + 添加容器,可以添加多个容器。
      选择一个容器后,需要完成以下容器配置。

      基本信息

      容器名称

      为容器设置名称。您可以使用以下字符:小写英文字母、数字和连字符(-)。请注意以下规则:

      • 长度不超过 128 个字符。
      • 连字符不能用在开头或结尾。
      • 同一个工作负载下,容器名称不允许重复。

      镜像地址

      输入镜像的 URL 地址。地址需符合 URL 格式。长度不超过 1024 个字符。

      说明

      您可以将制作好的应用镜像托管在某个镜像仓库,获取镜像的 URL。我们推荐您将镜像托管到火山引擎镜像仓库

      仓库密钥

      针对私有镜像仓库,可设置仓库密钥,以获得镜像访问权限。
      选择已有的仓库密钥或单击 创建仓库密钥,按如下说明在 创建仓库密钥 对话框补充镜像仓库的密钥:

      • 名称:容器使用的镜像的仓库名称。
        以使用镜像仓库 CR 中的镜像为例,则此处填写镜像所在的 OCI 制品仓库名称。
      • 仓库域名:填写镜像仓库域名,示例:cr-cn-beijing.volces.com
      • 用户名:登录镜像仓库的用户名。
        以使用镜像仓库 CR 中的镜像为例,则此处填写镜像所在实例的登录用户名。可在 镜像仓库控制台 目标实例的 概览 页面获取。
      • 密码:镜像仓库登录用户名对应的密码。

      注意

      不使用免密组件,且需要拉取私有镜像时,必须配置该参数。

      资源配额

      按照业务需求,在容器维度配置 CPU 和内存的上下限,保障容器的健康运行。

      注意

      如果不设置资源配额和限额,则 K8s 会尽最大可能向工作负载提供资源,但是相应的优先级会降低。例如,另一个配置了资源配额和限额的工作负载,会更容易抢占到资源。

      • CPU配额:容器需要使用的最小 CPU 核数。单位:Core。使用一位小数表示。取值范围:0.1 ~ 128.0。
      • CPU限额:允许容器使用的最大 CPU 核数。单位:Core。使用一位小数表示。取值范围:0.1 ~ 128.0。
        如果 CPU 超过限额,容器会被终止。
      • 内存配额:容器需要使用的最小内存值。单位:MB 或 GB。使用整数表示。取值范围:0 MB ~128 GB。
      • 内存限额:允许容器使用的内存最大值。单位:MB 或 GB。使用整数表示。取值范围:0 MB ~128 GB。
        如果内存超过限额,容器会被终止。

      特权级容器

      默认不开启。开启后特权级容器表示赋予该容器特权,允许访问宿主机全部资源。支持部署在 Linux 系统上的容器控制网络堆栈或访问设备。

      Init容器

      默认不开启。开启后表示将该容器设置为Init容器。Init容器是 Pod 中运行在应用容器前的容器,并且它可以包括仅在安装过程中使用的工具(例如 python、dig)和代码,避免在应用容器中的重复部署,提升应用镜像的安全性。
      Init容器不支持设置生命周期管理中的启动后处理、停止前处理,不支持开启健康检查。

      容器端口

      端口

      支持将容器内端口号与宿主机的端口号进行映射。支持 UDP 和 TCP 两种协议。单击 + 添加端口映射。可以添加多个端口映射。

      环境变量

      环境变量

      支持手动设置环境变量和引用实例字段作为环境变量。Kubernetes 在创建 Pod 时,会将环境变量的信息注入到容器中。
      单击 + 添加一个环境变量。您可以添加多个环境变量。
      对于 手动配置 类型的环境变量,您需要设置环境变量的 变量名变量值;对于 实例字段 类型的环境变量,您需要设置环境变量的 变量名 并选择一个实例字段作为 变量值。可选择的实例字段包括:

      • metadata.name:工作负载的名称。
      • metadata.namespace:工作负载所处的命名空间。
      • spec.nodeName:工作负载所处的节点。
      • spec.serviceAccountName:所使用的服务账号。
      • status.hostIP:工作负载所处节点的 IP。
      • status.podIP:工作负载中 Pod 的 IPv4 地址。
      • status.podIPs:工作负载中 Pod 的 IPv4 和 IPv6 地址。

      存储配置

      存储卷

      在容器中存储数据分两步:先在 Pod 定义存储卷,也就是添加存储卷,然后在容器挂载卷。
      单击 添加存储卷,添加存储卷。存储卷是容器中存储数据的位置。为一类数据分配存储资源前,需要先在容器中指定待存储数据的目录。
      可以添加的存储卷分为以下类型:

      • 临时目录:在临时目录下添加存储卷。
      • 主机目录:在主机下的指定目录下添加存储卷。
      • 配置文件:配置文件对应 K8s 中的 ConfigMap 对象。
        您必须先在 配置管理 页面创建一个配置文件,然后可以将配置文件作为数据卷挂载。
      • 密钥文件:密钥文件对应 K8s 中的 Secret 对象。
        您必须先在 配置管理 页面创建一个密钥文件,然后可以将该密钥文件作为数据卷挂载。

      挂载卷

      支持将宿主机的卷挂载到容器上,可以挂载多个卷。
      单击 添加挂载卷,为已创建的卷分配存储资源,并分配读写权限。
      支持通过 subPath 方式挂载卷的子目录;支持通过 subPathExpr 方式挂载卷的扩展路径。

      设备挂载

      设备挂载

      选择是否开启设备挂载。
      开启设备挂载表示允许容器使用宿主机的设备资源。

      生命周期

      启动命令

      • 运行命令:输入容器启动前运行的命令。多行命令使用换行符分隔。
      • 运行参数:输入容器启动前所运行命令的参数。

      启动后处理

      输入容器启动后需要运行的命令。多行命令使用换行符分隔。

      停止前处理

      输入容器停止需要运行的命令。多行命令使用换行符分隔。

    • 高级配置

      配置项

      说明

      DNS配置

      为工作负载选择一种 DNS 策略。可选项:

      • ClusterFirst(默认):在该模式下,会将 Kube-dns 或 CoreDNS 的信息当作预设置参数,写入到该 Pod 内的 DNS 配置。
      • Default:在该模式下,Pod 里面的 DNS 配置继承了边缘节点上的 DNS 配置。即该 Pod 的 DNS 配置与边缘节点完全一致。
      • ClusterFirstWithHostNet:在该模式下, 边缘节点上的 DNS 配置与 Kube-dns 同时作为 Pod 的预设 DNS 配置。
    • 发布策略

      配置项

      说明

      发布策略

      选择一种发布策略。可选项:

      • 滚动发布:用新版本的 Pod 逐步替换旧版本的 Pod。升级的过程中,业务流量会同时负载均衡分布到新版本和旧版本的 Pod 上,因此业务不会中断。选择该策略后,还需要设置以下参数:
        • 滚动数量:扩容过程中,工作负载中可用的 Pod 的数量的上限。
        • 最大不可用:缩容过程中,工作负载中不可用的 Pod 的数量占总 Pod 数量(副本数)的比例上限。
      • 重建:先把工作负载的老版本 Pod 删除,再安装指定的新版本 Pod。升级过程中业务会中断。

      标签

      为工作负载添加标签。您可以使用标签来标识一个 Pod 所属的应用程序、环境、版本等信息,从而方便您查找和管理 Pod。标签的示例:environment: productionapp:nginx
      标签由键值对(key-value)组成,其中键和值都是字符串类型。

      • 标签 key 包含两个部分:可选的前缀和标签名。这两部分之间使用斜杠(/)分隔。
        • 标签名部分是必须的。
          标签名允许使用英文字母、数字、连字符(-)、下划线(_)和半角句号(.)。长度不超过 63 个字符。连字符、下划线和半角句号不允许用在开头和结尾。
        • 标签前缀部分是可选的。
          标签前缀是由半角句号(.)连接的一组 DNS 标签,长度不超过 253 个字符。 如果省略标签前缀,则标签的 key 将被认为是专属于用户的。
      • 标签 value 是必须的。
        允许使用英文字母、数字、连字符(-)、下划线(_)和半角句号(.)。长度不超过 63 个字符。连字符、下划线和半角句号不允许用在开头和结尾,并且不能连用。

      最多允许为工作负载指定 64 个标签。

  2. 配置部署节点
    工作负载支持两种部署方式:部署到指定节点、部署到节点组。

    • 部署到指定节点:
      设置 配置部署节点,然后从 全部节点 列表选择一个或多个节点,以将工作负载部署到选择的节点。
    • 部署到节点组:
      设置 配置部署节点组,然后从 全部节点组 列表选择一个节点组,以将工作负载部署到该节点组包含的所有节点。
      选定节点或节点组后,单击 立即部署
      图片

创建工作负载后,您可以在工作负载列表查看工作负载的状态。当工作负载已经就绪,表示工作负载已成功部署到节点上。

YAML创建

根据以下说明,完成 创建工作负载 配置向导:

  1. 配置工作负载
    您需要提供编写好的 YAML 文件,通过 YAML 文件定义工作负载的规范和预期状态。从以下方式中选择一种方式,提供 Yaml 文件:

    • Yaml 输入框中填写 YAML 文件的内容。
    • 单击 Yaml 输入框旁边的上传图标,从本地上传编写好的 Yaml 文件。
      完成后单击 下一步:配置部署节点
      以下是一个示例 YAML 文件,用于创建一个无状态的 Nginx 工作负载:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 2
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            ports:
            - containerPort: 80
    

    在这个 YAML 文件中,我们定义了一个名为 nginx-deployment 的 Deployment 对象,它包含了 2 个 Pod 副本。每个 Pod 包含一个名为 nginx 的容器,使用最新版本的 Nginx 镜像,并将容器的端口映射到主机的 80 端口。

  2. 配置部署节点
    工作负载支持两种部署方式:部署到指定节点、部署到节点组。

    • 部署到指定节点:
      设置 配置部署节点,然后从 全部节点 列表选择一个或多个节点,以将工作负载部署到选择的节点。
    • 部署到节点组:
      设置 配置部署节点组,然后从 全部节点组 列表选择一个节点组,以将工作负载部署到该节点组包含的所有节点。
      选定节点或节点组后,单击 立即部署

创建工作负载后,您可以在工作负载列表查看工作负载的状态。当工作负载已经就绪,表示工作负载已成功部署到节点上。