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

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

http://www.kler.cn/a/593201.html

相关文章:

  • 国思RDIF低代码快速开发框架 v6.2版本发布
  • 第14周-Seq2Seq模型-NLP
  • 堆排序的思路与常见的问题
  • 今日bug
  • P1118 [USACO06FEB] Backward Digit Sums G/S
  • Tailwind CSS 学习笔记(二)
  • IDEA的常用设置与工具集成
  • 高性能Java并发编程:线程池与异步编程最佳实践
  • 批处理脚本编译vs工程
  • RK3568平台设备树文件功能解析(鸿蒙系统篇)
  • 2025年PHP微服务框架推荐及对比
  • 深度学习框架PyTorch——从入门到精通(1)下载与安装
  • 卷积神经网络(CNN)与反向传播
  • 关于redis中的分布式锁
  • 青少年编程与数学 02-011 MySQL数据库应用 05课题、结构化查询语言SQL
  • gem rbenv介绍【前端扫盲】
  • k8s中的组件
  • Scala 文件 I/O
  • 在react当中利用IntersectionObserve实现下拉加载数据
  • 云原生无服务器计算:事件驱动的原子化运算革命