跳转至

镜像仓库 FAQ

本页列出使用镜像仓库时常见的一些问题和解决办法。

DCE5.0标准版本中不能使用中间件部署

DCE 5.0标准版本中没有中间件,中间件属于白金版。

如何校验配置的中间件网络是否可连接

登陆部署 Harbor 的目标集群,在任意节点中执行 ping 命令,测试是否能连接到中间件组件。

镜像空间列表看不到私有镜像

镜像仓库在 v0.7.0-v0.7.3v0.8.0 版本系统存在一个 bug,会导致看不到私有镜像。

在使用中间件部署的 Minio 时

在使用中间件部署的 Minio 时,需要先手动通过 Minio 管理平台创建好 bucket。

仓库集成支持的 Harbor 最低版本

在仓库集成时因使用了 Harbor 的功能,对版本有一定要求,目前支持的已知最低版本为:2.4.0。更早的旧版本将不可用。

离线环境镜像扫描器失败

镜像扫描因为依赖漏洞数据,默认是去 CVE 官网获取漏洞数据。 如果是一个纯离线环境,则不能正常进行漏洞扫描,会执行失败。

trivy

如何在离线环境更新或者导入漏洞库

  1. 数据库位置

    /root/.cache/trivy/db
    
  2. 查看帮助中也可以获取

    trivy -h | grep 'TRIVY_CACHE_DIR'
       --cache-dir value  cache directory (default: "/root/.cache/trivy") [$TRIVY_CACHE_DIR]
    
  3. 数据库下载

创建托管 Harbor 时第一步集群校验通过后创建 Harbor 仍然出错

目前只校验了集群中是否有 CRD,没有校验 harbor-operator 服务,可能会出现不存在 harbor-operator 服务的情况,导致不能正确的创建 Harbor

本地执行 docker login {ip} 之后报错

Error response from daemon: Get "https://{ip}/v2/": x509: cannot validate certificate for {ip} because it doesn't contain any IP SANs

出现这个错误是因为 registryhttps 服务,是使用了非签名证书或者不安全证书,就会提示这个错误, 解决办法是在 /etc/docker/daemon.json 配置文件中 "insecure-registries" 加入对应的 IP。

"insecure-registries": [
  "{ip}",
  "registry-1.docker.io"
]

之后重启 systemctl restart docker

创建托管 harbor 接入外部 PG、Redis,密码含有特殊字符 (!@#$%^&*) 之类的,服务启动失败

目前密码中不能有特殊字符,不然会出现服务启动失败的情况,可以使用大小写字母和数字组合的情况。

Harbor Operator 安装不成功

Harbor Operator 安装不成功需要检查这几点,cert-manager是否安装成功,installCRDs 是否设置为true。 安装Harbor operatorhelm 任务是否成功。

创建托管 Harbor 可以使用 redis cluster 模式吗

目前 Harbor 仍然不能使用 redis cluster 模式。

私有镜像在非镜像仓库模块能看到吗?

镜像仓库是严格按照 DEC 5.0 的权限来执行的,在镜像仓库中某个用户必须要属于某个租户, 才能看到当前租户下的私有镜像空间,否则即使管理员也不能看到。

私有镜像绑定工作空间后不能查询到

私有镜像绑定工作空间后程序需要异步执行很多逻辑,所以不会马上能看到。 这个过程会受到系统的影响,如果系统响应较快,则异步执行较快,1 分钟内能看到。最长应该不会超过 5 分钟。

托管Harbor创建后能访问了但是状态依然不健康

目前托管 Harbor 页面上的状态和仓库集成的状态是二合一的,当两个状态都为健康的时候才是健康, 因此可能出现托管 Harbor 已经可以访问了,但是状态依然不健康,这种情况需要等一个服务探测周期, 一个探测周期是 10 分钟,在一个周期后就会恢复如初。

创建的托管仓库状态为不健康

仓库不健康

  • A1:用户输入的数据库、Redis、S3 存储等信息有误,导致无法连接,可通过查看日志文件进行排查。 现象主要是几个核心服务有 Pod 启动失败,可以通过查看日志进一步确认原因。

    kubectl -n kangaroo-lrf04 get pods
    
    NAME                                                         READY   STATUS    RESTARTS   AGE
    trust-node-port-harbor-harbor-chartmuseum-57fdfb9cdc-qznwc   1/1     Running   0          20h
    trust-node-port-harbor-harbor-core-855f8df46c-cgqb9          1/1     Running   0          20h
    trust-node-port-harbor-harbor-jobservice-6b958dbc57-ks997    1/1     Running   0          20h
    trust-node-port-harbor-harbor-portal-5cf6bf659b-kj6gd        1/1     Running   0          20h
    trust-node-port-harbor-harbor-registry-5ccbf457c5-qrtx5      2/2     Running   0          20h
    trust-node-port-harbor-harbor-trivy-dbdc8945-xh6rv           1/1     Running   0          20h
    trust-node-port-nginx-deployment-677c74576-7kmh4             1/1     Running   0          20h
    
  • A2:如果 A1 排查无误,排查 harborcluster 资源是否健康,如下命令查看 harborcluster 资源状态。

    kubectl -n kangaroo-lrf04 get harborclusters.goharbor.io
    
    NAME              PUBLIC URL                 STATUS
    trust-node-port   https://10.6.232.5:30010   healthy
    
  • A3:如果 A2 排查无误,在 kpanda-global-cluster 集群上排查 registrysecrets.kangaroo.io 资源是否创建,以及 status 情况。

    提示: namespace 默认为 kangaroo-system。

    kubectl -n kangaroo-system get registrysecrets.kangaroo.io
    
    NAME                        AGE
    inte-bz-harbor-1            34d
    
    kubectl -n kangaroo-system describe registrysecrets.kangaroo.io inte-bz-harbor-1
    

Tip

  • 上述 A1、A2 都在托管 Harbor 所在的集群上排查问题,目标集群通过如下页面路径查看:仓库实例 -> 概览 -> 部署位置
  • 上述 A3 在 kpanda-global-cluster 集群上验证。

创建 Project 或上传镜像后发现页面上的镜像空间和可用存储未增加

这是因为 UI 页面上在托管 Harbor 首页、仓库集成详情中的统计信息是异步获取的数据,会有一定的延迟,最长延迟为 10 分钟。

仓库集成后但状态为不健康

仓库集成不健康

首先确认实例是否真的健康,如果实例不健康,则需要排查实例的问题; 如果实例健康,则通过在 kpanda-global-cluster 集群上排查 registrysecrets.kangaroo.io 资源是否创建,并排查 status 情况,这样可以初步确认问题所在。

提示:namespace 默认为 kangaroo-system。

kubectl -n kangaroo-system get registrysecrets.kangaroo.io
NAME                     AGE
trust-test-xjw           34d
kubectl -n kangaroo-system get registrysecrets.kangaroo.io trust-test-xjw -o yaml
apiVersion: kangaroo.io/v1alpha1
kind: RegistrySecret
metadata:
  name: trust-test-xjw
  namespace: kangaroo-system
spec:
  ....
status:
  state:
    lastTransitionTime: "2023-03-29T03:27:31Z"
    message: 'Get "https://harbor.kangaroo.daocloud.io": dial tcp: lookup harbor.kangaroo.daocloud.io
      on 10.233.0.3:53: no such host'
    reason: RegistryHealthCheckFail
    status: "False"
    type: HealthCheckFail

仓库集成后,在镜像列表页面实例中不可查看

请确认仓库集成的资源是否健康,如果不健康是不会在镜像列表页面的实例列表中显示的。 确认方式请参考仓库集成后不健康的确认方法

Kpanda 镜像选择器中选中一个私有 Project 镜像但部署时提示镜像拉取失败

  • A1:能在镜像选择器中看到私有 Project 表明 ProjectWorkspace 已经进行了绑定, 此时需要去镜像部署的目标集群 namespace 中确认是否生成名为 registry-secretsecret

    kubectl -n default get secret registry-secret
    
    NAME              TYPE                             DATA   AGE
    registry-secret   kubernetes.io/dockerconfigjson   1      78d
    
  • A2:如果确认已经生成名为 registry-secretsecret,则需要确认 secret 中的 dockerconfigjson 是否正确。

    kubectl get secret registry-secret -o jsonpath='{.data.*}'| base64 -d | jq
    
    {
      "auths": {
        "127.0.0.1:5000": {
          "auth": "YWRtaW46SGFyYm9yMTIzNDU="
        }
      }
    }
    
    echo "YWRtaW46SGFyYm9yMTIzNDU=" | base64 -d
    
    admin:Harbor12345
    

评论