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

如何在Kubernetes中配置使用不安全镜像仓库部署应用?

Kubernetes中从不安全镜像仓库部署应用的配置方法

在Docker环境中你通过修改daemon.json配置不安全镜像仓库,但Kubernetes没有直接的命名空间级配置项,不过可以通过以下两种方案实现需求:

方案1:节点级全局配置(和Docker逻辑一致)

如果集群所有节点都需要访问这个不安全仓库,直接在每个K8s节点上修改容器运行时的配置:

针对Docker运行时:

  1. 编辑/etc/docker/daemon.json,添加仓库地址:
{
  "insecure-registries": ["your-registry-hostname:port"]
}
  1. 重启Docker和kubelet服务:
systemctl restart docker
systemctl restart kubelet

配置完成后,整个节点上的所有Pod都能拉取该仓库的镜像,无需额外在命名空间或应用中配置。

针对containerd运行时:

  1. 编辑/etc/containerd/config.toml,找到[plugins."io.containerd.grpc.v1.cri".registry.configs]部分,添加:
[plugins."io.containerd.grpc.v1.cri".registry.configs."your-registry-hostname:port".tls]
  insecure_skip_verify = true
  1. 重启containerd服务:
systemctl restart containerd

方案2:命名空间/应用级配置(使用ImagePullSecret)

如果只需要特定命名空间下的应用访问该仓库,或者不想修改节点配置,可以通过创建ImagePullSecret来实现:

  1. 在目标命名空间创建Docker配置类型的Secret:
    先创建一个包含仓库认证和不安全配置的config.json文件(仓库无认证时,auths部分可留空):
{
  "auths": {
    "your-registry-hostname:port": {
      "username": "your-username",
      "password": "your-password"
    }
  },
  "insecure-registries": ["your-registry-hostname:port"]
}

然后用这个文件生成Secret:

kubectl create secret generic regcred \
  --from-file=.dockerconfigjson=./config.json \
  --type=kubernetes.io/dockerconfigjson \
  -n your-target-namespace
  1. 关联Secret到命名空间默认ServiceAccount:
    这样该命名空间下所有Pod都会自动使用这个Secret拉取镜像:
kubectl patch serviceaccount default \
  -p '{"imagePullSecrets": [{"name": "regcred"}]}' \
  -n your-target-namespace
  1. 或者直接在Deployment中指定:
    如果只想让某个应用使用该Secret,在Deployment的Pod模板中添加imagePullSecrets字段:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: your-app-deployment
  namespace: your-target-namespace
spec:
  replicas: 1
  selector:
    matchLabels:
      app: your-app
  template:
    metadata:
      labels:
        app: your-app
    spec:
      imagePullSecrets:
      - name: regcred
      containers:
      - name: your-app-container
        image: your-registry-hostname:port/your-image:tag

注意事项

  • 务必确保仓库地址(主机名和端口)填写准确,否则会出现镜像拉取失败的错误。
  • 若仓库不需要认证,config.json中的auths部分可仅保留空对象,重点保留insecure-registries配置项即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:01:14