1

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

服务已启动并且 pod 正在运行。

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'

以下是我的 service.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"}

有人可以帮助我了解问题所在吗?

4

1 回答 1

2

也许我没有正确理解,但为什么该服务会响应 localhost IP 127.0.0.1

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

或者,如果您想直接访问您创建的 NodePort,那么您将点击运行 pod 的节点的直接内部 IP。执行 akubectl get nodes -o wide并记下您感兴趣的节点的内部 IP 地址,然后结合您为服务指定的 nodePort(在本例中为 30029)对该 IP 地址进行调用。

根据您在 SSH-ing/exec-ing 到的层(pod、node、conatiner 等),127.0.0.1 的分辨率可能完全不同 - 您执行到的容器无法解析 127.0 .0.1 到它正在运行的主机的地址,而是解析到它正在运行的 pod。

于 2020-05-01T20:25:54.100 回答