我正在使用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。