我采用的kubesphere-2.1进行all-in-on模式安装,安装的机器ip是192.168.3.178,通过在开启应用商店后,部署了一个在应用商店里面的harbor应用,部署之前,修改了harbor的安装配置文件,关闭了tls, 之后一切安装正常,安装完成之后,在kubesphere中能够看到habor的ingress路由,最后我在kubesphere应用中开启了网关nodeport暴露端口31093,并且在自己的笔记本上绑定了host为: 192.168.3.178 core.harbor.domain。 最后在笔记本访问http://core.harbor.domain:31093能够正常访问harbor,并且能够登陆。 由于笔记本上(mac)也安装了docker daemon,所以使用 docker login -u admin -p Harbor12345 core.harbor.domain:31093 登陆harbor,但是无法login,
报错如下: Get http://core.harbor.domain:31093/v2/: Get https://core.harbor.domain/service/token?account=admin&client_id=docker&offline_token=true&service=harbor-registry: Service Unavailable

从错误来看,是get harbor的一个方法没有加上端口,因为这个机制是docker login它内部处理出来的,感觉是因为需要授权,所以内部重定向到了一个地址,而这个地址并没有识别端口而是默认采用80。另外我又在all-in-one这台机器上,直接使用容器ip进行访问harbor,而容器是暴露80端口,所以docker login 就成功了。想问一下,这种问题怎么解决?我想让k8s中的harbor的能力释放到连接到内网所有机器上,让开放人员在本机都能够访问到harbor,而不只是在对应点k8s节点上

    你配置下insecure-registries试试
    在/etc/docker/daemon.json 加上
    {
    “insecure-registries”: [
    “core.harbor.domain:31093″
    ]
    }
    然后重启docker

    • alex 回复了此帖

      wanjunlei 试过了哈 不是这个问题 这个解决是因为http访问harbor需要配置,我现在已经配过了,出现的问题是另外一个

      8 个月 后
      1 年 后

      题主你这个问题怎么解决?我也是在 k8s 集群用 helm 部署了 harbor。在 k8s 集群内的所有节点都能成功 docker login 到 harbor。但是,在k8s 集群以外的服务器,docker login 就一直失败。

      题主看见了回复,请分享一下解决方法。