更新时间:2021-11-02 GMT+08:00
分享

创建工作负载

工作负载即Kubernetes对一组Pod的抽象模型,用于描述业务的运行载体,包括Deployment、StatefulSet、Job等。

工作负载基本概念

  • 无状态工作负载(即Kubernetes中的Deployments):实例之间完全独立、功能相同,具有弹性伸缩、滚动升级等特性。如:nginx、wordpress,创建无状态工作负载请参见创建无状态工作负载
  • 有状态工作负载(即Kubernetes中的StatefulSets):实例之间不完全独立,具有稳定的持久化存储和网络标示,以及有序的部署、收缩和删除等特性。如:mysql-HA、etcd,创建有状态工作负载请参见创建有状态工作负载

工作负载与容器间的关系

图1所示,一个工作负载由一个或多个实例(Pod)组成。一个实例由一个或多个容器组成,每个容器都对应一个容器镜像。对于无状态工作负载,实例都是完全相同的。

图1 工作负载与容器的关系

工作负载生命周期说明

表1 状态说明

状态

说明

运行中

所有实例都处于运行中才是运行中。

未就绪

所有容器处于pending状态。

升级中

触发升级动作后,工作负载会处于升级中。

已停止

触发停止操作后,工作负载会处于停止状态,实例数变为0。

可用

当多实例无状态工作负载运行过程中部分实例异常,可用实例不为0,工作负载会处于可用状态。

删除中

触发删除操作后,工作负载会处于删除中状态。

创建无状态工作负载

  1. (可选)若基于我的镜像创建工作负载,用户首先需要将镜像上传至容器镜像服务,上传镜像的方式请参考镜像管理。若基于开源镜像中心创建工作负载,则无需上传镜像。
  2. 在集群控制台选择“工作负载 > 无状态(Deployment)”,单击“创建无状态工作负载”。
  3. 参照表2设置基本信息,其中带“*”标志的参数为必填参数。

    表2 工作负载基本信息

    参数

    参数说明

    * 名称

    新建工作负载的名称,命名必须唯一。

    * 集群名称

    新建工作负载所在的集群。

    * 命名空间

    在单集群中,不同命名空间中的数据彼此隔离。使应用可以共享同个集群的服务,也能够互不干扰。若您不设置命名空间,系统会默认使用default命名空间。

    * 实例数量

    工作负载的实例数量。工作负载可以有一个或多个实例,用户可以设置具体实例个数,默认为2,可自定义设置为1。

    每个工作负载实例都由相同的容器部署而成。设置多个实例主要用于实现高可靠性,当某个实例故障时,工作负载还能正常运行。若使用单实例,节点异常或实例异常会导致服务异常。

    描述

    工作负载描述信息。

  4. 单击“下一步”,添加容器。

    1. 单击“添加容器”,选择需要部署的镜像。
      • 我的镜像:按区域展示华为云镜像仓库的镜像。若无可用的镜像,可单击“上传镜像”进行上传。
        • 若您的镜像仓库不需要认证,密钥认证请选择“否”,选择对应镜像,单击“确定”
        • 若您的镜像仓库都必须经过认证(帐号密码)才能访问,请选择密钥,单击“确定”。若无密钥,请参照创建密钥创建。
      • 开源镜像中心:展示了开源镜像仓库中的官方镜像。
        • 若您的镜像仓库不需要认证,密钥认证请选择“否”,选择对应镜像,单击“确定”
        • 若您的镜像仓库都必须经过认证(帐号密码)才能访问,请选择密钥,单击“确定”。若无密钥,请参照创建密钥创建。
      • 第三方镜像:MCP支持拉取第三方镜像仓库(即华为云镜像仓库与开源镜像仓库之外的镜像仓库)的镜像创建工作负载。使用第三方镜像时,请确保工作负载运行的节点可访问公网。
        • 若您的镜像仓库不需要认证,密钥认证请选择“否”,并输入“镜像地址”,单击“确定”
        • 若您的镜像仓库都必须经过认证(帐号密码)才能访问,请选择密钥,并输入“镜像地址”,单击“确定”。
    2. 配置镜像参数。
      表3 添加容器参数说明

      参数

      说明

      镜像名称

      导入的镜像,您可单击“更换镜像”进行更换。

      镜像版本

      若选择我的镜像或开源镜像中心,请选择需要部署的镜像版本。

      容器名称

      容器的名称,可修改。

      容器规格

      申请和限制的含义如下,详情请参见设置容器规格
      • 申请:表示容器运行所需最少资源。
      • 限制:若担心容器超载,导致系统故障。建议设置容器配额的最高限制。确保容器资源不会超额。
    3. 配置生命周期:用于管理容器各阶段需要执行的命令。
      • 启动命令:设置容器启动时执行的命令,详情请参见设置容器启动命令
      • 启动后处理:设置容器成功运行后执行的命令,详细配置方法请参见设置容器生命周期
      • 停止前处理:设置容器结束前执行的命令,通常用于删除日志/临时文件等,详细配置方法请参见设置容器生命周期
    4. 设置健康检查:用于判断容器和用户业务是否正常运行。设置了存活与业务两种探针,详细配置方法请参见容器健康检查
      • 工作负载存活探针:监测到容器实例不健康时,重启应用。
      • 工作负载业务探针:监测到容器实例不健康时,将工作负载设置为未就绪状态,业务流量不会导入到该容器中。
    5. 设置环境变量:在容器中添加环境变量,一般用于通过环境变量设置参数。

      “环境变量”页签,单击“添加环境变量”

    6. 安全设置:对容器权限进行设置,保护系统和其他容器不受其影响。

      请输入用户ID,容器将以当前用户权限运行。

    7. 数据存储:给容器挂载数据存储,适用于需持久化存储、高磁盘IO等场景。详细配置请参见存储声明

    负载创建完成后,您可以登录集群控制台,在工作负载详情页,容器设置页签,单击“修改容器设置”,修改本步骤设置的参数。

  5. 单击“下一步”,单击“添加服务”,设置工作负载访问方式。

    若工作负载需要和其它服务互访,或需要被公网访问,您需要添加服务,设置工作负载访问方式。

    工作负载访问的方式决定了这个工作负载的网络属性,不同访问方式的工作负载可以提供不同网络能力。详情请参见网络管理

    • ClusterIP访问

      表示工作负载暴露给同一集群内其他工作负载访问的方式,可以通过“集群内部域名”访问。集群内部域名格式为“<自定义的访问方式名称>.<工作负载所在命名空间>.svc.cluster.local”,例如“nginx.default.svc.cluster.local”

    • NodePort访问

      指工作负载可以让同一虚拟私有云内其他工作负载访问,通过“集群节点的IP”访问,主要场景:云上同一虚拟私有云内其他工作负载需要访问Kubernetes集群内部的工作负载。

    • LoadBalancer访问

      通过弹性负载均衡从公网访问工作负载,与弹性IP方式相比提供了高可靠的保障,一般用于系统中需要暴露到公网的服务。访问方式由公网弹性负载均衡ELB服务地址以及设置的访问端口组成,例如“10.117.117.117:80”

  6. 单击“下一步”,配置高级设置。

    • 升级策略:支持“替换升级”“滚动升级”
      • 替换升级:先删除旧实例,再创建新实例。升级过程中业务会中断。
      • 滚动升级:滚动升级将逐步用新版本的实例替换旧版本的实例,升级的过程中,业务流量会同时负载均衡分布到新的和旧的实例上,因此业务不会中断。

        最大无效实例数:每次滚动升级允许的最大无效实例数,如果等于实例数有断服风险(最小存活实例数 = 实例数 - 最大无效实例数)。

    • 缩容策略:输入时间。工作负载停止前命令的执行时间窗(0-9999秒),默认30秒。
    • 迁移策略:输入时间。工作负载实例所在的节点不可用的情况下,将工作负载实例重新调度到其它可用节点的时间窗,默认300秒。
    • 调度策略:您可以根据需要自由组合静态的全局调度策略或动态的运行时调度策略来实现自己的需求。详情请参见调度策略概述
    • Pod标签:内置app标签在工作负载创建时指定,暂不支持修改。您可以单击下方的“添加标签”增加标签。

  7. 配置完成后,单击“创建”。返回无状态工作负载列表查看工作负载状态。

    在工作负载列表中,待工作负载状态为“运行中”,工作负载创建成功。

创建有状态工作负载

  1. (可选)若基于我的镜像创建工作负载,用户首先需要将镜像上传至容器镜像服务,上传镜像的方式请参考镜像管理。若基于开源镜像中心创建工作负载,则无需上传镜像。
  2. 在集群控制台选择“工作负载 > 有状态(StatefulSet)”,单击“创建有状态工作负载”。
  3. 参照表4设置基本信息,其中带“*”标志的参数为必填参数。

    表4 工作负载基本信息

    参数

    参数说明

    * 名称

    新建工作负载的名称,命名必须唯一。

    * 集群名称

    新建工作负载所在的集群。

    * 命名空间

    在单集群中,不同命名空间中的数据彼此隔离。使应用可以共享同个集群的服务,也能够互不干扰。若您不设置命名空间,系统会默认使用default命名空间。

    * 实例数量

    工作负载的实例数量。工作负载可以有一个或多个实例,用户可以设置具体实例个数,默认为2,可自定义设置为1。

    每个工作负载实例都由相同的容器部署而成。设置多个实例主要用于实现高可靠性,当某个实例故障时,工作负载还能正常运行。若使用单实例,节点异常或实例异常会导致服务异常。

    描述

    工作负载描述信息。

  4. 单击“下一步”,添加容器。

    1. 单击“添加容器”,选择需要部署的镜像。
      • 我的镜像:按区域展示华为云镜像仓库的镜像。若无可用的镜像,可单击“上传镜像”进行上传。
        • 若您的镜像仓库不需要认证,密钥认证请选择“否”,选择对应镜像,单击“确定”
        • 若您的镜像仓库都必须经过认证(帐号密码)才能访问,请选择密钥,单击“确定”。若无密钥,请参照创建密钥创建。
      • 开源镜像中心:展示了开源镜像仓库中的官方镜像。
        • 若您的镜像仓库不需要认证,密钥认证请选择“否”,选择对应镜像,单击“确定”
        • 若您的镜像仓库都必须经过认证(帐号密码)才能访问,请选择密钥,单击“确定”。若无密钥,请参照创建密钥创建。
      • 第三方镜像:MCP支持拉取第三方镜像仓库(即华为云镜像仓库与开源镜像仓库之外的镜像仓库)的镜像创建工作负载。使用第三方镜像时,请确保工作负载运行的节点可访问公网。
        • 若您的镜像仓库不需要认证,密钥认证请选择“否”,并输入“镜像地址”,单击“确定”
        • 若您的镜像仓库都必须经过认证(帐号密码)才能访问,请选择密钥,并输入“镜像地址”,单击“确定”。
    2. 配置镜像参数。
      表5 添加容器参数说明

      参数

      说明

      镜像名称

      导入的镜像,您可单击“更换镜像”进行更换。

      镜像版本

      若选择我的镜像或开源镜像中心,请选择需要部署的镜像版本。

      容器名称

      容器的名称,可修改。

      容器规格

      申请和限制的含义如下,详情请参见设置容器规格
      • 申请:表示容器运行所需最少资源。
      • 限制:若担心容器超载,导致系统故障。建议设置容器配额的最高限制。确保容器资源不会超额。
    3. 配置生命周期:用于管理容器各阶段需要执行的命令。
      • 启动命令:设置容器启动时执行的命令,详情请参见设置容器启动命令
      • 启动后处理:设置容器成功运行后执行的命令,详细配置方法请参见设置容器生命周期
      • 停止前处理:设置容器结束前执行的命令,通常用于删除日志/临时文件等,详细配置方法请参见设置容器生命周期
    4. 设置健康检查:用于判断容器和用户业务是否正常运行。设置了存活与业务两种探针,详细配置方法请参见容器健康检查
      • 工作负载存活探针:监测到容器实例不健康时,重启应用。
      • 工作负载业务探针:监测到容器实例不健康时,将工作负载设置为未就绪状态,业务流量不会导入到该容器中。
    5. 设置环境变量:在容器中添加环境变量,一般用于通过环境变量设置参数。

      “环境变量”页签,单击“添加环境变量”

    6. 安全设置:对容器权限进行设置,保护系统和其他容器不受其影响。

      请输入用户ID,容器将以当前用户权限运行。

    7. 数据存储:给容器挂载数据存储,适用于需持久化存储、高磁盘IO等场景。详细配置请参见存储声明

    负载创建完成后,您可以登录集群控制台,在工作负载详情页,容器设置页签,单击“修改容器设置”,修改本步骤设置的参数。

  5. 单击“下一步”,设置实例间发现服务,如表6

    表6 实例间发现服务参数配置

    参数

    参数说明

    服务名称

    输入工作负载所对应的服务名称,用于集群内工作负载间的互相访问。该服务主要用于实例的内部发现,不需要有单独的IP地址,也不需要做负载均衡。

    端口名称

    端口名称用于给容器端口命名,通常以端口用途命名。

    容器端口

    输入容器的监听端口。

  6. 单击“添加服务”,设置工作负载访问方式。

    若工作负载需要和其它服务互访,或需要被公网访问,您需要添加服务,设置工作负载访问方式。

    工作负载访问的方式决定了这个工作负载的网络属性,不同访问方式的工作负载可以提供不同网络能力。详情请参见网络管理

    • ClusterIP访问

      表示工作负载暴露给同一集群内其他工作负载访问的方式,可以通过“集群内部域名”访问。集群内部域名格式为“<自定义的访问方式名称>.<工作负载所在命名空间>.svc.cluster.local”,例如“nginx.default.svc.cluster.local”

    • NodePort访问

      指工作负载可以让同一虚拟私有云内其他工作负载访问,通过“集群节点的IP”访问,主要场景:云上同一虚拟私有云内其他工作负载需要访问Kubernetes集群内部的工作负载。

    • LoadBalancer访问

      通过弹性负载均衡从公网访问工作负载,与弹性IP方式相比提供了高可靠的保障,一般用于系统中需要暴露到公网的服务。访问方式由公网弹性负载均衡ELB服务地址以及设置的访问端口组成,例如“10.117.117.117:80”

  7. 单击“下一步”,配置高级设置。

    • 升级策略:仅支持“滚动升级”

      滚动升级将逐步用新版本的实例替换旧版本的实例,升级的过程中,业务流量会同时负载均衡分布到新的和旧的实例上,因此业务不会中断。

    • 实例管理策略:支持有序策略和并行策略两种。

      有序策略:默认实例管理策略,有状态负载会逐个的、按顺序的进行部署、删除、伸缩实例,只有前一个实例部署Ready或者删除完成后,有状态负载才会操作后一个实例。

      并行策略:有状态负载并行创建或删除所有的实例,有状态负载发生变更时立刻在实例上生效。

    • 缩容策略:输入时间。工作负载停止前命令的执行时间窗(0-9999秒),默认30秒。
    • 迁移策略:输入时间。工作负载实例所在的节点不可用的情况下,将工作负载实例重新调度到其它可用节点的时间窗,默认300秒。
    • 调度策略:您可以根据需要自由组合静态的全局调度策略或动态的运行时调度策略来实现自己的需求。详情请参见调度策略概述
    • Pod标签:内置app标签在工作负载创建时指定,暂不支持修改。您可以单击下方的“添加标签”增加标签。

  8. 配置完成后,单击“创建”。返回有状态工作负载列表查看工作负载状态。

    在工作负载列表中,待工作负载状态为“运行中”,工作负载创建成功。

相关操作

单击已创建工作负载的名称,在“实例列表”页签下,单击实例名称前的,可以查看相关详情信息。

  • 事件:可以设置查询条件,比如设置事件产生的时间段或搜索事件名称,查看相关事件。
  • 容器:可以查看相应实例的容器名称、状态、镜像以及启停次数等。
  • 日志:可以查看并下载相应容器的日志信息。
  • 监控:若添加的集群为华为云集群时可以查看相应实例的CPU使用率、内存使用率。其他类型集群不支持此功能。
分享:

    相关文档

    相关产品

关闭导读