Невозможно получить доступ к StreamSets через URL на K8s - PullRequest
1 голос
/ 30 апреля 2020

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

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

1 Ответ

2 голосов
/ 01 мая 2020

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

Вы создаете отображение NodePort, которое автоматически создает ClusterIP - вы можете увидеть что в списке ваших сервисов: 10.104.162.67 Этот IP-адрес должен использоваться для доступа к приложению, чей порт вы предоставили сервису, в сочетании с заданной вами спецификацией 'port' (в данном случае 8630) .

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

В зависимости от того, с каким слоем вы * S SH -ing / exe c -ing (pod, node, conatiner, et c.), Разрешение для 127.0.0.1 может быть совершенно другим - a Контейнер, в который вы входите c, не разрешает 127.0.0.1 в адрес хоста, на котором он работает, а скорее разрешает в модуль, в котором он работает.

...