所有的坑都是因为自己学艺不精导致的,本人也不例外,记录本文其实只是一个提醒,是一个注意事项说明。希望在你看到本文之后,你的问题也能得以解决。

先来看一下 k3s 部署的配置文件 registries.yml 内容,如下:

---
mirrors:
  customreg:
    endpoint:
      - "https://ip-to-server:5000"
configs:
  customreg:
    auth:
      username: xxxxxx # 镜像仓库用户名
      password: xxxxxx # 镜像仓库密码
    tls:
      cert_file: <镜像仓库所用的客户端证书文件路径>
      key_file: <镜像仓库所用的客户端密钥文件路径>
      ca_file: <镜像仓库所用的ca文件路径>
      insecure_skip_verify: true <不开启TLS验证的时候才需要配置它为true>

官方虽然给了这个内容,但是没有做过多的详细说明,所以不能说人家官方有问题。


下面用具体的示例来描述上述配置应该怎么写。

假设你的私服使用 harbor 搭建的,你在 harbor 上创建了一个代理 dockerhub 的仓库,名为 dockerhub_proxy ,此时你本地服务器需要拉取一个镜像的实际地址是 test.shanhy.com/dockerhub_proxy/rancher/rancher:v2.5.11,则基于这个镜像地址,我们应该将 registries.yml 的配置如下:

---
mirrors:
  test.shanhy.com:
    endpoint:
      - "https://test.shanhy.com"
configs:
  test.shanhy.com:
    auth:
      username: admin
      password: harbor12345
    tls:
      cert_file: /etc/rancher/k3s/tls/_.shanhy.com.crt
      key_file: /etc/rancher/k3s/tls/_.shanhy.com_key.key
      ca_file: /etc/rancher/k3s/tls/ca_bundle.crt

特别注意事项:
1、mirrors 下的节点名称 test.shanhy.com 必须和你拉取镜像的 host 完全一致,如果你拉取镜像的 host 地址带有端口,这里也需要带端口,不然你镜像地址是 test.shanhy.com:8443/dockerhub_proxy/rancher/rancher:v2.5.11,那么对应就必须是 test.shanhy.com:8443
2、configs 下的节点名称必须和 mirrors 的节点名称完全一致。

其中参数 insecure_skip_verify 没有坑点,所以未列出。如果你不需要证书验证,就设置 insecure_skip_verify 为 true 并去掉关于证书的3行配置即可。

自签的证书,例如 Harbor 的证书是使用 openssl 自签的,则需要将客户端证书配置到 tls 中。


(END)

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐