
# 有状态负载
 #### 创建有状态工作负载
1. （可选）若基于我的镜像创建工作负载，用户首先需要将镜像上传至容器镜像服务，上传镜像的方式请参见[镜像管理](https://support.huaweicloud.com/usermanual-swr/swr_01_0028.html)。若基于开源镜像中心创建工作负载，则无需上传镜像。
2. 在集群控制台选择"工作负载 \> 有状态负载"，单击"镜像创建"。
3. 参照[表1]设置基本信息，其中带"\*"标志的参数为必填参数。
   
    表1工作负载基本信息 
   | 参数      | 参数说明                                                                                                                                                                                                               |
   |:---|:---|
   | \* 负载名称 | 新建工作负载的名称，命名必须唯一。                                                                                                                                                                                                  |
   | 集群名称    | 新建工作负载所在的集群，无需填写。                                                                                                                                                                                                  |
   | \* 命名空间 | 在单集群中，不同命名空间中的数据彼此隔离。使应用可以共享同个集群的服务，也能够互不干扰。若您不设置命名空间，系统会默认使用default命名空间。                                                                                                                                          |
   | \* 实例数量 | 工作负载的实例数量。工作负载可以有一个或多个实例，用户可以设置具体实例个数，默认为2，可自定义设置为1。 每个工作负载实例都由相同的容器部署而成。设置多个实例主要用于实现高可靠性，当某个实例故障时，工作负载还能正常运行。若使用单实例，节点异常或实例异常会导致服务异常。 |
   | 描述      | 工作负载描述信息。                                                                                                                                                                                                          |
   | 时区同步    | 容器将和节点使用相同时区。时区同步功能开启后，在"数据存储 \> 本地磁盘"中，将会自动添加HostPath类型的磁盘，请勿修改删除该磁盘。                                                                                                                                             |
      
   
   
4. 设置工作负载容器配置。 
   Pod中可以配置多个容器，您可以单击右侧"添加容器"为Pod配置多个容器并分别进行设置。
   图1容器配置   
   ![](https://support.huaweicloud.com/usermanual-ucs/zh-cn_image_0000002133208897.png "点击放大")
   - 容器信息：Pod中可以配置多个容器，您可以单击右侧"添加容器"为Pod配置多个容器。
     - 基本信息：请参见[表2]。
        表2基本信息参数说明 
       | 参数    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
       |:---|:---|
       | 容器名称  | 为容器命名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
       | 镜像名称  | 单击后方"选择镜像"，选择容器使用的镜像。 - 我的镜像：当前区域下镜像仓库中的镜像。若无可用的镜像，可单击"上传镜像"进行上传。  - 镜像中心：开源镜像仓库中的官方镜像。  - 共享镜像：由他人账号共享的私有镜像，详情请参见[共享私有镜像](https://support.huaweicloud.com/usermanual-swr/swr_01_0026.html)。   |
       | 镜像版本  | 选择需要部署的镜像版本。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
       | 更新策略  | 镜像更新/拉取策略。勾选"总是拉取镜像"表示每次都从镜像仓库拉取镜像；如不勾选则优先使用节点已有的镜像，如果没有这个镜像再从镜像仓库拉取。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
       | CPU配额 | - 申请：容器需要使用的最小CPU值，默认0.25Core。  - 限制：允许容器使用的CPU最大值。建议设容器配额的最高限额，避免容器资源超额导致系统故障。                                                                                                                                                                                                                                                                                                                                                                                                         |
       | 内存配额  | - 申请：容器需要使用的内存最小值，默认512MiB。  - 限制：允许容器使用的内存最大值。如果超过，容器会被终止。   关于CPU/内存配额申请和限制的具体说明请参见[设置容器规格](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0147.html)。                                                                                                                                                                                                                                                                                                                        |
       | 异构资源  | 当已安装[gpu-device-plugin插件](https://support.huaweicloud.com/usermanual-ucs/ucs_10_0141.html)时，可配置GPU限制值，详情请参见[GPU调度](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0295.html)。 当已安装[huawei-npu插件](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0024.html)时，可配置NPU限制值，详情请参见[NPU调度](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0021.html)。 说明： 异构资源该参数，当前仅涉及本地集群工作负载。                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
       | 初始化容器 | 选择容器是否作为初始化容器。 Init 容器是一种特殊容器，在 Pod 内的应用容器启动之前运行。详细说明请参见[Init 容器](https://kubernetes.io/zh/docs/concepts/workloads/pods/init-containers/)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
       | 特权容器  | 特权容器是指容器里面的程序具有一定的特权。 若选中，容器将获得超级权限，例如可以操作宿主机上面的网络设备、修改内核参数等。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
          
       
     
     - 生命周期：设置生命周期回调函数可在容器的特定阶段执行调用，比如容器在停止前希望执行某项操作，就可以设置相应的函数。目前提供的生命周期回调函数有启动命令、启动后处理、停止前处理，详情请参见[设置容器生命周期](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0148.html)。
     
     - 健康检查：设置健康检查可以在容器运行过程中定时检查容器的健康状况，详情请参见[设置容器健康检查](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0149.html)。
     
     - 环境变量：容器运行环境中设定的一个变量，通过环境变量设置的配置项不会随着Pod生命周期结束而变化，详情请参见[设置环境变量](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0150.html)。
     
     - 数据存储：配置容器存储，可以使用本地存储和存储卷声明（PVC）。建议使用PVC将工作负载Pod数据存储在云存储上。若存储在本地磁盘上，节点异常无法恢复时，本地磁盘中的数据也将无法恢复。容器存储相关内容请参见[容器存储](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0112.html)。
     
     - 安全设置：对容器权限进行设置，保护系统和其他容器不受其影响。请输入用户ID，容器将以当前用户权限运行。
      
   
   
   
   - 镜像访问凭证：用于访问镜像仓库的凭证。该凭证仅访问私有镜像仓库时使用，如所选镜像为公开镜像，则无需选择密钥。密钥的创建方法请参见[创建密钥](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0115.html)。
    
   
   
5. 设置工作负载实例间发现服务配置。 
   StatefulSet实例间发现通过无头服务（Headless Service）实现，无头服务并不会分配 Cluster IP，并且查询会返回所有Pod的DNS记录，这样就可查询到所有Pod的IP地址。
   - Service名称：输入工作负载所对应的服务名称，用于集群内工作负载间的互相访问。该服务主要用于实例的内部发现，不需要有单独的IP地址，也不需要做负载均衡。
   
   - 端口配置：
     - 端口名称：端口名称用于给容器端口命名，通常以端口用途命名。
     
     - 服务端口：输入服务端口。
     
     - 容器端口：输入容器的监听端口。
      
   
   
   
   
6. （可选）单击服务配置栏的![](https://support.huaweicloud.com/usermanual-ucs/zh-cn_image_0000001317957925.png "点击放大")，进行工作负载服务配置。
   
   若工作负载需要和其它服务互访，或需要被公网访问，您需要添加服务（Service），设置访问方式。工作负载访问的方式决定了这个工作负载的网络属性，不同访问方式的工作负载可以提供不同网络能力，操作详情请参见[服务](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0110.html)。
   您也可以在创建完工作负载之后再创建Service，参见[集群内访问（ClusterIP）](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0110.html#ucs_01_0110__zh-cn_topic_0000001258156072_section3959435152917)和[节点访问（NodePort）](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0110.html#ucs_01_0110__zh-cn_topic_0000001258156072_section16547755192910)。
   - Service名称：新增服务名称，用户可自定义，服务名称必须唯一。
   
   - 访问类型：
     - 集群内访问（ClusterIP）：只能集群内访问服务。
     
     - 节点访问（NodePort）：可以通过集群内任意节点访问到服务。
     
     - 负载均衡（LoadBalancer）：通过弹性负载均衡从公网访问到工作负载。
      
   
   - 服务亲和（仅节点访问、负载均衡设置）：
     - 集群级别：集群下所有节点的IP+访问端口均可以访问到此服务关联的负载，服务访问会因路由跳转导致一定性能损失，且无法获取到客户端源IP。
     
     - 节点级别：只有通过负载所在节点的IP+访问端口才可以访问此服务关联的负载，服务访问没有因路由跳转导致的性能损失，且可以获取到客户端源IP。
      
   
   - 端口配置：
     - 协议：TCP或UDP，请根据业务的协议类型选择。
     
     - 服务端口：容器端口映射到集群虚拟IP上的端口，用虚拟IP访问应用时使用，端口范围为1-65535，可任意指定。
     
     - 容器端口：容器镜像中应用程序实际监听的端口，需用户确定。例如：nginx程序实际监听的端口为80。
     
     - 节点端口（仅节点访问设置）：容器端口映射到节点私有IP上的端口，用私有IP访问应用时使用，端口范围为30000-32767，建议选择"自动生成"。
       - 自动生成：系统会自动分配端口号。
       
       - 指定端口：指定固定的节点端口，默认取值范围为30000-32767。若指定端口时，请确保同个集群内的端口唯一性。
        
      
   
   - 注解：支持key/value对格式，请您根据自身业务以及厂家要求进行注解配置，填写完成后单击"添加"。
   
   
   
   
7. （可选）单击"展开高级配置"，设置工作负载高级配置。 
   - 升级策略：指定有状态负载的升级方式，包括整体替换升级和逐步滚动升级，详细参数说明请参见[工作负载升级配置](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0151.html)。
     - 滚动升级：滚动升级将逐步用新版本的实例替换旧版本的实例，升级的过程中，业务流量会同时负载均衡分布到新的和旧的实例上，因此业务不会中断。
     
     - 替换升级：有状态工作负载的替换升级，需要手动删除旧实例，再创建新实例。升级过程中业务会中断。
      
   
   - 实例管理策略：
     - 有序策略：默认实例管理策略，有状态负载会逐个的、按顺序的进行部署、删除、伸缩实例, 只有前一个实例部署Ready或者删除完成后，有状态负载才会操作后一个实例。
     
     - 并行策略：支持有状态负载并行创建或者删除所有的实例，有状态负载发生变更时立刻在实例上生效。
      
   
   - 调度策略：您可设置亲和（affinity）与反亲和（anti-affinity）实现Pod的计划性调度，详细信息请参见[调度策略（亲和与反亲和）](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0152.html)。
   
   - 标签与注解：您可以单击"添加"为Pod增加标签或注解，新增标签或注解的键不能与已有的重复。
   
   - 容忍策略：当工作负载实例所在的节点不可用时，系统将实例重新调度到其它可用节点的时间窗，默认为300秒。
     - 容忍策略与节点的污点能力配合使用，允许（不强制）负载调度到带有与之匹配的污点的节点上，也可用于控制负载所在的节点被标记污点后负载的驱逐策略，详细内容请参考[示例教程](https://kubernetes.io/zh-cn/docs/concepts/scheduling-eviction/taint-and-toleration/#example-use-cases)。
     
     - 单击"容忍策略"下的![](https://support.huaweicloud.com/usermanual-ucs/zh-cn_image_0000001804415254.png)，可新增策略。相关参数说明见[容忍策略](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0399.html)。
      
   
   
   
   
8. 配置完成后，单击"创建工作负载"。返回有状态工作负载列表查看工作负载状态。 
   在工作负载列表中，待工作负载状态为"运行中"，工作负载创建成功。
   
   
 
#### 相关操作
通过集群控制台，您还可以执行[表3]中的操作。
 表3相关操作 
| 操作      | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|
| YAML创建  | 单击右上角"YAML创建"，可使用已有的YAML创建工作负载。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 查看Pod详情 | 单击已创建工作负载的名称，在"实例列表"页签下，可以查看Pod相关详情信息。 - 事件：可以设置查询条件，比如设置事件产生的时间段或搜索事件名称，查看相关事件。  - 容器列表：可以查看相应实例的容器名称、状态、镜像以及启停次数等。  - 查看YAML：可以查看相应实例的YAML文件。   |
| 编辑YAML  | 单击工作负载名称后的"编辑YAML"，可查看并编辑当前工作负载的YAML文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 升级      | 1. 单击工作负载名称后的"升级"。  2. 更改工作负载信息。  3. 单击"升级工作负载"提交已修改的信息。                                                                               |
| 回退      | 单击工作负载名称后的"回退"，选择一个历史版本进行回退。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 重新部署    | 单击工作负载名称后的"更多 \> 重新部署"，并单击"是"进行确认，重新部署将重启负载下的全部容器组Pod。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 关闭升级    | 单击工作负载名称后的"更多 \> 关闭升级"，并单击"是"进行确认。 - 工作负载标记为"升级已关闭"后，对其进行的升级将不会被应用到实例。  - 正在进行中的滚动升级也会被暂停。                                                                                                                        |
| 删除      | 单击工作负载名称后的"更多 \> 删除"，并单击"是"进行确认。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 批量删除    | 1. 勾选需要删除的工作负载。  2. 单击左上角的"批量删除"。  3. 单击"是"进行确认。                                                                                           |
   
