我在3节点设置上运行Kubernetes(核心操作系统 - 从本指南设置 - https://coreos.com/kubernetes/docs/latest/deploy-master.html)。我需要在设置中运行一个私有的docker注册表,所以我按照这个指南:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/registry
我认为注册表pod正在运行,至少在端口5000上有来自注册表pod的空响应(指南说我应该得到“404 Unauthorized”响应)。我正在从busybox中测试它,它甚至可以使用dns主机名。
但主要问题是kube-registry-proxy将无法正常运行。通过在每个节点上的/ etc / kubernetes / manifest /文件夹中添加定义yaml,我能够启动并运行代理。当我从kube-system命名空间列出pod时,我看到:
kube-registry-proxy-192.168.10.4 1/1 Running 0 32m
kube-registry-proxy-192.168.10.5 1/1 Running 0 3d
kube-registry-proxy-192.168.10.6 1/1 Running 0 1d
这似乎工作正常。但是,当我ssh到Kube集群的任何节点,并尝试tu run
curl -v localhost:5000
我收到这个错误:
* Rebuilt URL to: localhost:5000/
* Trying 127.0.0.1...
* connect to 127.0.0.1 port 5000 failed: Connection refused
* Failed to connect to localhost port 5000: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 5000: Connection refused
还有,当我跑
sudo lsof -i|grep LISTEN
没有列出5000端口。有线索吗?
编辑:我需要的是能够从kubernetes中推送和拉取图像(因此pod可以使用来自那里的图像)并且还能够从外部推送图像(使用端口5000的端口转发方法就足够了,但是其他选择也欢迎)
它可能不是在听你的localhost
。如果您只想测试群集中任何节点的内部群集流量,则可以卷曲pod的IP或服务群集IP:
$ kubectl get po <your_pod> -o yaml | grep -i podip
podIP: <spod_private_ip>
$ curl <pod_private_ip>:5000
$ kubectl get svc <your_svc> -o yaml | grep -i -w 'clusterip\|port'
clusterIP: <cluster_ip>
port: 5000
$ curl <cluster_ip>:5000
要将服务公开给外部流量,您需要指定NodePort
或LoadBalancer
服务类型,如此K8s example中所示。