K8s-无法从另一个节点访问服务/集群IP

时间:2020-07-19 07:07:29

标签: kubernetes docker-registry

我正在尝试使用console.log("Returned data: "+ pageQuery)通过服务/ ClusterIP访问(从工作节点)(在工作节点上)一个pod,但是它不起作用。

有关服务的一些信息

curl http://cluster_ip:port_no

这是有关Pod的一些信息

masternode@Master:/localdocker$ kubectl describe svc registry
Name:              registry
Namespace:         default
Labels:            io.kompose.service=registry
Annotations:       kompose.cmd: kompose convert -f docker-compose.yaml -o localregistry.yaml
                   kompose.version: 1.1.0 (36652f6)
Selector:          io.kompose.service=registry
Type:              ClusterIP
IP:                10.100.126.230
Port:              5000  5000/TCP
TargetPort:        5000/TCP
Endpoints:         192.168.171.74:5000
Session Affinity:  None
Events:            <none>```

这是一个练习练习,我可以在没有任何NodePort的情况下(在他们的实际环境中)进行操作。

请让我知道是否需要其他信息。

1 个答案:

答案 0 :(得分:4)

这是一种预期的行为,因为ClusterIP类型的服务只能从kubernetes集群内部访问,即可以从另一个Pod等访问。

如果您想通过kubernetes集群外部的服务(即从节点本身)访问Pod,请使用NodePort类型的服务。

通过NodePort服务公开该文件后,您将可以使用curl http://<NODE-IP>:<NODE-PORT>

对其进行访问

ClusterIP在群集的服务网络上创建,并且节点位于不同的网络中。通过创建NodePort服务,每个节点网络中都会打开一个端口,以将流量转发到ClusterIP。因此,本质上NodePort在内部使用ClusterIP,是建立在ClusterIP之上的更高层次的抽象。