
# 工作负载异常：一直处于创建中
#### 问题描述
节点上的工作负载一直处于创建中。
#### 排查思路
以下排查思路根据原因的出现概率进行排序，建议您从高频率原因往低频率原因排查，从而帮助您快速找到问题的原因。
如果解决完某个可能原因仍未解决问题，请继续排查其他可能原因。
- [排查项一：cce-pause镜像是否被误删除]
- [排查项二：集群开启CPU管理策略后变更节点规格]
 
 #### 排查项一：cce-pause镜像是否被误删除
**问题现象**
创建工作负载时报如下错误，显示无法创建sandbox，原因是拉取cce-pause:3.1镜像失败。
```
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to get sandbox image "cce-pause:3.1": failed to pull image "cce-pause:3.1": failed to pull and unpack image "docker.io/library/cce-pause:3.1": failed to resolve reference "docker.io/library/cce-pause:3.1": pulling from host **** failed with status code [manifests 3.1]: 400 Bad Request
```
**问题原因**
该镜像为创建节点时添加的系统镜像，如果手动误删除该镜像，会导致工作负载Pod一直无法创建。
**解决方案：**
![](https://support.huaweicloud.com/cce_faq/public_sys-resources/note_3.0-zh-cn.png)
v1.25.16-r30、v1.27.16-r30、v1.28.15-r20、v1.29.13-r0、v1.30.10-r0、v1.31.6-r0、v1.32.1-r0及以上版本的集群中，cce-pause容器镜像支持防误删。不满足上述版本要求的集群则需要参考以下步骤进行手动恢复。
- **Containerd节点**
  具体操作步骤如下：
  1. 登录该问题节点。
  
  2. 手动解压节点上的cce-pause镜像安装包。
     ```
     tar -xzvf /opt/cloud/cce/package/node-package/pause-*.tgz
     ```
     
  
  3. 导入镜像。
     ```
     ctr -n k8s.io images import --all-platforms ./pause/package/image/cce-pause-*.tar
     ```
     
  
  4. 查看导入的cce-pause镜像。
     ```
     crictl image | grep pause
     ```
     期望回显如下：
     ```
     docker.io/library/cce-pause                3.1         7edd234a5daa7           789kB
     ```
     
  
  5. 给镜像加锁，防止误删除。
     ```
     ctr -n k8s.io images label cce-pause:3.1 io.cri-containerd.pinned=pinned
     ```
     ![](https://support.huaweicloud.com/cce_faq/public_sys-resources/note_3.0-zh-cn.png)
     节点中的containerd服务版本高于1.7.0版本才能支持该操作，containerd版本可以通过containerd --version命令来查询。
     ![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000002656600530.png "点击放大")
     查看镜像是否已加锁：
     ```
     crictl images -v
     ```
     输出里会有类似：
     ```
     Pinned: true
     ```
     为true表示已锁定，不会被kubelet GC回收。
     
  
  6. 镜像导入成功后，即可正常创建工作负载。
    
- **Docker节点**
  具体操作步骤如下：
  1. 登录该问题节点。
  
  2. 手动解压节点上的cce-pause镜像安装包。
     ```
     tar -xzvf /opt/cloud/cce/package/node-package/pause-*.tgz
     ```
     
  
  3. 导入镜像。
     ```
     docker load -i ./pause/package/image/cce-pause-*.tar
     ```
     
  
  4. 查看导入的cce-pause镜像。
     ```
     docker images | grep pause
     ```
     回显如下：
     ```
     cce-pause               3.1               83e7b9ecaec8               2 months ago               785kB
     ```
     
  
  5. 镜像导入成功后，即可正常创建工作负载。
    
 
 #### 排查项二：集群开启CPU管理策略后变更节点规格
集群开启CPU管理策略（绑核）时，kubelet启动参数中会将CPU Manager的策略设置为static，允许为节点上具有某些资源特征的pod赋予增强的CPU亲和性和独占性。用户如果直接在ECS控制台对CCE节点变更规格，会由于变更前后CPU信息不匹配，导致节点上的负载无法重新拉起，也无法创建新负载。
1. 登录CCE节点（弹性云服务器）并删除cpu_manager_state文件。 
   删除命令示例如下：
   ```
   rm -rf /mnt/paas/kubernetes/kubelet/cpu_manager_state
   ```
   
   
2. 重启节点或重启kubelet，重启kubelet的方法如下： 
   ```
   systemctl restart kubelet
   ```
   此时重新拉起或创建工作负载，已可成功执行。
   解决方式链接：[CCE节点变更规格后，为什么无法重新拉起或创建工作负载？](https://support.huaweicloud.com/cce_faq/cce_faq_00189.html)
   
   
 
