基于containerd部署k8s拉取镜像报错,配置镜像加速

系统环境:macbook air m1 使用VMware Fusion部署的arm架构centos7.5

软件信息:基于containerd 1.7.8,使用kubeadm方式部署k8s 1.28.11

情况描述:由于k8s在1.24版本后舍弃了docker,选择默认使用containerd作为容器运行时,所以我在本地虚拟机上通过此方式搭建了一套1台master、2台work的集群环境,在使用crictl pull命令拉取镜像时,报“time out”,与docker一样需要配置镜像加速。

具体步骤:
配置镜像加速的方法有两种,推荐方法二
方法一:

#编辑containerd的配置文件config.toml,如果不存在,需要手动生成,方法自行百度,在配置文件中搜索关键字“mirrors”,在其下面添加镜像加速参数

# vim /etc/containerd/config.toml
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors] #找到此行,添加配置
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
        endpoint = ["https://***********.mirror.aliyuncs.com"] #阿里云镜像加速器

#重启containerd服务生效
#systemctl restart containerd

方法二:

#编辑containerd配置文件,需要修改三个地方:
# vim /etc/containerd/config.toml
    [plugins."io.containerd.grpc.v1.cri".registry] #此行下修改
      config_path = "/etc/containerd/certs.d" #改为此路径,并且需要在此路径下创建hosts.toml文件,用于存放镜像加速信息

    SystemdCgroup = false #修改systemdcgroup的参数为false

    sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9" #修改pause镜像地址和版本


#创建/etc/containerd/certs.d下的hosts文件
#mkdir -p /etc/containerd/certs.d/docker.io
#vim /etc/containerd/certs.d/docker.io/hosts.toml
server = "https://docker.io"
[host."https://********.mirror.aliyuncs.com"]
  capabilities = ["pull", "resolve"]

#systemctl restart containerd
#此方法配置的镜像加速,后续如果需要添加其他的镜像加速服务,添加完成后不需要重启containerd服务
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes 中,可以通过以下方式配置镜像地址: 1. 在 Pod 中定义镜像地址 在 Pod 的 YAML 配置文件中,可以使用完整的镜像地址(包括仓库地址、镜像名和标签)来指定要使用的镜像,例如: ``` apiVersion: v1 kind: Pod metadata: name: your-pod-name spec: containers: - name: your-container-name image: registry.example.com/your-image-name:tag # 容器的其他属性 ``` 在此示例中,`image` 字段中指定了完整的镜像地址,即`registry.example.com/your-image-name:tag`。 2. 在 Deployment 中定义镜像地址 在 Deployment 的 YAML 配置文件中,可以使用 `spec.template.spec.containers.image` 字段来指定要使用的镜像,例如: ``` apiVersion: apps/v1 kind: Deployment metadata: name: your-deployment-name spec: replicas: 1 selector: matchLabels: app: your-app-name template: metadata: labels: app: your-app-name spec: containers: - name: your-container-name image: registry.example.com/your-image-name:tag # 容器的其他属性 ``` 在此示例中,`spec.template.spec.containers.image` 字段中指定了完整的镜像地址,即 `registry.example.com/your-image-name:tag`。 3. 在 ConfigMap 中定义镜像地址 可以将镜像地址存储在 ConfigMap 中,并在 YAML 配置文件中使用 ConfigMap 来引用镜像地址。例如: ``` apiVersion: v1 kind: ConfigMap metadata: name: your-configmap-name data: image: registry.example.com/your-image-name:tag ``` 在此示例中,`data` 字段中存储了镜像地址,即 `registry.example.com/your-image-name:tag`。在 YAML 配置文件中使用 `$(...)` 语法来引用 ConfigMap 中的值,例如: ``` apiVersion: v1 kind: Pod metadata: name: your-pod-name spec: containers: - name: your-container-name image: $(your-configmap-name:image) # 容器的其他属性 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值