Невозможно получить доступ к StreamSets через URL-адрес на K8s

Я использую сценарий 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'

Ниже мой 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"}

Может ли кто-нибудь помочь мне понять, в чем проблема?


person Shuvodeep Ghosh    schedule 30.04.2020    source источник
comment
Любая помощь? Пожалуйста   -  person Shuvodeep Ghosh    schedule 01.05.2020


Ответы (1)


Возможно, я неправильно понимаю, но почему служба должна реагировать на IP-адрес локального хоста 127.0.0.1?

Вы создаете сопоставление NodePort, которое автоматически создает ClusterIP — вы можете видеть это в списке ваших служб: указанную вами спецификацию порта (в данном случае 8630).

В качестве альтернативы, если вы хотите напрямую получить доступ к созданному вами NodePort, вы должны нажать на прямой внутренний IP-адрес узла (узлов), на котором работает модуль. Выполните kubectl get nodes -o wide и запишите внутренний IP-адрес интересующего вас узла, а затем выполните вызов по этому IP-адресу в сочетании с nodePort, который вы указали для службы (в данном случае 30029).

В зависимости от того, на каком уровне вы выполняете SSH-выполнение (модуль, узел, контейнер и т. д.), разрешение для 127.0.0.1 может быть совершенно другим — контейнер, в который вы выполняете, не разрешает 127.0. .0.1 к адресу хоста, на котором он работает, а скорее разрешается к поду, в котором он работает.

person Mitch Barnett    schedule 01.05.2020
comment
Даже если я попытался свернуть внутренний IP-адрес с портом узла, время ожидания соединения истекло. - person Shuvodeep Ghosh; 06.05.2020