
# 工作负载异常
#### 定位思路
当工作负载状态异常时，建议先查看事件。
在CCI控制台中，单击左侧导航栏的"工作负载"，单击异常工作负载名称，进入详情页面，单击"事件"页签查看。
#### 事件一：重新拉取镜像失败
工作负载详情中，若事件中提示"重新拉取镜像失败"，请参照如下方式来排查原因。
- 排查项一：创建工作负载时未指定imagePullSecret 以创建一个名为nginx的deployment为例，请排查yaml文件中是否存在**imagePullSecrets**字段（如下yaml示例中的加粗字段），表示pull镜像时的secret名称。
  使用[容器镜像服务](https://www.huaweicloud.com/product/swr.html)的镜像时，参数值需要固定为**imagepull-secret**。
  ```
  apiVersion: cci/v2
  kind: Deployment
  metadata:
    name: nginx
    namespace: nginx-ns
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: nginx
    strategy:
      type: RollingUpdate
    template:
      metadata:
        labels:
          app: nginx
      spec:
        containers:
        - image: nginx:alpine
          imagePullPolicy: Always
          name: nginx
        imagePullSecrets:
          - name: imagepull-secret
  ```
  

- 排查项二：填写的镜像地址错误 CCI支持拉取[容器镜像服务](https://www.huaweicloud.com/product/swr.html)中的镜像来创建工作负载。
  容器镜像服务中的镜像需要使用镜像的"下载指令"，上传镜像后，您可以在容器镜像服务的镜像中获取，如下图所示。
  图1镜像地址   
  ![](https://support.huaweicloud.com/cci2_faq/zh-cn_image_0000002205457974.png "点击放大") 
 
- 排查项三：IAM用户没有镜像下载权限 如果您开通了企业管理，您需要在账号下的容器镜像服务中给IAM用户添加权限，IAM用户才能使用账号下的私有镜像。
  给IAM用户添加权限有如下两种方法：
  - 在镜像详情中为IAM用户添加授权，授权完成后，IAM用户享有读取/编辑/管理该镜像的权限，具体请参见[在镜像详情中添加授权](https://support.huaweicloud.com/usermanual-swr/swr_01_0015.html)。
  
  - 在组织中为IAM用户添加授权，使IAM用户对组织内所有镜像享有读取/编辑/管理的权限，具体请参见[在组织中添加授权](https://support.huaweicloud.com/usermanual-swr/swr_01_0015.html)。
   
- 排查项四：镜像打包使用的docker版本过低 业务负载拉取镜像失败，报错信息如下：
  ```
  failed to pull and unpack image "****": failed to unpack image on snapshotter devmapper: failed to extract layer
  sha256:xxxxxx: failed to get reader from content store: content digest sha256:xxxxxx: not found
  ```
  该错误出现的原因：镜像构建时使用的docker版本过低（\<v1.10），部分镜像打包标准社区已经不再支持。
  解决方案：请使用新版本 docker 运行时（\>= docker v1.11）重新构建镜像后上传到SWR（容器镜像服务），升级负载镜像版本，重新拉取即可。
  
- 排查项五：未配置VPCEP 创建工作负载，涉及使用OBS SDK或容器内调取OBS域名，需要购买OBS VPCEP。
  请参阅[购买云服务VPCEP](https://support.huaweicloud.com/usermanual-cci2/cci_01_0005.html)查看是否已进行过上述步骤。
  解决方案：如果您使用的是SWR企业仓，请配置OBS VPCEP后重新创建负载。如果您使用的是SWR公共镜像仓库，请配置OBS VPCEP和SWR VPCEP后重新创建负载。
  
#### 事件二：重新启动容器失败
工作负载详情中，若事件中提示"重新启动容器失败"，请按照如下方式来排查原因。
- 排查项一：查看端口是否冲突
  1. 在页面上单击失败的工作负载对应的容器组。
  
  2. 找到启动失败容器所属容器组，单击"查看YAML"，查看是否有容器的containerPort冲突。 ![](https://support.huaweicloud.com/cci2_faq/zh-cn_image_0000002254855193.png "点击放大")
     **解决方法：**请重新创建工作负载，配置正确的端口，并确保端口不冲突。
     
   
- 排查项二：用户自身业务BUG 请检查工作负载启动命令是否正确执行，或工作负载本身bug导致容器不断重启。
  **解决方法：**请重新创建工作负载，配置正确的启动命令。
  
- 排查项三：工作负载配置的健康检查执行失败 工作负载若配置liveness型（工作负载存活探针）健康检查，当健康检查失败次数超过阈值时，会重启实例中的容器。在工作负载详情页面查看事件，若K8S事件中出现"Liveness probe failed: ......"时，表示健康检查失败。
  **解决方法：**请重新配置正确的健康检查策略。
  
 
#### Pod事件提示"all nodes are unavailable"怎么处理？
这是CCI在动态申请资源时的正常调度提示。
- **正常现象** ：Pod 启动初期（通常在几十秒内），调度器正在为您实时准备计算资源，此时出现该提示属于正常过程。待资源就绪后，Pod会自动转为Running状态，**无需处理**。
- **配置异常**：如果Pod长时间（如超过 3 分钟）一直处于 Pending 状态且持续报错，通常是因为您定义的CPU/内存规格（例如 requests 设置的资源量）不符合 CCI 支持的规格配比。请检查并调整YAML中的资源规格配置。
 
#### Pod 创建时提示 "network has no available port or maybe port is acquiring" 怎么处理？
这是Pod在等待绑定网络资源（如弹性网卡或IP端口）时的正常中间状态提示。
- **正常现象** ：该提示表示系统正在为Pod动态申请和配置网卡，属于创建过程中的正常等待环节，对业务**没有影响** 。通常稍作等待，待网络资源就绪后，Pod即可正常启动，**无需处理**。
- **异常情况**：如果Pod长时间（例如超过 3 分钟）一直处于该状态且无法启动，请检查Pod所选的VPC子网（Subnet）下是否还有可用的IP 地址配额。
 
#### 其他定位方法
负载异常有可能是容器中运行的应用启动异常，这时可以通过手动执行启动命令，根据错误提示进行问题定位和修复。通常的做法如下：
1. 为工作负载配置如下类型的启动命令，这样pod启动后没有启动应用程序，没有执行任何操作。 ![](https://support.huaweicloud.com/cci2_faq/zh-cn_image_0000002260618129.png "点击放大")
   ![](https://support.huaweicloud.com/cci2_faq/public_sys-resources/note_3.0-zh-cn.png)
   执行启动命令前，请确认镜像中**/bin/bash**命令可用。
   
2. Pod启动成功后，单击对应容器组"查看终端"，选择对应容器，手动执行启动命令，根据错误提示进行问题定位和修复。
 
