无法通过K8s上的URL访问流集



我正在使用ansible脚本在k8s主节点上部署流集。有一个游戏,我正在检查流集仪表板是否可以通过访问http://127.0.0.1:{{streamsets_nodePort}}其中streamsets_nodePort: 30029。默认端口是30024,它被分配给了其他服务,所以我更改了端口

服务已启动,吊舱正在运行。

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

service/streamsets-service NodePort 10.104.162.67 <none> 18630:30029/TCP 24m

当我看到日志时,Running on URI : 'http://streamsets-0.streamsets-service.streamsets-ns.svc.cluster.local:18630'2020-04-30 13:45:58,149 [user:] [pipeline:] [runner:] [thread:main] [stage:] INFO WebServerTask -Running on URI : 'http://streamsets-0.streamsets-service.streamsets-ns.svc.cluster.local:18630'

以下是我的服务。yml

apiVersion: v1 kind: Service metadata: name: streamsets-service labels: name: streamsets spec: type: NodePort ports: - port: {{streamsets_port}} targetPort: 18630 nodePort: {{streamsets_nodePort}} selector: role: streamsets

以下是分配的端口详细信息:

streamsets_port: 8630

streamsets_nodePort: 30029

streamsets_targetPort: 18630

在我的游戏中,当我执行下面的块时

`- name: Check if Streamsets is accessible.`
`uri:`
`url: http://localhost:{{streamsets_nodePort}}`
`method: GET`
`status_code: 200`
`register: streamsets_url_status`
- debug:`
`var: streamsets_url_status.msg`

我在执行这个块时得到的输出-

fatal: [127.0.0.1]: FAILED! => {"changed": false, "content": "", "elapsed": 30, "msg": "Status code was -1 and not [200]: Connection failure: timed out", "redirected": false, "status": -1, "url": "http://localhost:30029"}

有人能帮我了解问题出在哪里吗

也许我没有正确理解,但为什么服务会在127.0.0.1的localhost IP上做出响应?

您正在创建一个NodePort映射,它会自动创建一个ClusterIP——您可以在服务列表中看到:10.104.162.67该IP应用于访问您已向服务公开其端口的应用程序,并结合您制定的"端口"规范(在本例中为8630(。

或者,如果你想直接访问你创建的NodePort,那么你可以直接访问pod运行的节点的内部IP。执行kubectl get nodes -o wide并记下您感兴趣的节点的内部IP地址,然后根据该IP地址和您为服务指定的nodePort(本例中为30029(进行调用。

根据您正在SSH执行的层(pod、node、conatiner等(,127.0.0.1的解析可能完全不同——您执行的容器不会将127.0.0.1解析为运行主机的地址,而是解析为运行的pod。

最新更新