# 创建无状态负载（Deployment）
[无状态负载（Deployment）](https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/)是指在运行中不会保持任何数据或状态的应用，这些应用每个实例都是相同的，可以随时创建、销毁或替换，而不会影响应用的功能，非常适合一些不需要存储数据的应用，如Web前端服务器或一些微服务。您可以使用无状态工作负载很容易地管理应用程序的生命周期，包括更新、回滚、扩容等操作。
#### 前提条件
- 在创建工作负载前，您需要存在一个可用集群。若没有可用集群 ，请参照[购买Standard/Turbo集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0028.html)中内容创建。
- 工作负载需要运行在节点上，因此集群中需要包含可用节点。如果集群中无可用节点，请参见[创建节点](https://support.huaweicloud.com/usermanual-cce/cce_10_0363.html)进行创建。
 
#### 创建无状态负载
您可以通过控制台或kubectl命令行创建无状态负载。
- [通过控制台创建]
  1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)。
  
  2. 单击集群名称进入集群，在左侧选择"工作负载"，在右上角单击"创建工作负载"。
  
  3. 填写工作负载的**基本信息** 。
     
     
     | 参数     | 说明                                                                                                                                                       |
     |:---|:---|
     | 负载类型     | 选择无状态工作负载Deployment。关于不同工作负载类型的介绍请参见[工作负载概述](https://support.huaweicloud.com/usermanual-cce/cce_10_0006.html)。                                            |
     | 负载名称  | 填写工作负载的名称。请输入1到63个字符的字符串，可以包含小写英文字母、数字和中划线（-），并以小写英文字母开头，小写英文字母或数字结尾。                                                                                      |
     | 命名空间     | 选择工作负载的命名空间，默认为default。您可以单击后面的"创建命名空间"，命名空间的详细介绍请参见[创建命名空间](https://support.huaweicloud.com/usermanual-cce/cce_10_0278.html)。                               |
     | 实例数量    | 填写实例的数量，即工作负载Pod的数量。                                                                                                                                      |
     | 容器运行时 | 容器隧道网络CCE集群默认使用普通运行时，VPC网络CCE Standard集群和CCE Turbo集群可以使用普通运行时或安全运行时。具体区别请参见[安全运行时与普通运行时](https://support.huaweicloud.com/usermanual-cce/cce_10_0463.html)。 |
     | 时区同步  | 选择是否开启时区同步。开启后容器与节点使用相同时区（时区同步功能依赖容器中挂载的本地磁盘，请勿修改删除），时区同步详细介绍请参见[设置容器与节点时区同步](https://support.huaweicloud.com/usermanual-cce/cce_10_0354.html)。         |
        
     
     
  
  4. 填写工作负载的**容器配置** 。
     
     - 容器信息：Pod中可以配置多个容器，您可以单击右侧"添加容器"为Pod配置多个容器。
       ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/caution_3.0-zh-cn.png)
       单个Pod内如果配置了多个容器，请确保每个容器中使用的端口不冲突 ，否则工作负载将会部署失败。
       - 基本信息：配置容器的基本信息。
         
         | 参数            | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
         |:---|:---|
         | 容器名称         | 为容器命名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
         | 更新策略       | 镜像更新/拉取策略。可以勾选"总是拉取镜像"，表示每次都从镜像仓库拉取镜像；如不勾选则优先使用节点已有的镜像，如果没有这个镜像再从镜像仓库拉取。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
         | 镜像名称        | 单击后方"选择镜像"，选择容器使用的镜像。 - 容器镜像服务 共享版：提供简单易用、安全可靠的镜像管理功能。 - 我的镜像：可选择您上传的私有镜像。关于上传镜像的操作详情请参见[客户端上传镜像](https://support.huaweicloud.com/usermanual-swr/swr_01_0011.html)。  - 镜像中心：可选择SWR提供的公共镜像。关于镜像中心的说明请参见[镜像中心](https://support.huaweicloud.com/usermanual-swr/swr_01_0022.html)。  - 共享镜像：可选择由其他账号共享的镜像。关于共享镜像的操作详情请参见[共享私有镜像](https://support.huaweicloud.com/usermanual-swr/swr_01_0026.html)。    - 容器镜像服务 企业版：提供企业级的独享安全托管服务，支持镜像加签、镜像安全扫描，保障数据安全。 - 所属实例：选择企业版仓库实例，您需要提前购买一个企业版仓库，详情请参见[购买仓库](https://support.huaweicloud.com/usermanual2-swr/swr_02_0408.html)。  - 域名：企业版仓库支持配置多个自定义域名，您可以选择采用默认域名或自定义域名。关于自定义域名的操作详情请参见[域名管理](https://support.huaweicloud.com/usermanual2-swr/swr_02_0500.html)。     如果需要使用第三方镜像，可直接输入镜像地址，但需同时保证使用的[镜像访问凭证]可访问镜像仓库，详情请参见[使用第三方镜像](https://support.huaweicloud.com/usermanual-cce/cce_10_0009.html)。 如果使用SWR容器镜像服务企业版镜像，需同时保证使用的[镜像访问凭证]可访问SWR企业版镜像仓库，详情请参见[使用SWR企业版镜像仓库镜像](https://support.huaweicloud.com/usermanual-cce/cce_10_0948.html)。 |
         | 镜像版本       | 选择需要部署的镜像版本。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
         | CPU配额     | - 申请：容器需要使用的最小CPU值，默认0.25Core。  - 限制：允许容器使用的CPU最大值，防止占用过多资源。   如不填写申请值和限制值，表示不限制配额。申请值和限制值的配置说明及建议请参见[设置容器规格](https://support.huaweicloud.com/usermanual-cce/cce_10_0163.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
         | 内存配额      | - 申请：容器需要使用的内存最小值，默认512MiB。  - 限制：允许容器使用的内存最大值。如果超过，容器会被终止。   如不填写申请值和限制值，表示不限制配额。申请值和限制值的配置说明及建议请参见[设置容器规格](https://support.huaweicloud.com/usermanual-cce/cce_10_0163.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
         | GPU配额（可选） | 当集群中包含GPU节点时，才能设置GPU配额，且集群中需安装[CCE AI套件（NVIDIA GPU）](https://support.huaweicloud.com/usermanual-cce/cce_10_0141.html)插件。 - 不使用：表示不使用GPU。  - GPU 整卡：单个容器独享GPU。  - GPU 虚拟化：容器需要使用的GPU百分比，例如设置为10%，表示该容器需使用GPU资源的10%。   关于如何在集群中使用GPU，请参见[使用Kubernetes默认GPU调度](https://support.huaweicloud.com/usermanual-cce/cce_10_0345.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
         | NPU配额（可选）    | 当集群中包含NPU节点时，才能设置NPU配额，且集群中需安装[CCE AI套件（Ascend NPU）](https://support.huaweicloud.com/usermanual-cce/cce_10_0239.html)插件。 - 不使用：表示不使用NPU。  - NPU整卡调度：单个容器独享NPU芯片。  - NPU虚拟化：通过资源虚拟化的方式将物理机配置的NPU切分成若干份vNPU（虚拟NPU），再挂载到容器中使用。   关于如何在集群中使用NPU，请参见[NPU整卡调度](https://support.huaweicloud.com/usermanual-cce/cce_10_0346.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
         | 特权容器（可选）     | 特权容器是指容器里面的程序具有一定的特权。若选中，容器将获得超级权限，例如可以操作宿主机的网络设备、修改内核参数、以及访问节点上的所有设备等。 更多信息，请参见[Pod Security Standards](https://kubernetes.io/docs/concepts/security/pod-security-standards/)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
         | 初始化容器（可选）   | 选择容器是否作为初始化（Init）容器。初始化（Init）容器不支持设置健康检查。 Init容器是一种特殊容器，可以在Pod中的其他应用容器启动之前运行。每个Pod中可以包含多个容器，同时Pod中也可以有一个或多个先于应用容器启动的Init容器，当所有的Init 容器运行完成时，Pod中的应用容器才会启动并运行。详细说明请参见[Init 容器](https://kubernetes.io/zh/docs/concepts/workloads/pods/init-containers/)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
         | 容器启动项（可选）     | 为容器添加启动项参数，详情请参见[Pod参数](https://kubernetes.io/zh-cn/docs/reference/kubernetes-api/workload-resources/pod-v1/)。CCE当前支持以下容器启动项参数： - stdin：为容器开启标准输入，允许从外部源（如终端或其他输入流）接收输入。  - tty：为容器分配一个虚拟终端，允许您像在本地终端中一样向容器发送命令。 一般需要同时开启stdin，表示将终端（tty）绑定到容器的标准输入（stdin）上，可以支持类似于**kubectl exec -i -t**命令的交互式操作，但区别在于该参数在Pod启动时就已经配置完成。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
            
         
       
       - 生命周期（可选）：在容器的生命周期的特定阶段配置需要执行的操作，例如启动命令、启动后处理和停止前处理，详情请参见[设置容器生命周期](https://support.huaweicloud.com/usermanual-cce/cce_10_0105.html)。
       
       - 健康检查（可选）：根据需求选择是否设置存活探针、就绪探针及启动探针，详情请参见[设置容器健康检查](https://support.huaweicloud.com/usermanual-cce/cce_10_0112.html)。
       
       - 环境变量（可选）：支持通过键值对的形式为容器运行环境设置变量，可用于把外部信息传递给Pod中运行的容器，可以在应用部署后灵活修改，详情请参见[设置环境变量](https://support.huaweicloud.com/usermanual-cce/cce_10_0113.html)。
       
       - 数据存储（可选）：在容器内挂载本地存储或云存储，不同类型的存储使用场景及挂载方式不同，详情请参见[存储](https://support.huaweicloud.com/usermanual-cce/cce_10_0374.html)。
         ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
         负载实例数大于1时，不支持挂载云硬盘类型的存储。
         
       
       - 安全设置（可选）：对容器权限进行设置，保护系统和其他容器不受其影响。请输入用户ID，容器将以当前用户权限运行。
       
       - 容器日志（可选）：容器标准输出日志将默认上报至 AOM 服务，无需独立配置。您可以手动配置日志采集路径，详情请参见[通过ICAgent采集容器日志](https://support.huaweicloud.com/usermanual-cce/cce_10_0018.html)。
         如需要关闭当前负载的标准输出，您可在"[高级配置 \> 标签与注解]"中添加键为kubernetes.AOM.log.stdout，值为\[\]的注解，即可关闭当前负载下全部容器的标准输出。该注解的使用方法请参见[表1](https://support.huaweicloud.com/usermanual-cce/cce_10_0386.html#cce_10_0386__table19757101213714)。
         
        
     
     - 镜像访问凭证：用于访问镜像仓库的凭证，默认取值为default-secret，使用default-secret可访问SWR共享版镜像仓库的镜像。default-secret详细说明请参见[default-secret](https://support.huaweicloud.com/usermanual-cce/cce_10_0388.html#cce_10_0388__section11760122012591)。
     
     - GPU显卡（可选）：默认为不限制。当集群中存在GPU节点时，工作负载实例可以调度到指定GPU显卡类型的节点上。
     
     
     
     
  
  5. （可选）填写工作负载关联的**服务配置** 。
     
     服务（Service）可为Pod提供外部访问。每个Service有一个固定IP地址，Service将访问流量转发给Pod，而且Service可以为这些Pod自动实现负载均衡。
     您也可以在创建完工作负载之后再创建Service，不同类型的Service概念和使用方法请参见[服务概述](https://support.huaweicloud.com/usermanual-cce/cce_10_0249.html)。
     
     
  
  6. （可选）填写工作负载中的**高级配置** 。
     
     
     | 参数       | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
     |:---|:---|
     | 升级策略  | 指定工作负载的升级方式及升级参数，支持滚动升级和替换升级，详情请参见[工作负载升级与回退](https://support.huaweicloud.com/usermanual-cce/cce_10_0397.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
     | 调度策略   | 通过配置亲和与反亲和规则，可实现灵活的工作负载调度，支持负载亲和与节点亲和。 - 负载亲和：提供常用的负载亲和策略，快速实现负载亲和部署。 - 不配置：不设置负载亲和策略。  - 优先多可用区部署：通过设置Pod间反亲和（podAntiAffinity）实现，优先将工作负载的Pod调度到不同可用区的节点上。  - 强制多可用区部署：通过设置Pod间反亲和（podAntiAffinity）实现，强制将工作负载的Pod调度到不同可用区的节点上，如集群下节点支持的可用区数量小于实例数，工作负载的Pod无法全部运行。  - 自定义亲和策略：根据需求自定义设置亲和与反亲和规则，详情请参见[设置工作负载亲和/反亲和调度（podAffinity/podAntiAffinity）](https://support.huaweicloud.com/usermanual-cce/cce_10_0893.html)。    - 节点亲和：提供常用的负载亲和策略，快速实现负载亲和部署。 - 不配置：不设置节点亲和策略。  - 指定节点调度：通过设置节点亲和（nodeAffinity）实现，指定工作负载的Pod部署的节点，若不指定，将根据集群默认调度策略随机调度。  - 指定节点池调度：通过设置节点亲和（nodeAffinity）实现，指定工作负载的Pod部署的节点池，若不指定，将根据集群默认调度策略随机调度。  - 自定义亲和策略：根据需求自定义设置亲和与反亲和规则，详情请参见[设置节点亲和调度（nodeAffinity）](https://support.huaweicloud.com/usermanual-cce/cce_10_0892.html)。     |
     | 容忍策略     | 容忍策略与节点的污点能力配合使用，允许（不强制）负载调度到带有与之匹配的污点的节点上，也可用于控制负载所在的节点被标记污点后负载的驱逐策略，详情请参见[设置容忍策略](https://support.huaweicloud.com/usermanual-cce/cce_10_0728.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
     | 标签与注解  | 以键值对形式为工作负载Pod添加标签或注解，填写完成后需单击"确认添加"。关于标签与注解的作用及配置说明，请参见[设置标签与注解](https://support.huaweicloud.com/usermanual-cce/cce_10_0386.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
     | DNS配置   | 为工作负载单独配置DNS策略，详情请参见[工作负载DNS配置说明](https://support.huaweicloud.com/usermanual-cce/cce_10_0365.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
     | 性能管理配置 | 使用应用性能管理（APM）服务，为JAVA程序提供更精准的问题分析与定位，详情请参见[设置性能管理配置](https://support.huaweicloud.com/usermanual-cce/cce_10_0055.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
     | 网络配置     | - Pod入/出口带宽限速：支持为Pod设置入/出口带宽限速，详情请参见[为Pod配置QoS](https://support.huaweicloud.com/usermanual-cce/cce_10_0382.html)。  - 是否开启指定容器网络配置：仅支持该功能的集群显示该选项，开启指定容器网络配置，工作负载使用指定的容器网络配置中的容器子网和安全组来创建，详情请参见[使用容器网络配置为命名空间/工作负载绑定子网及安全组](https://support.huaweicloud.com/usermanual-cce/cce_10_0196.html)。  - 指定容器网络配置名：只支持选择关联资源类型为工作负载类型的自定义容器网络配置。  - IPv6共享带宽：仅支持该功能的集群显示该选项，开启后可为Pod的IPv6双栈网卡绑定共享带宽，详情请参见[在CCE Turbo集群中为IPv6双栈网卡的Pod配置共享带宽](https://support.huaweicloud.com/usermanual-cce/cce_10_0604.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
        
     
     
  
  7. 单击右下角"创建工作负载"，等待一段时间后，工作负载状态为"运行中"。 
     ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002212163580.png "点击放大")
     
     
     
   
- [通过kubectl命令行创建]
  
  本节以nginx工作负载为例，说明通过kubectl命令创建工作负载的方法。
  1. 请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)，使用kubectl连接集群。
  
  2. 创建一个名为nginx-deployment.yaml的文件。其中，nginx-deployment.yaml为自定义名称，您可以随意命名。 
     ```
     vi nginx-deployment.yaml
     ```
     文件示例如下，关于Deployment配置的详细说明请参见[Kubernetes官方文档](https://kubernetes.io/zh-cn/docs/reference/kubernetes-api/workload-resources/deployment-v1/)。
     ```
     apiVersion: apps/v1
     kind: Deployment  # 工作负载类型
     metadata:
       name: nginx  # 工作负载名称 
       namespace: default  # 工作负载所在的命名空间
     spec:
       replicas: 1   # 指定工作负载中的Pod数量
       selector:
         matchLabels:   # 工作负载根据标签选择器中的Pod标签管理Pod
           app: nginx
       template:  # Pod配置
         metadata:
           labels:  # Pod标签
             app: nginx
         spec:
           containers:
           - image: nginx:latest    # 指定容器镜像。若使用“开源镜像中心”的镜像，可直接填写镜像名称；若使用“我的镜像”中的镜像，请在SWR中获取具体镜像地址
             imagePullPolicy: Always  # 镜像拉取策略
             name: nginx  # 容器名称
             resources:  # 为容器分配的节点资源
               requests:  # 资源请求值
                 cpu: 250m
                 memory: 512Mi
               limits:  # 资源限制值
                 cpu: 250m
                 memory: 512Mi
           imagePullSecrets:  # 镜像拉取密钥
           - name: default-secret
     ```
     
     
  
  3. 创建Deployment。 
     ```
     kubectl create -f nginx-deployment.yaml
     ```
     回显如下表示已开始创建Deployment。
     ```
     deployment.apps/nginx created
     ```
     
     
  
  4. 查看Deployment状态。 
     ```
     kubectl get deployment
     ```
     返回信息如下，表示Deployment已创建成功且副本已就绪。
     ```
     NAME           READY     UP-TO-DATE   AVAILABLE   AGE 
     nginx          1/1       1            1           4m5s
     ```
     **参数解析：**
     - NAME：工作负载名称。
     
     - READY：表示工作负载的就绪状态，显示为"就绪Pod个数/期望Pod个数"。
     
     - UP-TO-DATE：指当前已经完成更新的副本数。
     
     - AVAILABLE：可用的Pod个数。
     
     - AGE：已经运行的时间。
     
     
     
     
  
  5. 若工作负载（即Deployment）需要被访问（集群内访问或节点访问），您需要设置访问方式，具体请参见[网络](https://support.huaweicloud.com/usermanual-cce/cce_10_0020.html)创建对应服务。
   
#### 相关文档
- 对于数据库等需要持久化存储数据的容器应用，建议您使用有状态工作负载，请参见[创建有状态负载（StatefulSet）](https://support.huaweicloud.com/usermanual-cce/cce_10_0048.html)。
- 如果您希望工作负载实例调度到指定的节点上，请参见[工作负载调度策略概述](https://support.huaweicloud.com/usermanual-cce/cce_10_0232.html)。
- 如果创建工作负载时出现异常，请参见[工作负载状态异常定位方法](https://support.huaweicloud.com/cce_faq/cce_faq_00134.html)。
- 工作负载创建完成后，更多操作请参见[管理工作负载](https://support.huaweicloud.com/usermanual-cce/cce_10_0007.html)。
 
