k8s 配置私有镜像仓库认证

1. 创建 Docker 注册表的 Secret

首先,创建一个类型为 dockerconfigjsonSecret,用于存储 Docker 注册表的认证信息。

方法 1: 使用 Docker CLI 和 kubectl

不适用于阿里云格式不一样

  1. 登录 Docker 注册表
bash 复制代码
docker login <your-registry-server>

这会生成一个包含认证信息的配置文件,通常位于 ~/.docker/config.json

  1. 创建 Secret
bash 复制代码
kubectl -n prom create secret generic myregistrykey \
  --from-file=.dockerconfigjson=$HOME/.docker/config.json \
  --type=kubernetes.io/dockerconfigjson
方法 2: 手动创建 YAML 文件

不适用于阿里云格式不一样

  1. Base64 编码 config.json 文件
bash 复制代码
cat ~/.docker/config.json | base64 -w 0
  1. 创建 Secret YAML 文件
yaml 复制代码
apiVersion: v1
kind: Secret
metadata:
  name: myregistrykey
data:
  .dockerconfigjson: <base64-encoded-json-string>
type: kubernetes.io/dockerconfigjson
  1. 应用 Secret
bash 复制代码
kubectl apply -f myregistrykey-secret.yaml

2. 将 imagePullSecrets 引用到 Pod

在创建 Pod 时,你需要在 Pod 的 YAML 文件中使用 imagePullSecrets 字段引用这个 Secret

Pod YAML 示例
yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mycontainer
    image: <your-registry-server>/myimage:mytag
  imagePullSecrets:
  - name: myregistrykey
详细说明:
  • image** 字段**: 指定容器要拉取的镜像,格式为 <your-registry-server>/myimage:mytag
  • imagePullSecrets** 字段**: 用于指定拉取私有镜像时使用的 Secret。它是一个数组,因此你可以指定多个 Secret

3. 设置命名空间的默认 imagePullSecrets

如果你希望在某个命名空间中默认使用某个 imagePullSecrets,你可以修改该命名空间的 ServiceAccount

修改默认 ServiceAccount
yaml 复制代码
apiVersion: v1
kind: ServiceAccount
metadata:
  name: default
  namespace: mynamespace
imagePullSecrets:
- name: myregistrykey
应用 ServiceAccount 配置:
bash 复制代码
kubectl apply -f serviceaccount.yaml

4. 验证配置

创建 Pod 后,可以通过以下命令查看 Pod 是否正常启动,或者查看其事件日志,以确认镜像是否成功拉取:

bash 复制代码
kubectl get pods
kubectl describe pod mypod
相关推荐
运维老郭3 小时前
【K8s运维实战】Kubernetes临时存储卷实战:emptyDir核心用法与gitRepo弃用迁移指南
运维·云原生·kubernetes
AAA@峥7 小时前
容器数据不丢失:Docker 分层存储 + Volume 共享、备份迁移完整指南
运维·docker·容器
十年磨一剑~9 小时前
docker 为何每次 docker tag才能 docker push
docker·容器·eureka
gs8014011 小时前
记一次多 Agent 架构在单节点 K8s 触发的 PID 耗尽与 Pod 驱逐(Evicted)大摸排
容器·架构·kubernetes
bukeyiwanshui11 小时前
20260701 k8s Metric Server
容器·贪心算法·kubernetes
江湖有缘12 小时前
基于Docker环境部署tillywork开源工作管理工具
docker·容器·开源
鸿儒51714 小时前
MR-50国产化GPU docker配置方法
docker·容器·mr
Zhu75815 小时前
在k8s集群部署ApacheHadoop单节点单数据副本
云原生·容器·kubernetes
摇滚侠15 小时前
云原生 Java 架构师的第一课 K8s+Docker+KubeSphere+DevOps 51-60
java·云原生·kubernetes