failed to pull and unpack image”k8s.gcr.io/pause:3.2”
Kubernetes gitVersion:v1.21.1
出现以上问题大概率是磁盘使用率超时75%。K8S执行了镜像清理,将该镜像给删除了。
排查
1、在出现此异常的节点执行
df -lh
查看是否存在存储使用超过75%
2、查看k8s.gcr.io/pause
的镜像版本
crictl images ls|grep pause
k8s.gcr.io/pause 3.4.1 0f8457a4c2eca 301kB
检查是否只存在3.4.1的版本
解决
1、将sandbox_image版本改为3.4.1
检查是否存在/etc/containerd/config.toml
,若是修改镜像版本即可,否则执行如下命名
mkdir /etc/containerd
cat > /etc/containerd/config.toml << 'EOF'
version = 2
[plugins]
[plugins."io.containerd.grpc.v1.cri"]
sandbox_image = "k8s.gcr.io/pause:3.4.1"
EOF
重新加载配置并重启containerd
systemctl daemon-reload && systemctl restart containerd
2、添加定时清理镜像任务
cat >> /etc/cron.hourly/clean-unuse-images.sh << 'EOF'
#!/usr/bin/env bash
main () {
(crictl img | grep "<none>") && (crictl img | grep "<none>" | xargs crictl rmi)
images=( $(crictl img | grep "dev.flyrise.cn" | awk '{print $3}') )
pods=( $(crictl ps | grep -v IMAGE | awk '{print $2}') )
for item in "${images[@]}"
do
if [[ ! " ${pods[@]} " =~ " $item " ]]; then
crictl rmi $item
fi
done
}
main 2>&1 | tee /var/log/clean-unuse-images.log
EOF
# 必须添加执行权限,否则不会执行
chmod +x /etc/cron.hourly/clean-unuse-images.sh
bash /etc/cron.hourly/clean-unuse-images.sh
文档更新时间: 2024-07-19 13:37 作者:姚连洲