Настраиваемая проба работоспособности для Шлюз приложений для контейнеров
Шлюз приложений для контейнеров отслеживает работоспособность всех целевых объектов серверной части по умолчанию. Поскольку целевые объекты серверной части становятся работоспособными или неработоспособными, Шлюз приложений для контейнеров распределяет трафик только в здоровые конечные точки.
Помимо проверки работоспособности по умолчанию проверку также можно настроить в соответствии с требованиями приложения. В этой статье рассматриваются как пробы работоспособности по умолчанию, так и пользовательские пробы работоспособности.
Порядок и логика проверки работоспособности приведены следующим образом:
- Используйте определение настраиваемого ресурса HealthCheckPolicy (CR).
- Если нет проверки работоспособности HealthCheckPolicy CR, используйте пробу готовности
- Если не определена проба готовности, используйте пробу работоспособности по умолчанию.
Следующие свойства составляют пользовательские пробы работоспособности:
Свойство | Значение по умолчанию |
---|---|
interval | Как часто пробы работоспособности секунд должны отправляться в серверный целевой объект. Минимальный интервал должен составлять > 0 секунд. |
timeout | Сколько времени в секундах запрос должен ждать, пока запрос не помечается как сбой. Минимальный интервал должен составлять > 0 секунд. |
healthyThreshold | Количество проб работоспособности перед маркировкой работоспособности целевой конечной точки. Минимальный интервал должен быть > 0. |
port | Номер порта, используемый при проверии целевого объекта серверной части. |
неработоспособныйThreshold | Количество проб работоспособности, которые завершаются сбоем, прежде чем серверный целевой объект должен быть помечен как неработоспособный. Минимальный интервал должен быть > 0. |
grpc | Указывает, ожидается ли серверная служба подключения gRPC. Значение должно быть равно {} . |
(http) | Указывает, ожидается ли серверная служба http-подключений. |
Узел (http) | Имя узла, указанное в запросе к целевому объекту серверной части. |
Путь (http) | Конкретный путь запроса. Если нужно загрузить один файл, путь может быть /index.html. |
(http -> match) statusCodes | Содержит два свойства и end определяет диапазон допустимых кодов состояния HTTP, start возвращаемых серверной частью. |
useTLS | Указывает, должна ли проверка работоспособности применять TLS. Если не указано, проверка работоспособности использует тот же протокол, что и служба, если для проверки работоспособности используется тот же порт. Если порт отличается, проверка работоспособности является ясной. |
Проверка работоспособности по умолчанию
Шлюз приложений для контейнеров автоматически настраивает пробу работоспособности по умолчанию, если не определить настраиваемую конфигурацию пробы или настроить пробу готовности. Поведение мониторинга работает путем выполнения HTTP-запроса GET к IP-адресам настроенных целевых объектов серверной части. Для проб по умолчанию, если серверный целевой объект настроен для HTTPS, проба использует HTTPS для проверки работоспособности целевых объектов серверной части.
Дополнительные сведения о реализации см. в разделе HealthCheckPolicyConfig в спецификации API.
При использовании пробы работоспособности по умолчанию используются следующие значения для каждого свойства пробы работоспособности:
Свойство | Значение по умолчанию |
---|---|
interval | 5 секунд |
timeout | 30 секунд |
healthyThreshold | 1 проба |
неработоспособныйThreshold | 3 пробы |
port | Используемый номер порта определяется номером внутреннего порта в ресурсе входящего трафика или серверным портом HttpRoute в ресурсе HttpRoute. |
Узел (http) | localhost |
Путь (http) | / |
useTLS | HTTP для HTTP и HTTPS при указании TLS. |
1 HTTPS используется при указании внутреннего протокола HTTPSPolicy для целевой серверной службы (для реализации API шлюза) или IngressExtension с использованием протокола HTTPS (для реализации API входящего трафика).
Примечание.
Пробы работоспособности инициируются со значением User-Agent
Microsoft-Azure-Application-LB/AGC
.
Пользовательская проверка работоспособности
В API шлюза и API входящего трафика можно определить настраиваемую пробу работоспособности, определив ресурс HealthCheckPolicyPolicyPolicy и ссылаясь на службу, с которыми должны проверяться пробы работоспособности. Так как служба ссылается на ресурс HTTPRoute или Ingress со ссылкой на класс Шлюз приложений для контейнеров, для каждой ссылки используется настраиваемая проба работоспособности.
В этом примере проба работоспособности, которая создается Шлюз приложений для контейнеров, отправляет имя узла contoso.com в модули pod, составляющие тестовую службу. Запрошенный протокол имеет http
путь /
. Проба создается каждые 5 секунд и ожидает 3 секунды, прежде чем определить время ожидания подключения. Если ответ получен, код http-ответа от 200 до 299 (включительно 200 и 299) считается работоспособным, все остальные ответы считаются неработоспособными.
kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: HealthCheckPolicy
metadata:
name: gateway-health-check-policy
namespace: test-infra
spec:
targetRef:
group: ""
kind: Service
name: test-service
namespace: test-infra
default:
interval: 5s
timeout: 3s
healthyThreshold: 1
unhealthyThreshold: 1
port: 8123
# grpc: {} # defined if probing a gRPC endpoint
http:
host: contoso.com
path: /
match:
statusCodes:
- start: 200
end: 299
useTLS: true
EOF