当前位置:   article > 正文

Harbor 无法下载镜像的一个原因_harbor retrying

harbor retrying

问题描述

无法从 harbor 通过 docker pull 下载镜像。

这可能是一个个例,只有特定网络情况下才会发生的问题。由于我这种网络情况下发生了多次,因此有必要记录下来。

环境

  1. Harbor 通过 https://IP 提供服务,使用自签名的证书。
  2. Harbor 有两个网卡,分别是 10.10.1/2410.10.10/24,HTTPS 服务证书指定的 10.10.10/24 的 IP。
  3. k8s 新的几个集群都在 10.10.0/24 网段。
  4. 这几个新的集群都无法从 Harbor 下载镜像。

处理方法

一开始在 k8s 添加了到 10.10.10/24 的路由,能 ping 通,但是仍然无法 pull。

经过排查网络问题,发现在 Harbor 上响应请求时,找不到 10.10.0/24 网段的服务器,在 Harbor 同样配置路由后解决。配置路由就遇到了 Harbor Https 私有证书配置注意事项 中提过的证书问题。按照注意事项配置后解决。

CentOS 添加路由

参考: Add a Static Route on CentOS

添加临时路由

Linux 通过命令添加路由时都是临时的,重启后就丢了。

临时路由可以测试看看,而且也可以保证不重启的情况下让路由生效。

ip route add 10.10.0.0/24 via 10.10.1.1 dev ens160
  • 1

其中 dev ens160 可以不提供,会自动选择可用网卡。
本文遇到的问题需要在两个端互相添加路由。

添加永久路由

根据自己的网卡名,在 /etc/sysconfig/network-scripts/ 下面添加对应的 route-网卡名 配置文件,例如 route-ens160,添加路由内容,和上面命令一样,就是 ip route add 后面跟着的内容:

10.10.0.0/24 via 10.10.1.1 dev ens160
  • 1

配置路由后重启网络 systemctl restart network

Ansible 脚本

- name: harbor route and ca
  hosts: docker
  vars:
    ca_file: /etc/docker/certs.d/HARBOR_IP/ca.crt
    route_file: /etc/sysconfig/network-scripts/route-ens160
  tasks:
   - name: Create /etc/docker/certs.d/HARBOR_IP
     file:
       path: /etc/docker/certs.d/HARBOR_IP
       state: directory
       mode: '0751'
   - name: copy ca_file
     copy: src=ca.crt dest={{ ca_file }}
   - name: copy route_file
     copy: src=route-ens160 dest={{ route_file }}
   - name: restart service network
     service:
       name: network
       state: restarted
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

当前目录需要提供 harbor 的 ca.crt 以及网卡对应的路由配置文件 route-ens160

CA 证书路径需要将实际的 IP 替换脚本中的 HARBOR_IP

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/913116
推荐阅读
相关标签
  

闽ICP备14008679号