1

我正在尝试从托管在本地网络上并使用本地计算机 /etc/hosts 文件指向的私有注册表部署映像。

我收到如下分辨率错误:

Failed to pull image "gitlab.example.com:5050/group/project:latest": rpc error: code = Unknown desc = failed to resolve image

我的 /etc/hosts 文件包含:

192.168.1.100 gitlab.example.com

使用 docker 拉/推非常好,因为使用 /etc/hosts 解决了

我已经尝试编辑 coredns 的 corefile 来解决问题,但它不起作用。

有人可以在这里指出我正确的方向吗?

4

1 回答 1

2

您可以尝试使用hostAliases 并将主机条目添加到您的 pod。Kubernetes 不会接受/etc/hosts来自主机/节点的文件。要么在 pod 中,要么通过 CoreDNS 解析。例如:

apiVersion: v1
kind: Pod
metadata:
  name: hostaliases-pod
spec:
  restartPolicy: Never
  hostAliases:
  - ip: "192.168.1.100" 
    hostnames:
    - "gitlab.example.com" 
  containers:
  - name: gitlab-hosts
    image: myimage
    command:
    - mygitlabjob
    args:
    - "arg1"

更新:

我想在这里看到问题。Ubuntu 上的 microk8s 在snap. 这意味着它被限制/沙盒在自己的容器中。这也意味着它可能不关心您机器的/etc/hosts文件。不幸的是,出于安全原因和防止篡改,snap 的文件系统以只读方式安装。

○ → pwd
/snap/microk8s/current
○ → sudo touch hosts
touch: cannot touch 'hosts': Read-only file system

如果您想以这种方式使用私有注册表,一些建议:

  • 请您的系统管理员将该条目添加到您的本地 DNS 服务器中,或者如果您是系统管理员,请添加它。
  • 使用使用 Docker 的替代小型 K8s 发行版。
  • 使用修改后的文件构建您自己的 microk8s snap /etc/hosts(硬)
于 2020-07-17T04:14:07.853 回答