Как исправить ошибку «Failed to Connect» с внешнего балансировщика нагрузки, развернутого через службу в k8s? - PullRequest
0 голосов
/ 25 сентября 2019

Я развернул модуль в AKS и пытаюсь подключиться к нему через внешний балансировщик нагрузки.

Элементы, которые я сделал для устранения неполадок:

  • Проверено (с помощью kubectl), модуль развернут в k8s и работает правильно.
  • Проверено (с помощью netstat) Сетевой порт80 в «прослушивании».Я вошел в модуль, используя 'kubectl exec'

.yaml-файл, который я использовал для развертывания:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: qubo
  namespace: qubo-gpu
spec:
  replicas: 1
  selector:
    matchLabels:
      app: qubo
  template:
    metadata:
      labels:
        app: qubo
    spec:
      containers:
        - name: qubo-ctr
          image: <Blanked out>
          resources:
            limits:
              nvidia.com/gpu: 1
          command: ["/app/xqx"]
          args: ["80"]
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: api
  namespace: qubo-gpu
  annotations:
spec:
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 80
  selector:
    app: qubo

1 Ответ

1 голос
/ 27 сентября 2019

Оказалось, что это моя ошибка в коде того, как я открыл сокет.В надежде, что это поможет кому-то еще, вот как я решил проблему:

  1. Получил IP для модуля: kubectl get pods -o wide
  2. Создан новый модуль Ubuntu в кластере: kubectl run -it --rm --restart=Never --image=ubuntu:18.04 ubuntu bash
  3. Загруженный curl на новый модуль: apt-get update && apt-get install -y curl
  4. Попытка свернуться на IP-адрес модуля (с шага 1): curl -v -m5 http://<Pod IP>:80

Шаг 4 не выполнен дляОднако я смог успешно запустить докер-контейнер на моей машине и подключиться.Проблема заключалась в том, что я открыл соединение как localhost вместо 0.0.0.0.

...