You need to enable JavaScript to run this app. arm64 Ubuntu下MicroK8s配置insecure镜像仓库无效报ImagePullBackOff
优惠活动
大模型
产品
解决方案
定价
更多

arm64 Ubuntu下MicroK8s配置insecure镜像仓库无效报ImagePullBackOff

MicroK8s v1.18 arm64 版本HTTP本地镜像仓库配置方案

配置失效的核心原因

你之前的配置无法生效、触发HTTPS访问报错,本质是三个叠加问题:

  • TOML配置层级完全错误:你把configs块写在了mirrors配置段的内部,按照TOML语法解析规则,实际生成的配置路径是plugins.cri.registry.mirrors.configs.xxx,和containerd预期读取的plugins.cri.registry.configs.xxx路径完全不匹配,等于这段TLS配置根本没被识别
  • 缺少HTTP访问的显式匹配:insecure_skip_verify仅作用于HTTPS请求的证书校验,不会让containerd主动降级为HTTP协议访问,只要没有命中对应的HTTP允许规则,containerd就会默认走HTTPS流程
  • 服务重载不完整:直接修改软链指向的containerd.toml文件后,仅重启kubelet组件不会让containerd运行时重新加载配置,需要触发containerd守护进程的完整重载

正确配置流程

  1. 修正containerd的配置结构
    打开/var/snap/microk8s/current/args/containerd.toml,找到[plugins.cri.registry]对应的段,严格按照以下层级编写配置,避免嵌套错位:
    [plugins.cri.registry]
      # 镜像加速/镜像源映射段
      [plugins.cri.registry.mirrors]
        [plugins.cri.registry.mirrors."docker.io"]
          endpoint = ["https://registry-1.docker.io"]
        [plugins.cri.registry.mirrors."192.168.0.45:32000"]
          endpoint = ["http://192.168.0.45:32000"]
        [plugins.cri.registry.mirrors."localhost:32000"]
          endpoint = ["http://localhost:32000"]
    
      # 各仓库的安全配置段(必须和mirrors平级,不能嵌套在mirrors内部)
      [plugins.cri.registry.configs."192.168.0.45:32000"]
        [plugins.cri.registry.configs."192.168.0.45:32000".tls]
          insecure_skip_verify = true
      [plugins.cri.registry.configs."localhost:32000"]
        [plugins.cri.registry.configs."localhost:32000".tls]
          insecure_skip_verify = true
    
    重点:两个配置段(mirrors、configs)都属于[plugins.cri.registry]的直接子项,不存在谁嵌套在谁内部的关系,这是最容易写错的地方
  2. 完整重载containerd服务
    修改配置后不要仅操作k8s组件,执行以下命令确保配置被加载:
    # 先停止microk8s所有服务
    microk8s.stop
    # 单独重启containerd守护进程,强制加载新配置
    snap restart microk8s.daemon-containerd
    # 重新启动microk8s
    microk8s.start
    
  3. 配置有效性验证
    执行以下命令确认配置被containerd正确识别:
    # 查看当前运行的containerd registry配置
    microk8s.ctr info | grep -A 15 "Registry Config"
    
    输出中需要能看到192.168.0.45:32000对应的insecure_skip_verify: true配置项,且对应的endpoint为http地址。

常见踩坑提示

  • 配置里的仓库地址必须和Pod拉取的镜像地址完全匹配:镜像写的是192.168.0.45:32000/myapp:latest,配置里的仓库标识就必须是192.168.0.45:32000,不能省略端口、不能写错IP段,否则配置不会命中
  • 多节点集群场景下,所有运行工作负载的节点都要做相同配置,仅在master节点修改配置无法解决工作节点的拉取问题
  • 部分MicroK8s版本会在启动时从模板文件生成containerd.toml,如果修改后重启就被覆盖,需要同步修改/var/snap/microk8s/current/args/containerd-template.toml里的对应配置段

内容的提问来源于stack exchange,提问作者Dániel Kis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 23:06:04