当前位置: 首页 > news >正文

k8s 配置imagePullSecrets仓库认证

在 Kubernetes (K8s) 中,imagePullSecrets 允许 Pod 访问私有镜像仓库,例如 Docker Hub、Harbor、阿里云镜像仓库、腾讯云 TCR 或自建的 registry.flow.cn。以下是完整的 imagePullSecrets 配置步骤


步骤 1:创建 imagePullSecrets

Kubernetes 通过 docker-registry 类型的 Secret 存储镜像仓库的认证信息。

1.1 运行 kubectl create secret docker-registry

使用以下命令创建 imagePullSecrets,将 <username><password><email> 替换成你的私有仓库登录信息:

kubectl create secret docker-registry regcred \
  --docker-server=registry.flow.cn \
  --docker-username=<username> \
  --docker-password=<password> \
  --docker-email=<email> \
  -n <namespace>
  • regcred 是 Secret 的名称(可以自定义)。
  • --docker-server=registry.flow.cn 指定私有仓库地址。
  • -n <namespace> 指定命名空间(如果省略,则创建在 default 命名空间)。
  • --docker-username--docker-password 填写镜像仓库的登录凭据。

示例(如果仓库在 kubesphere-system 命名空间):

kubectl create secret docker-registry regcred \
  --docker-server=registry.flow.cn \
  --docker-username=myuser \
  --docker-password=mypassword \
  --docker-email=myemail@example.com \
  -n kubesphere-system

步骤 2:配置 imagePullSecrets 到 Pod/Deployment

创建 imagePullSecrets 之后,需要在 Pod、Deployment、StatefulSet、DaemonSet 等工作负载的 spec 里引用它。

2.1 修改 Deployment

如果 Pod 由 Deployment 管理,执行:

kubectl edit deployment ks-apiserver -n kubesphere-system

spec.template.spec 下面添加:

  imagePullSecrets:
  - name: regcred

完整示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ks-apiserver
  namespace: kubesphere-system
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ks-apiserver
  template:
    metadata:
      labels:
        app: ks-apiserver
    spec:
      imagePullSecrets:
      - name: regcred
      containers:
      - name: ks-apiserver
        image: registry.flow.cn/kubesphereio/ks-apiserver:v3.4.1
        imagePullPolicy: Always

保存后,K8s 会自动重新创建 Pod。

2.2 修改已有 Pod(适用于非 Deployment 方式)

如果 Pod 不是由 Deployment 控制,而是手动创建的 Pod,你需要:

  1. 删除现有 Pod
kubectl delete pod ks-apiserver-54466b5d66-p8r4m -n kubesphere-system
  1. 编辑 Pod YAML 文件
kubectl get pod ks-apiserver-54466b5d66-p8r4m -n kubesphere-system -o yaml > pod.yaml

修改 spec

spec:
  imagePullSecrets:
  - name: regcred

然后重新创建:

kubectl apply -f pod.yaml

步骤 3:配置默认 imagePullSecrets(影响整个命名空间)

如果希望命名空间下的所有 Pod 默认使用 imagePullSecrets,可以修改 ServiceAccount

执行:

kubectl edit serviceaccount default -n kubesphere-system

添加:

imagePullSecrets:
- name: regcred

这样,在 kubesphere-system 命名空间中创建的所有 Pod 默认都会使用 regcred 拉取镜像。


步骤 4:验证 imagePullSecrets 是否生效

查看 Pod 状态:

kubectl get pod -n kubesphere-system

如果 Pod 不再处于 ImagePullBackOffErrImagePull 状态,说明 imagePullSecrets 配置成功!

还可以检查具体事件:

kubectl describe pod ks-apiserver-54466b5d66-p8r4m -n kubesphere-system

如果 Events 中没有报 Failed to pull image,就说明 imagePullSecrets 已经生效。


总结

步骤操作命令
创建 imagePullSecretskubectl create secret docker-registry regcred --docker-server=registry.flow.cn --docker-username=<username> --docker-password=<password> --docker-email=<email> -n kubesphere-system
修改 Deploymentkubectl edit deployment ks-apiserver -n kubesphere-system,添加 imagePullSecrets
修改已有 Podkubectl get pod -o yaml > pod.yaml,然后修改 spec.imagePullSecretskubectl apply -f pod.yaml
修改默认 ServiceAccountkubectl edit serviceaccount default -n kubesphere-system
检查 Pod 状态kubectl get pod -n kubesphere-system
查看 Pod 事件kubectl describe pod ks-apiserver-54466b5d66-p8r4m -n kubesphere-system

相关文章:

  • SpringMVC全局异常处理机制
  • Android SDK下载安装配置
  • 多无人车协同探索开源包启动文件介绍(下)
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(10)
  • LVGL和其他图形库区别于联系
  • Spring Boot Actuator 自定义健康检查(附Demo)
  • AI安全、大模型安全研究(DeepSeek)
  • 3. 轴指令(omron 机器自动化控制器)——>MC_SetPosition
  • Python(数据结构概念,算法时间效率衡量,链表)
  • Oracle GoldenGate (OGG) 安装、使用及常见故障处理
  • 英伟达黄仁勋2025GTC演讲深度解析:液冷GPU、AI工厂、机器人AI…...
  • 【NoC仿真器(nirgam noxim)搭建】自用笔记
  • Debian 12系统中允许Root远程SSH登录解决方法!
  • python 数据可视化TVTK库安装与使用
  • RabbitMQ 集群搭建步驟
  • TG电报群管理机器人定制开发的重要性
  • C语言问题总结(二)
  • 数据分析的12个挑战及其解决方法
  • Event driven agentic document workflows 笔记 - 1
  • 开源软件许可证冲突的原因和解决方法
  • 巴基斯坦外长:印巴已同意立即停火
  • 图集|俄罗斯举行纪念苏联伟大卫国战争胜利80周年阅兵式
  • 1450亿元!财政部拟发行2025年中央金融机构注资特别国债(二期)
  • 泉州一家婚介机构广告牌越南新娘七天闪婚领证?市监部门介入
  • 定位真核生物起源于约27.2亿年前,华东师大团队在《自然》发文
  • 印度导弹凌晨打击巴基斯坦多座设施,巴总理:正对战争行为作有力回应