Рейтинг:0

консул: увеличил набор реплик, но новые модули не запускаются и получают Init: CrashLoopBackOff, как это исправить?

флаг ke

С одним набором реплик приложение работает. Поэтому я изменил набор реплик на 3.

Тогда две другие копии подов не запускаются: kubectl получить стручки

 customservice-c8645cd6-7gghm 0/3 Инициализация:CrashLoopBackOff 8 17 м
    customservice-c8645cd6-f5nbn 3/3 Бег 0 6h50m
    customservice-c8645cd6-fh57n 0/3 Инициализация:CrashLoopBackOff 8 17 м


 kubectl описывает модуль customservice-c8645cd6-fh57n  

 Имя: customservice-c8645cd6-7gghm
Пространство имен: по умолчанию
Приоритет: 0
Узел: ip-192-168-93-234.us-west-2.compute.internal/192.168.93.234
Время начала: вторник, 20 июля 2021 г., 19:34:48 +0530
Ярлыки: app=customservice
              consul.hashicorp.com/connect-inject-status=injected
              стручок-шаблон-хэш = c8645cd6
              сервис = пользовательский сервис
Аннотации: consul.hashicorp.com/connect-inject: true
              consul.hashicorp.com/connect-inject-status: введен
              consul.hashicorp.com/connect-service: customservice
              consul.hashicorp.com/connect-service-порт: 18170
              consul.hashicorp.com/connect-service-upstreams: панель инструментов: 9002
              kubernetes.io/psp: екс.привилегированный
              prometheus.io/путь: /metrics
              prometheus.io/порт: 20200
              prometheus.io/scrape: правда
Статус: ожидание
IP: 192.168.93.88
IP-адреса:
  IP: 192.168.93.88
Контролируется: ReplicaSet/customservice-c8645cd6
Инициальные контейнеры:
  консул-подключение-инъекция-инициализация:
    Идентификатор контейнера: docker://a9bf6bb490f5c21637c18aff681d49d53692f09a3333bf34adb2080816953e26
    Изображение: hashicorp/consul:1.9.7
    Идентификатор изображения: docker-pullable://hashicorp/consul@sha256:37c7a001af46a68f8e3513bd8180e7f84133d428b0e4ce5cf385d3e54f894760
    Порт: <нет>
    Хост-порт: <нет>
    Команда:
      /бин/ш
      -ec

      экспорт CONSUL_HTTP_ADDR="${HOST_IP}:8500"
      экспорт CONSUL_GRPC_ADDR="${HOST_IP}:8502"

      # Зарегистрируйте службу. HCL хранится в томе, поэтому
      # хук preStop может получить к нему доступ, чтобы отменить регистрацию сервиса.
      кошка <<EOF >/consul/connect-inject/service.hcl
      Сервисы {
        идентификатор = "${SERVICE_ID}"
        имя = "кастомсервис"
        адрес = "${POD_IP}"
        порт = 18170
        мета = {
          имя_пода = "${POD_NAME}"
          k8s-namespace = "${POD_NAMESPACE}"
        }
      }

      Сервисы {
        идентификатор = "${PROXY_SERVICE_ID}"
        name = "customservice-sidecar-proxy"
        вид = "подключить-прокси"
        адрес = "${POD_IP}"
        порт = 20000
        мета = {
          имя_пода = "${POD_NAME}"
          k8s-namespace = "${POD_NAMESPACE}"
        }

        прокси {
        конфиг {
          envoy_prometheus_bind_addr = "0.0.0.0:20200"
        }
          destination_service_name = "индивидуальная служба"
          destination_service_id = "${SERVICE_ID}"
          local_service_address = "127.0.0.1"
          локальный_сервис_порт = 18170
          вверх по течению {
            назначение_тип = "сервис"
            имя_назначения = "панель управления"
            локальный_связной_порт = 9002
          }
        }

        проверяет {
          name = "Общедоступный прокси-слушатель"
          tcp = "${POD_IP}:20000"
          интервал = "10 с"
          deregister_critical_service_after = "10 минут"
        }

        проверяет {
          name = "Псевдоним назначения"
          alias_service = "${SERVICE_ID}"
        }
      }
      EOF

      /bin/consul сервисный реестр \
        /consul/connect-inject/service.hcl

      # Генерируем загрузочный код посланника
      /bin/консул коннект коннект \
        -proxy-id="${PROXY_SERVICE_ID}" \
        -prometheus-scrape-path="/метрики" \
        -prometheus-backend-port="20100" \
        -bootstrap > /consul/connect-inject/envoy-bootstrap.yaml

      # Скопируйте бинарный файл Консула
      cp /bin/consul /consul/connect-inject/consul
    Состояние: Ожидание
      Причина: CrashLoopBackOff
    Последнее состояние: прекращено
      Причина: ошибка
      Код выхода: 1
      Начато: Вт, 20 июл 2021 19:51:19 +0530
      Завершено: Вт, 20 июля 2021 г., 19:51:23 +0530
    Готово: Ложь
    Количество перезапусков: 8
    Ограничения:
      процессор: 50 м
      память: 150Ми
    Запросы:
      процессор: 50 м
      память: 25Ми
    Среда:
      HOST_IP: (v1:status.hostIP)
      POD_IP: (v1:status.podIP)
      POD_NAME: customservice-c8645cd6-7gghm (v1:metadata.name)
      POD_NAMESPACE: по умолчанию (v1:metadata.namespace)
      SERVICE_ID: $(POD_NAME)-индивидуальная служба
      PROXY_SERVICE_ID: $(POD_NAME)-customservice-sidecar-proxy
    Маунты:
      /consul/connect-inject from consul-connect-inject-data (rw)
      /var/run/secrets/kubernetes.io/serviceaccount из customservice-token-4xf6t (ro)
Контейнеры:
  таможенная служба:
    Идентификатор контейнера:
    Изображение: customserverlinux.azurecr.io/custom:latest
    Идентификатор изображения:
    Порт: 18170/TCP
    Хост-порт: 0/TCP
    Состояние: Ожидание
      Причина: Инициализация пода
    Готово: Ложь
    Количество перезапусков: 0
    Среда:
      DASHBOARD_CONNECT_SERVICE_HOST: 127.0.0.1
      DASHBOARD_CONNECT_SERVICE_PORT: 9002
    Маунты:
      /home/spring/AppData/Local/erwin/custom Server/ из пользовательского тома (rw)
      /var/run/secrets/kubernetes.io/serviceaccount из customservice-token-4xf6t (ro)
  посланник-коляска:
    Идентификатор контейнера:
    Изображение: envoyproxy/envoy-alpine:v1.16.0
    Идентификатор изображения:
    Порт: <нет>
    Хост-порт: <нет>
    Команда:
      посланник
      --config-путь
      /consul/connect-inject/envoy-bootstrap.yaml
      -л
      отлаживать
    Состояние: Ожидание
      Причина: Инициализация пода
    Готово: Ложь
    Количество перезапусков: 0
    Среда:
      HOST_IP: (v1:status.hostIP)
      CONSUL_HTTP_ADDR: $(HOST_IP):8500
    Маунты:
      /consul/connect-inject from consul-connect-inject-data (rw)
      /var/run/secrets/kubernetes.io/serviceaccount из customservice-token-4xf6t (ro)
  консул-коляска:
    Идентификатор контейнера:
    Изображение: hashicorp/consul-k8s:0.25.0
    Идентификатор изображения:
    Порт: <нет>
    Хост-порт: <нет>
    Команда:
      консул-k8s
      консул-коляска
      -service-config
      /consul/connect-inject/service.hcl
      -consul-binary
      /консул/подключить-инжект/консул
      -enable-metrics-merging=true
      -объединенные метрики-порт=20100
      -service-метрики-порт=18170
      -service-metrics-path=/метрики
    Состояние: Ожидание
      Причина: Инициализация пода
    Готово: Ложь
    Количество перезапусков: 0
    Ограничения:
      процессор: 20 м
      память: 50Ми
    Запросы:
      процессор: 20 м
      память: 25Ми
    Среда:
      HOST_IP: (v1:status.hostIP)
      CONSUL_HTTP_ADDR: $(HOST_IP):8500
    Маунты:
      /consul/connect-inject from consul-connect-inject-data (rw)
      /var/run/secrets/kubernetes.io/serviceaccount из customservice-token-4xf6t (ro)
Условия:
  Тип Статус
  Инициализировано Ложь
  Готов Ложь
  ContainersReady False
  PodScheduled True
Объемы:
  пользовательский объем:
    Тип: EmptyDir (временный каталог, который разделяет время существования модуля)
    Середина:
    Ограничение размера: <не установлено>
  customservice-токен-4xf6t:
    Тип: секрет (том, заполненный секретом)
    Имя секрета: customservice-token-4xf6t
    Необязательно: ложь
  консул-подключение-вводить-данные:
    Тип: EmptyDir (временный каталог, который разделяет время существования модуля)
    Середина:
    Ограничение размера: <не установлено>
Класс QoS: взрывоустойчивый
Селекторы узлов: <нет>
Допуски: node.kubernetes.io/not-ready:NoExecute op=Существует в течение 300 с.
                 node.kubernetes.io/unreachable:NoExecute op=Существует 300 с.
События:
  Тип Причина Возраст от сообщения
  ---- ------ ---- ---- -------
  Обычный Запланировано 19 м по умолчанию планировщик Успешно назначен default/customservice-c8645cd6-7gghm для ip-192-168-93-234.us-west-2.compute.internal
  Обычный Вытащил 17 м (x5 на 19 м) kubelet Образ контейнера "hashicorp/consul:1.9.7" уже присутствует на машине
  Обычный Создан 17м (x5 больше 19м) kubelet Создан контейнер consul-connect-inject-init
  Обычный Started 17m (x5 over 19m) kubelet Started container consul-connect-inject-init
  Предупреждение BackOff 3m50s (x68 более 18m) kubelet Back-off перезапуск неудачного контейнера

Поскольку контейнер инициализации дает сбой, журналы для этого контейнера:

kubectl регистрирует customservice-c8645cd6-64j2j -c consul-connect-inject-init

Зарегистрированный сервис: customservice
Зарегистрированный сервис: customservice-sidecar-proxy
флаг указан, но не определен: -prometheus-scrape-path
Применение:
  -значение адреса
        Адрес локальной сети для объявления при регистрации службы шлюза
  -admin-access-log-path строка
        Путь для записи журнала доступа к серверу администрирования. Если журнал доступа не требуется, укажите «/dev/null». По умолчанию будет использоваться «/dev/null». (по умолчанию "/dev/null")
  -admin-bind строка
        Адрес: порт для запуска сервера администратора посланника. Envoy требует этого, но необходимо позаботиться о том, чтобы он не подвергался воздействию ненадежной сети, поскольку он имеет полный контроль над секретами и конфигурацией прокси-сервера. (по умолчанию "локальный: 19000")
  -bind-address <имя>=<ip>:<порт>
        Адрес привязки для использования вместо правил привязки по умолчанию, заданных в виде пар <имя>=<ip>:<порт>. Этот флаг можно указать несколько раз, чтобы добавить несколько адресов привязки.
  -бутстрап
        Сгенерируйте bootstrap.json, но не запускайте посланника
  -ca-файл значение
        Путь к CA-файлу, который будет использоваться для TLS при общении с Consul. Это также можно указать с помощью переменной среды CONSUL_CACERT.
  -ca-значение пути
        Путь к каталогу сертификатов ЦС, которые будут использоваться для TLS при общении с Consul. Это также можно указать с помощью переменной среды CONSUL_CAPATH.
  -значение клиентского сертификата
        Путь к файлу сертификата клиента, который будет использоваться для TLS, если включено «verify_incoming». Это также можно указать с помощью переменной среды CONSUL_CLIENT_CERT.
  -клиент-ключ значение
        Путь к файлу ключа клиента, который будет использоваться для TLS, если включено «verify_incoming». Это также можно указать с помощью переменной среды CONSUL_CLIENT_KEY.
  -отменить регистрацию после критической строки
        Время, в течение которого может произойти сбой проверки работоспособности служб шлюза до отмены регистрации (по умолчанию «6 часов»).
  -envoy-бинарная строка
        Полный путь к бинарному файлу envoy для запуска. По умолчанию будет просто искать $PATH. Игнорируется, если используется -bootstrap.
  -envoy-версия строка
        Устанавливает версию envoy, которую имеет двоичный файл envoy. (по умолчанию "1.16.4")
  -выставить-серверы
        Предоставьте доступ к серверам для федерации WAN через этот ячеистый шлюз.
  -строка шлюза
        Тип шлюза для регистрации. Один из: завершение, вход или сетка
  -grpc-адрес строка
        Задайте адрес и порт gRPC агента (в формате http(s)://host:port). В качестве альтернативы вы можете указать CONSUL_GRPC_ADDR в ENV. (по умолчанию "192.168.93.234:8502")
  -http-адрес адрес
        Адрес и порт HTTP-агента Consul. Значение может быть IP-адресом или DNS-адресом, но оно также должно включать порт. Это также можно указать с помощью переменной среды CONSUL_HTTP_ADDR. Значение по умолчанию — http://127.0.0.1:8500. Схему также можно настроить на HTTPS, установив переменную среды CONSUL_HTTP_SSL=true.
  -mesh-шлюз
        Настройте Envoy как Mesh Gateway.
  -пространство имен по умолчанию
        Указывает пространство имен для запроса. Если не указано, пространство имен будет выведено из токена ACL запроса или по умолчанию будет использоваться пространство имен по умолчанию. Пространства имен — это функция Consul Enterprise.
  -нет центральной конфигурации
        По умолчанию конфигурация начальной загрузки прокси-сервера может быть настроена централизованно.Для этого требуется, чтобы команда выполнялась на том же агенте, что и прокси-сервер, и чтобы агент был доступен при выполнении команды. В тех случаях, когда какое-либо предположение нарушается, этот флаг предотвратит попытку команды разрешить конфигурацию из локального агента.
  -опустить-устаревшие-теги
        В Consul 1.9.0 формат тегов метрик для кластеров Envoy был обновлен с consul.[service|dc|...] на consul.destination.[service|dc|...]. Старые теги были сохранены для обратной совместимости, но их можно отключить с помощью этого флага.
  -прокси-идентификатор строки
        Идентификатор прокси на локальном агенте.
  -регистр
        Зарегистрируйте новую службу шлюза перед настройкой и запуском Envoy.
  -служебная строка
        Имя службы для использования при регистрации
  -sidecar-для строки
        Идентификатор экземпляра службы на локальном агенте, для которого этот прокси должен стать вспомогательным. Для этого требуется, чтобы прокси-служба была зарегистрирована в агенте как прокси-сервер подключения с Proxy.DestinationServiceID, для которого задано это значение. Если зарегистрировано более одного такого прокси, это не удастся.
  -tls-имя-сервера значение
        Имя сервера, используемое в качестве хоста SNI при подключении через TLS. Это также можно указать с помощью переменной среды CONSUL_TLS_SERVER_NAME.
  -значение токена
        Токен ACL для использования в запросе. Это также можно указать с помощью переменной среды CONSUL_HTTP_TOKEN. Если не указано, запрос по умолчанию будет использовать токен агента Consul по адресу HTTP.
  -токен-файл значение
        Файл, содержащий токен ACL для использования в запросе вместо указанного в аргументе -token или переменной среды CONSUL_HTTP_TOKEN. Это также можно указать с помощью переменной среды CONSUL_HTTP_TOKEN_FILE.
  -wan-адрес значение
        WAN-адрес для рекламы при регистрации службы шлюза. Для входных шлюзов требуется только IP-адрес (без порта).

Любое предложение о том, как это исправить?

Рейтинг:0
флаг cn
Vit

Однако я не консул-эксперт.. проверьте consul-connect-inject-init задерживает модули в цикле podInitialisation из-за флага -prometheus-scrape-path #919. Сама проблема та же, что и у вас, поведение такое же, и ошибка тоже такая же. Может эта информация вам поможет

Зарегистрированный сервис: customservice
Зарегистрированный сервис: customservice-sidecar-proxy
флаг указан, но не определен: -prometheus-scrape-path
Применение:
События:
  Тип Причина Возраст от сообщения
  ---- ------ ---- ---- -------
  Обычный Запланировано 19 м по умолчанию планировщик Успешно назначен default/customservice-c8645cd6-7gghm для ip-192-168-93-234.us-west-2.compute.internal
  Обычный Вытащил 17 м (x5 на 19 м) kubelet Образ контейнера "hashicorp/consul:1.9.7" уже присутствует на машине
  Обычный Создан 17м (x5 больше 19м) kubelet Создан контейнер consul-connect-inject-init
  Обычный Started 17m (x5 over 19m) kubelet Started container consul-connect-inject-init
  Предупреждение BackOff 3m50s (x68 более 18m) kubelet Back-off перезапуск неудачного контейнера

Какая у вас версия?

чтобы включить слияние метрик sidecar и метрик приложения (connectInject.metrics.defaultEnableMerging : true) вы должны быть используя Consul 1.10.0-alpha1 или выше. Вы можете удалить это значение, пока вы обновили Консул. Вы по-прежнему можете получать только метрики посланников, пока используя более старую версию Consul с connectInject.metrics.defaultEnabled: true.

ПОДРОБНЕЕ: Аннотация к рулю Consul connectinject-metrics-defaultenablemerging

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

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