首页 > 其他分享 >在K8S中,如何下载harbor的私有项目镜像?

在K8S中,如何下载harbor的私有项目镜像?

时间:2024-02-23 09:44:34浏览次数:35  
标签:name harbor Harbor 镜像 Pod K8S ImagePullSecrets

在Kubernetes(K8s)中,要从私有的Harbor仓库拉取镜像并部署到集群,需要完成以下步骤:

  1. 配置 Harbor 凭证

    • 在 Kubernetes 中,可以通过创建一个 Secret 对象来存储 Harbor 仓库的认证信息。例如,可以创建一个 Docker-registry 类型的 Secret,包含用户名和密码或 token。
    apiVersion: v1
    kind: Secret
    metadata:
      name: harbor-credentials
      namespace: default # 根据实际情况选择namespace
    type: kubernetes.io/dockerconfigjson
    data:
      .dockerconfigjson: <base64-encoded-docker-config>
    

    其中 <base64-encoded-docker-config> 是对如下JSON内容进行Base64编码后的结果:

    {
      "auths": {
        "<harbor-url>": {
          "username": "<username>",
          "password": "<password>"
        }
      }
    }
    
  2. 更新 Service Account 或 Pod 的 ImagePullSecrets

    • 将上面创建的 Secret 关联到你的 Service Account 或直接在 Pod 定义中指定 ImagePullSecrets,这样kubelet就会使用这些凭证去拉取私有仓库中的镜像。

    对于Service Account:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: my-service-account
    secrets:
    - name: harbor-credentials
    

    或者,在Pod的定义中直接设置ImagePullSecrets:

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
      - name: my-container
        image: <harbor-url>/<project-name>/<image-name>:<tag>
      imagePullSecrets:
      - name: harbor-credentials
    
  3. 部署应用
    使用包含上述ImagePullSecrets设置的YAML文件通过kubectl创建或更新资源对象,这样Kubernetes就能够自动在创建Pod时使用正确的凭证从Harbor私有仓库拉取镜像。

综上所述,如果Harbor设置了项目级别的访问权限,确保在Harbor管理界面为相应服务账户分配了足够的权限来访问该项目下的镜像。同时,也可以考虑使用基于角色的访问控制(RBAC)策略来进一步细化集群内的授权规则。

标签:name,harbor,Harbor,镜像,Pod,K8S,ImagePullSecrets
From: https://www.cnblogs.com/huangjiabobk/p/18028685

相关文章

  • 在K8S中,请问harbor的secret创建能否直接创建资源清单?
    答案:当然可以,在Kubernetes(简称K8S)中,为了允许集群中的Pod能够从Harbor私有仓库拉取镜像,您可以直接通过编写资源清单(YAML文件)来创建一个Secret对象。这个Secret将包含访问Harbor所需的认证信息。以下是一个示例:apiVersion:v1kind:Secretmetadata:name:harbor-registry-secr......
  • 在k8S中,一个Pod如何实现数据持久化?数据共享?跨节点Pod如何实现数据共享?
    在Kubernetes(k8S)中,同一个Pod内实现数据持久化和数据共享的方式主要通过使用Volume(卷)来完成。Volume是Kubernetes提供的一种抽象,它代表了宿主机上的一个目录或存储设备,可以被Pod中的一个或多个容器挂载并访问。1.数据持久化:EmptyDir:在Pod创建时自动创建一个空......
  • 腾讯云Gradle镜像源——解决下载Gradle文件慢问题
    1.进入到自己工程目录下的wrapper文件夹。2.编辑gradle-wrapper文件使用mirrors.cloud.tencent.com/gradle来代替原来的services.gradle.org/distributions如:distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-6.7.1-all.zip其它源:华为云源:https://mirro......
  • 阿里云 Composer 全量镜像
    阿里云Composer全量镜像本镜像与 Packagist 官方实时同步,推荐使用最新的 Composer 版本。最新版本:2.7.1下载地址: https://mirrors.aliyun.com/composer/composer.phar最后更新官方:2024-02-2217:03:03阿里:2024-02-2217:03:1310秒内完成同步缓存刷新17 秒后......
  • k8s-configmap
    1.1什么是ConfigMap和Secret​ ConfigMap和Secret是Kubernetes系统上两种特殊类型的存储卷,ConfigMap对象用于为容器中的应用提供配置文件等信息。但是比较敏感的数据,例如密钥、证书等由Secret对象来进行配置。它们将相应的配置信息保存于对象中,而后在Pod资源上以存储卷的形式挂载......
  • 在k8S中,Pod的容器重启策略有哪些?
    在Kubernetes(k8S)中,Pod的容器重启策略(restartPolicy)定义了当Pod中的容器终止运行时kubelet应该如何处理。Kubernetes提供了以下三种重启策略:Always:默认值,表示无论容器以何种方式退出(包括正常退出、非零退出码或其他故障),kubelet都会自动重启该容器。这个策略适用......
  • 在k8S中,如何实现Pod中容器的文件和宿主机之间相互拷贝?
    在Kubernetes(k8S)中,要实现Pod中容器的文件与宿主机之间的相互拷贝,可以使用kubectlcp命令。以下是具体的命令格式和用法:从Pod中复制文件到本地(宿主机):kubectlcp[NAMESPACE/]POD:CONTAINER_PATHLOCAL_FILEPATH例如,将名为my-pod的Pod中,容器内的/path/to/file-i......
  • 在k8S中,镜像下载策略有哪些?
    在Kubernetes(k8S)中,镜像下载策略主要体现在imagePullPolicy这个字段上,它控制了Pod中容器镜像的拉取行为。以下是三种不同的imagePullPolicy策略:Always:当imagePullPolicy设置为Always时,每次创建新Pod或重启Pod中的容器时,Kubernetes都会尝试从指定的regist......
  • 在k8S中,使用kubectl logs无法查看日志是什么原因,如何让其能够查看?
    在Kubernetes(k8S)中,使用kubectllogs命令无法查看Pod日志的原因可能有多种。以下是一些常见原因及其相应的排查和解决方法:Pod状态问题:检查Pod是否处于Running状态。如果Pod处于Pending、CrashLoopBackOff或其他非运行状态,日志可能无法获取。确保Pod正常启......
  • Docker 常用基础|镜像命令
    Docker常用基础|镜像命令一、基础命令dockerversion#查看docker版本信息dockerinfo#查看docker及环境信息dockerhelp#查看帮助文档二、镜像命令dockerimages#列出本地主机上的镜像dockersearch[options]<某个XXX镜像名字>#搜索镜像一般在do......