k8s.gcr.io/pause:3.2镜像丢失解决

文章目录


前言

使用Kubernetes(k8s)时遇到了镜像拉取的问题,导致Pod沙盒创建失败。错误显示在尝试从k8s.gcr.io拉取pause:3.2镜像时遇到了超时问题,这通常是因为网络问题或者镜像仓库服务器的问题。

错误信息

Failed to create pod sandbox: rpc error: code = Unknown desc = failed to get sandbox image "k8s.gcr.io/pause:3.2": failed to pull image "k8s.gcr.io/pause:3.2": failed to pull and unpack image "k8s.gcr.io/pause:3.2": failed to resolve reference "k8s.gcr.io/pause:3.2": failed to do request: Head "https://k8s.gcr.io/v2/pause/manifests/3.2": dial tcp 74.125.204.82:443: i/o timeout

临时解决

拉取镜像,重新tag,国内可以使用阿里云的

bash 复制代码
# 如果你的k8s使用的事docker客户端
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2 
 
# 如果使用containerd自带客户端
crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
ctr -n k8s.io i tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2

推荐解决

one

如果您的Kubernetes服务无法重启,您可以尝试创建一个DaemonSet来替换使用的镜像。如您所示的YAML配置,您可以定义一个DaemonSet,将Pod的容器镜像更改为可访问的阿里云镜像。这种方法不需要重启Kubernetes服务,而是一次性更新所有节点的Pod

yaml 复制代码
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: example-daemonset
  namespace: default
spec:
  selector:
    matchLabels:
      app: example
  template:
    metadata:
      labels:
        app: example
    spec:
      containers:
      - image: k8s.gcr.io/pause:3.2
        imagePullPolicy: IfNotPresent
        name: example-container
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
  updateStrategy:
    rollingUpdate:
      maxSurge: 0
      maxUnavailable: 1
    type: RollingUpdate

two

如果您的Kubernetes服务可以重启,您可以修改Kubelet的启动参数,以直接使用阿里云的镜像。这涉及到编辑Kubelet的配置文件,并更改Pod基础设施容器的镜像路径。然后重启Kubelet服务以应用更改。

在执行这些操作时,请注意:

  • 在生产环境中操作前,请确保您理解每个命令的影响
  • 备份当前的配置和状态,以防需要回滚或恢复
  • 确保遵循您组织的安全和配置管理策略。

最后,添加注解可以帮助其他维护者或团队成员理解配置的原因和更改的上下文,这在团队合作和Kubernetes集群维护中是一个好习惯。

bash 复制代码
# 查看 kubelet 配置
systemctl status kubelet
 
cd /var/lib/kubelet/
cp kubeadm-flags.env kubeadm-flags.env.ori
 
# 把 k8s.gcr.io/pause:3.2 改成 registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
 
cat /var/lib/kubelet/kubeadm-flags.env
 
KUBELET_KUBEADM_ARGS="--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2"
 
# 重启 kubelet 服务
systemctl daemon-reload
systemctl restart kubelet
相关推荐
汪碧康8 分钟前
一文讲解kubernetes的gateway Api的功能、架构、部署、管理及使用
云原生·容器·架构·kubernetes·gateway·kubelet·xkube
小二·11 分钟前
Go 语言系统编程与云原生开发实战(第7篇)分布式系统核心能力:配置中心 × 链路追踪 × 熔断降级(生产级落地)
开发语言·云原生·golang
梵得儿SHI11 分钟前
实战项目落地:微服务拆分原则(DDD 思想落地,用户 / 订单 / 商品 / 支付服务拆分实战)
spring cloud·微服务·云原生·架构·微服务拆分·ddd方法论·分布式数据一致性
小二·20 分钟前
Go 语言系统编程与云原生开发实战(第6篇)云原生部署实战:Docker 镜像瘦身 × K8s 部署 × Helm 一键发布
docker·云原生·golang
Wpa.wk15 小时前
容器编排 - 了解K8s(pod, deployment,service,lable等概念)
经验分享·测试工具·docker·云原生·容器·kubernetes
江畔何人初15 小时前
kubernet与docker的关系
linux·运维·云原生
xuefuhe16 小时前
Kubernetes基础入门4 应用的扩展与收缩
云原生·容器·kubernetes
Wpa.wk17 小时前
容器编排 - K8s - 配置文件参数说明和基础命令
经验分享·测试工具·docker·云原生·容器·kubernetes
掘根21 小时前
【即时通讯系统】项目框架与微服务拆分设计
微服务·云原生·架构
杭州杭州杭州21 小时前
Docker
运维·docker·容器