kubernetes - 创建的 Docker 注册表在集群内无法访问
问题描述
我在 aws 上使用 EKS 集群
我已将 docker 注册表创建为部署,然后在其上创建了一个 svc 和一个入口
在入口中,我为入口主机放置了 tls 机密
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 version o/p : Client Version: version.Info{Major:"1", Minor:"20+", GitVersion:"v1.20.4-eks-6b7464" , GitCommit:"6b746440c04cb81db4426842b4ae65c3f7035e53", GitTreeState:"clean", BuildDate:"2021-03-19T19:35:50Z", GoVersion:"go1.15.8", 编译器:"gc", 平台:"linux/arm64"}
服务器版本:version.Info{Major:"1", Minor:"19+", GitVersion:"v1.19.8-eks-96780e", GitCommit:"96780e1b30acbf0a52c38b6030d7853e575bcdf3", GitTreeState:"clean", BuildDate:"2021-03 -10T21:32:29Z",GoVersion:"go1.15.8",编译器:"gc",平台:"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)”
解决方案
推荐阅读
- javascript - 根据日期颜色的块表列
- openacc - openacc 在 acc 计算区域内用 C++ 中的 pow 函数声明问题
- php - 在共享主机上部署我的 laravel 应用程序后出现 HTTP ERROR 500
- python - 无法从外部读取来自我的 pypi 包的文本文件
- c++ - 如何在非可变宏旁边定义可变宏?
- javascript - Bootstrap Selectpicker - 隐藏选择框并始终显示下拉菜单
- python - 传递给优化器的意外关键字参数:加载 keras 模型时的名称
- ionic-framework - StencilJS 上不允许使用离子输入文件组件
- masstransit - 在新的传奇中重新处理特定的公共交通消息并最终确定当前
- asp.net - Asp.Net 应用程序性能变差