创建的 Docker 注册表无法在集群内部访问

问题描述

我在 aws 上使用 EKS 集群

我已经创建了 docker 注册表作为部署,然后创建了一个 svc 和一个入口

在 ingress 中,我为 ingress Host 放置了 tls secrets

apiVersion: extensions/v1beta1
kind: Ingress
Metadata:
  annotations:
    kubernetes.io/ingress.class: Nginx
    Nginx.org/client-max-body-size: "0"
  creationTimestamp: "2021-06-18T05:10:02Z"
  generation: 1
  name: registry-ingress
  namespace: devops
  resourceVersion: "4126584"
  selfLink: /apis/extensions/v1beta1/namespaces/devops/ingresses/registry-ingress
  uid: d808177b-cb0b-4da2-82aa-5ab2f3c99109
spec:
  rules:
  - host: docker-registry.xxxx.com
    http:
      paths:
      - backend:
          serviceName: docker-registry
          servicePort: 5000
        path: /
        pathType: ImplementationSpecific
  tls:
  - hosts:
    - docker-registry.xxxx.com
    secretName: tls-registry

我有 4 个工作节点和一个跳转服务器 我面临的问题是,我能够从跳转主机访问入口地址上的 docker 注册表,但是从工作节点它因错误而失败,因此当我使用注册表中的图像创建任何 pod 时,它们也会因以下错误而失败

Worker 和 Jump 主机在同一个子网

request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

我尝试将服务 IP 和注册表入口主机放在 /etc/hosts 中,将证书复制到 /etc/docker.certs.d/registryname 。 任何提示都会很棒

集群信息: Kubernetes 版本:v1.19.8-eks-96780e kubectl 版本 o/p : 客户端版本:version.Info{Major:"1",Minor:"20+",GitVersion:"v1.20.4-eks-6b7464",GitCommit:"6b746440c04cb81db4426842b4ae65c3f7035e53","GitTree2 Build1Date:"-clean2 -19T19:35:50Z",GoVersion:"go1.15.8",编译器:"gc",平台:"linux/arm64"}

服务器版本:version.Info{Major:"1",Minor:"19+",GitVersion:"v1.19.8-eks-96780e",​​ GitCommit:"96780e1b30acbf0a52c38b6030d7853e575bcdf3:"BuildTreeState",GitTreeState 2021-03-10T21:32:29Z",平台:"linux/amd64"}

正在使用的云:AWS

安装方式:EKS

编辑 1

我检查了一个工作节点以找到 CRI,kubelet 进程如下,所以我认为 CRI 是 docker

/usr/bin/kubelet --cloud-provider aws --config /etc/kubernetes/kubelet/kubelet-config.json --kubeconfig /var/lib/kubelet/kubeconfig --container-runtime docker

但我确实看到 dockerd 和 containerd 进程都在工作节点上运行。

同样在检查 docker 服务日志时,我也遇到了同样的错误

Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2021-06-14 08:31:57 UTC; 4 days ago
Docs: https://docs.docker.com
Process: 12574 ExecStartPre=/usr/libexec/docker/docker-setup-runtimes.sh (code=exited,status=0/SUCCESS)
Process: 12571 ExecStartPre=/bin/mkdir -p /run/docker (code=exited,status=0/SUCCESS)
Main PID: 12579 (dockerd)
Tasks: 23
Memory: 116.5M
CGroup: /system.slice/docker.service
└─12579 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Jun 19 02:23:45 ip-xxxxx dockerd[12579]: time=“2021-06-19T02:23:45.876987774Z” level=error msg=“Handler for POST /v1.40/images/create returned error: Get https://xxxx: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)”

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)