工作负载异常:一直处于创建中
问题描述
节点上的工作负载一直处于创建中。
排查思路
以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。
如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。
排查项一: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一直无法创建。
解决方案:
- 登录该问题节点。
- 手动解压节点上的cce-pause镜像安装包。
tar -xzvf /opt/cloud/cce/package/node-package/pause-*.tgz
- 导入镜像。
- Docker节点:
docker load -i ./pause/package/image/cce-pause-*.tar
- Containerd节点:
ctr -n k8s.io images import --all-platforms ./pause/package/image/cce-pause-*.tar
- Docker节点:
- 镜像导入成功后,即可正常创建工作负载。
排查项二:集群开启CPU管理策略后变更节点规格
集群开启CPU管理策略(绑核)时,kubelet启动参数中会将CPU Manager的策略设置为static,允许为节点上具有某些资源特征的pod赋予增强的CPU亲和性和独占性。用户如果直接在ECS控制台对CCE节点变更规格,会由于变更前后CPU信息不匹配,导致节点上的负载无法重新拉起,也无法创建新负载。
- 登录CCE节点(弹性云服务器)并删除cpu_manager_state文件。
删除命令示例如下:
rm -rf /mnt/paas/kubernetes/kubelet/cpu_manager_state
- 重启节点或重启kubelet,重启kubelet的方法如下:
systemctl restart kubelet
此时重新拉起或创建工作负载,已可成功执行。
解决方式链接:CCE节点变更规格后,为什么无法重新拉起或创建工作负载?