镜像仓库 FAQ¶
本页列出使用镜像仓库时常见的一些问题和解决办法。
DCE 5.0 标准版为什么不能使用中间件部署镜像仓库¶
部署镜像仓库时会用到一些中间件,但 DCE 5.0 标准版中没有中间件,中间件属于白金版。
部署镜像仓库时如何校验配置的中间件网络是否可连接¶
登录部署 Harbor 的目标集群,在任意节点中执行 ping
命令,测试是否能连接到中间件组件。
镜像空间列表看不到私有镜像¶
镜像仓库 v0.7.0-v0.7.3 和 v0.8.0 存在一个 bug,会导致看不到私有镜像,请升级到更高版本的镜像仓库。
在使用中间件 MinIO 部署镜像仓库时报错¶
在使用中间件 MinIO 部署镜像仓库时,需要先手动通过 MinIO 管理平台创建好 bucket。
仓库集成支持的 Harbor 最低版本¶
在仓库集成时因使用了 Harbor 的功能,对版本有一定要求,目前支持的已知最低版本为 v2.4.0。更早的旧版本将不可用。
离线环境镜像扫描器失败¶
镜像扫描因为依赖漏洞数据,默认是去 CVE 官网获取漏洞数据。 如果是一个纯离线环境,则不能正常进行漏洞扫描,会执行失败。
创建托管 Harbor 时第一步集群校验通过后创建 Harbor 仍然出错¶
目前只校验了集群中是否有 CRD,没有校验 harbor-operator
服务,可能会出现不存在 harbor-operator
服务的情况,导致不能正确地创建 Harbor。
本地执行 docker login {ip}
之后报错¶
执行 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
出现这个错误是因为 registry
是 https
服务,是使用了非签名证书或者不安全证书,就会提示这个错误。
解决办法是在 /etc/docker/daemon.json
配置文件中 "insecure-registries"
加入对应的 IP。
之后重启 systemctl restart docker
。
创建托管 Harbor 接入外部 PostgreSQL、Redis,密码含有特殊字符 (!@#$%^&*)
,导致服务启动失败¶
目前密码中不能有特殊字符,不然会出现服务启动失败的情况,可以使用大小写字母和数字组合的情况。
harbor-operator 安装不成功¶
harbor-operator 安装不成功需要检查这几点,cert-manager
是否安装成功,installCRDs
是否设置为 true
。
安装 harbor-operator 的 helm 任务是否成功。
创建托管 Harbor 可以使用 redis cluster 模式吗¶
目前 Harbor 仍然不能使用 redis cluster
模式。
私有镜像在非镜像仓库模块能看到吗?¶
镜像仓库是严格按照 DCE 5.0 的权限来执行的,在镜像仓库中某个用户必须要属于某个租户/工作空间, 才能看到当前租户下的私有镜像空间,否则即使管理员也看不到。
私有镜像绑定到工作空间后查询不到私有镜像¶
私有镜像绑定工作空间后程序需要异步执行很多逻辑,所以不会马上看到。 这个过程会受到系统的影响,如果系统响应较快,则异步执行较快,通常 1 分钟内就能看到。最长应该不会超过 5 分钟。
托管Harbor创建后能访问了但是状态依然不健康¶
目前托管 Harbor 页面上的状态和仓库集成的状态是二合一的,当两个状态都为健康的时候才是健康, 因此可能出现托管 Harbor 已经可以访问了,但是状态依然不健康,这种情况需要等一个服务探测周期, 一个探测周期是 10 分钟,在一个周期后就会恢复如初。
创建的托管仓库状态为不健康¶
-
A1:用户输入的数据库、Redis、S3 存储等信息有误,导致无法连接,可通过查看日志文件进行排查。 现象主要是几个核心服务有 Pod 启动失败,可以通过查看日志进一步确认原因。
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
资源状态。 -
A3:如果 A2 排查后无误,继续在
kpanda-global-cluster
集群上排查registrysecrets.kangaroo.io
资源是否创建,以及status
情况。提示: namespace 默认为 kangaroo-system。
Tip
创建 Project
或上传镜像后发现页面上的镜像空间和可用存储未增加¶
这是因为 UI 页面上在 托管 Harbor 首页、仓库集成详情中的统计信息是异步获取的数据,会有一定的延迟,最长延迟为 10 分钟。
仓库集成后但状态为不健康¶
首先确认实例是否真的健康,如果实例不健康,则需要排查实例的问题;
如果实例健康,则通过在 kpanda-global-cluster
集群上排查 registrysecrets.kangaroo.io
资源是否创建,并排查 status
情况,这样可以初步确认问题所在。
提示:namespace 默认为 kangaroo-system
。
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
表明Project
和Workspace
已经进行了绑定, 此时需要去镜像部署的目标集群namespace
中确认是否生成名为registry-secret
的 secret 。 -
A2:如果确认已经生成名为
registry-secret
的 secret ,则需要确认secret
中的 dockerconfigjson 是否正确。