Колба с Gunicorn на входе в Kubernetes дает ошибку 502 nginx - PullRequest
0 голосов
/ 01 ноября 2018

Я создал приложение для колб, которое я хотел бы добавить к входу в Kubernetes. В настоящее время у меня есть 2 вопроса, которые я не могу понять:

  1. Чтобы приложение фляги могло обрабатывать несколько запросов, я подумала, что добавлю gunicorn. Нужно ли мне это, или я могу смягчить это, используя какое-то автоматическое горизонтальное масштабирование и входной слой маршрутизации обрабатывает это? Я новичок в Kubernetes, и, возможно, решение проще, чем то, что я пробую ниже.
  2. Предполагая, что мне нужен оружейный рог, я продолжил и добавил его в докер для колб. Проблема, с которой я столкнулся, заключается в том, что я теперь получаю 502 Bad Gateway Error nginx, и журнал модуля не напечатал никаких ошибок. Если я создаю службу балансировки нагрузки вместо кластера IP, который я использую с входом, приложение фляги с единорогом работает нормально, точно так же, как приложение фляги на входе без без добавления gunicorn. Я понятия не имею, почему, следовательно, пишу этот вопрос. Dockerfile устанавливает все зависимости для запуска flask и завершается с:

    EXPOSE 8080
    
    CMD ["gunicorn", "--config", "/flaskapp/gunicorn_config.py", "run:app"]
    

    Я настроил свой вход следующим образом:

    apiVersion: v1
    items:
    - apiVersion: extensions/v1beta1
      kind: Ingress
     metadata:
       annotations:
         ingress.bluemix.net/client-max-body-size: 128m
         ingress.bluemix.net/rewrite-path: serviceName=flask-service rewrite=/; 
    spec:
      rules:
      - host: <my-domain>
        http:
          paths:
          - backend:
            serviceName: flask-service
            servicePort: 8080
          path: /flask/
      tls:
      - hosts:
        - <my-domain>
        secretName: <my-secret>
    status:
      loadBalancer:
        ingress:
        - ip: <ip>
    

    Сервис выглядит так:

    apiVersion: v1
    kind: Service
    metadata:
      name: flask-service
      labels:
        app: flask-service
    spec:
      type: ClusterIP
      ports:
      - port: 8080
        protocol: TCP
      selector:
        app: flask
    

    Развертывание также очень просто с указанием правильного образа и порта.

Учитывая, что мне нужен gunicorn (или аналогичный), как я могу устранить ошибку 502 Bad Gateway, которую я получаю?

1 Ответ

0 голосов
/ 02 ноября 2018
  1. IMO, вам не нужно масштабирование огнестрельного оружия (это избыточное убийство), так как HPA выполнит масштабирование, если ваши отдельные приложения уже созданы. Это зависит от процессоров, памяти или пользовательских метрик .

  2. Мне кажется, что ошибки 502 - это скорее проблема, связанная с настройкой gunicorn (есть ли ограничение для рабочих? Можете ли вы показать рабочим только 1 для тестирования? Как масштабируется внутри контейнера? лимит ресурсов на контейнер?). Трудно сказать, не глядя на бревна или окружающую среду, но может случиться так, что вы, рабочие-оружейники, забиваете контейнер, возвращая неверный ответ. Возможно, вы захотите попробовать - отладка на уровне журнала в командной строке gunicorn.

Надеюсь, это поможет.

...