当前位置: 首页 > 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
http://www.dtcms.com/a/80683.html

相关文章:

  • 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
  • 开源软件许可证冲突的原因和解决方法
  • 【Linux】VMware Workstation Pro 17 安装教程
  • 【实战案例】用STAR+3W模型拆解电商支付系统设计文档
  • 移动端医疗AI诊断系统的设计思路与技术展望——多模态生理数据分析的理论框架探讨
  • 中小企业如何低成本构建高效专属网络?
  • 快速入手-基于Django的mysql配置(三)
  • 分布式中间件:RabbitMQ死信队列和延迟队列
  • 实验12深度学习
  • [samba配置]宿主机访问虚拟机目录
  • 网络华为HCIA+HCIP 广域网技术
  • Linux常用命令与权限理解总结