Рейтинг:0

Входной шлюз Istio не может подключаться более чем к одной реплике службы.

флаг in

Я настраиваю Istio в новом кластере AWS EKS и создаю базовое развертывание nginx для тестирования. Когда развертывание имеет только одну реплику, оно работает отлично, отвечая менее чем за 100 мс. Когда я добавляю одну реплику, время отклика нового модуля увеличивается как сумасшедшее, в среднем около 10 секунд.

Основываясь на предложениях из других источников, я обновил конфигурация сетки чтобы отключить автоматические повторы:

конфигурация сетки:
   defaultHttpRetryPolicy: {}

После того, как это произошло, я обнаружил, что запросы ко второму поду всегда терпят неудачу:

"GET / HTTP/1.1" 503 UF upstream_reset_before_response_started{connection_failure} - "-" 0 91 10003 - "108.249.9.111,10.1.0.117" "curl/7.68.0" "6fa51be8-1441-4454-8d 1b-a03c93b257dc"" example.com" "10.1.52.62:80" исходящий |80||nginx.my-namespace.svc.cluster.local - 10.1.108.189:8080 10.1.0.117:21410 - -

Моя установка следующая:

# AWS ALB Ingress -> istio-ingressgateway (ClusterIP) -> шлюз -> виртуальный сервис -> сервис -> nginx

Версия API: networking.istio.io/v1beta1
вид: Шлюз
метаданные:
  имя: по умолчанию
спецификация:
  селектор:
    istio: входной шлюз
  серверы:
  - порт:
      номер: 80
      имя: http
      протокол: HTTP
    хосты:
    - "*"

---

Версия API: networking.istio.io/v1beta1
вид: виртуалсервис
метаданные:
  имя: нгинкс
спецификация:
  хосты:
  - "example.com"
  шлюзы:
  - По умолчанию
  http:
  - маршрут:
    - пункт назначения:
        хост: nginx

---

апиВерсия: v1
вид: сервис
метаданные:
  имя: нгинкс
  этикетки:
    приложение: nginx
спецификация:
  селектор:
    приложение: nginx
  порты:
    - порт: 80
      имя: http

---
apiVersion: приложения/v1
вид: развертывание
метаданные:
  имя: нгинкс
  этикетки:
    приложение: nginx
    версия: v1
спецификация:
  реплики: 2
  ревизияHistoryLimit: 1
  селектор:
    метки соответствия:
      приложение: nginx
      версия: v1
  шаблон:
    метаданные:
      этикетки:
        приложение: nginx
        версия: v1
    спецификация:
      контейнеры:
        - имя: nginx
          изображение: nginx: последний
          порты:
            - контейнерПорт: 80
          Ресурсы:
            Запросы:
              память: 100Ми
              процессор: 100 м
            пределы:
              память: 1500Ми
              процессор: 1000 м

Версии:

$ istioctl версия
версия клиента: 1.13.2
версия плоскости управления: 1.13.2
версия плоскости данных: 1.13.2 (1 прокси)


$ версия kubectl --short
Версия клиента: v1.21.11
Версия сервера: v1.21.5-eks-bc4871b
Рейтинг:0
флаг in

Я понял, что моя проблема была связана с неправильно настроенными правилами группы безопасности для узлов. Я не разрешал трафик между узлами, не позволяя входному шлюзу istio взаимодействовать с модулями на других узлах.

Используя модуль AWS EKS Terraform, я добавил следующее:


  node_security_group_additional_rules = {

    ingress_self_all = {
      description = "От узла к узлу все порты/протоколы"
      протокол = "-1"
      из_порта = 0
      to_port = 0
      тип = "вход"
      я = правда
    }
    выход_все = {
      description = "Узел весь выход"
      протокол = "-1"
      из_порта = 0
      to_port = 0
      тип = "выход"
      cidr_blocks = ["0.0.0.0/0"]
    }
  }

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.