С одним набором реплик приложение работает.
Поэтому я изменил набор реплик на 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-адрес (без порта).
Любое предложение о том, как это исправить?