В Deckhouse Kubernetes Platform можно реализовать механизм Locality failover средствами модуля istio. Перед настройкой механизма убедитесь, что модуль включен в кластере.

Механизм Locality failover управляет маршрутизацией трафика и направляет его на приоритетный фейловер в случае недоступности определённых экземпляров сервисов.

При необходимости ознакомьтесь с документацией Locality failover.

С использованием Istio настраивается приоритетный географический фейловер между эндпоинтами. Для определения зоны применяются лейблы узлов с соответствующей иерархией:

  • topology.istio.io/subzone;
  • topology.kubernetes.io/zone;
  • topology.kubernetes.io/region.

Это полезно для межкластерного фейловера при использовании совместно с мультикластером.

Для активации Locality Failover используется ресурс DestinationRule, в котором также необходимо указать параметр outlierDetection.

Пример:

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: helloworld
spec:
  host: helloworld
  trafficPolicy:
    loadBalancer:
      localityLbSetting:
        enabled: true # Включение LF.
    outlierDetection: # Обязательное включение outlierDetection.
      consecutive5xxErrors: 1
      interval: 1s
      baseEjectionTime: 1m