更新时间:2023-12-07 GMT+08:00

工作负载异常:一直处于创建中

问题描述

节点上的工作负载一直处于创建中。

排查思路

以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。

如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。

排查项一: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一直无法创建。

解决方案:

  1. 登录该问题节点。
  2. 手动解压节点上的cce-pause镜像安装包。

    tar -xzvf /opt/cloud/cce/package/node-package/pause-*.tgz

  3. 导入镜像。

    • Docker节点:
      docker load ./pause/package/image/cce-pause-3.1.tar
    • Containerd节点:
      ctr -n k8s.io image import ./pause/package/image/cce-pause-3.1.tar

  4. 镜像导入成功后,即可正常创建工作负载。

排查项二:集群开启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节点变更规格后,为什么无法重新拉起或创建工作负载?