You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在calico.yaml中配置ACR凭证以拉取私有仓库镜像

解决方案

1 优先处理x509证书报错

你当前出现的x509: certificate signed by unknown authority是容器运行时不信任私有ACR的TLS证书导致的,需要先解决该问题再配置拉取凭证,有两种可选方案:

  • 生产环境推荐方案:将ACR的根CA证书分发到所有k3s节点的容器运行时信任目录
    k3s默认使用containerd作为运行时,将证书文件存储到所有节点的/etc/containerd/certs.d/myacrrepo.io/ca.crt路径,随后重启containerd和k3s服务即可生效。
  • 测试环境临时方案:将ACR配置为不安全镜像仓库,跳过TLS校验
    修改k3s节点的/var/lib/rancher/k3s/agent/etc/containerd/config.toml.tmpl文件,在对应仓库配置项添加insecure_skip_verify = true,重启k3s服务即可。

2 配置Calico清单的ACR拉取凭证

Calico官方默认清单未配置镜像拉取凭证是因为Docker Hub是公开镜像仓库,私有仓库需要自行在工作负载的Pod模板中添加imagePullSecrets字段,操作步骤如下:

2.1 创建私有仓库拉取Secret

首先在kube-system命名空间下创建镜像拉取凭证Secret,执行命令:

kubectl create secret docker-registry acr-secret \
  --namespace=kube-system \
  --docker-server=myacrrepo.io \
  --docker-username=<ACR登录用户名> \
  --docker-password=<ACR登录密码>

如果需要把Secret整合到calico.yaml文件中统一管理,可在清单开头添加如下资源定义:

apiVersion: v1
kind: Secret
metadata:
  name: acr-secret
  namespace: kube-system
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: <本地docker登录ACR后生成的~/.docker/config.json文件的base64编码值>

2.2 修改Calico DaemonSet配置

找到calico.yaml中kind: DaemonSet、name: calico-node的资源定义,在spec.template.spec层级下添加imagePullSecrets配置,示例:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: calico-node
  namespace: kube-system
spec:
  template:
    spec:
      # 新增以下配置
      imagePullSecrets:
      - name: acr-secret
      # 以下为原有的containers、volumes等配置,无需修改
      containers:
      - name: calico-node
        image: myacrrepo.io/calico/node:v3.17.1
        # 其余原有配置保持不变

2.3 修改Calico Deployment配置

找到calico.yaml中kind: Deployment、name: calico-kube-controllers的资源定义,同样在spec.template.spec层级下添加相同的imagePullSecrets配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: calico-kube-controllers
  namespace: kube-system
spec:
  template:
    spec:
      # 新增以下配置
      imagePullSecrets:
      - name: acr-secret
      # 以下为原有配置,无需修改
      containers:
      - name: calico-kube-controllers
        image: myacrrepo.io/calico/kube-controllers:v3.17.1
        # 其余原有配置保持不变

修改完成后重新应用calico.yaml即可。

内容的提问来源于stack exchange,提问作者Thor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:45:02