Sdílet prostřednictvím


Vyrovnávání zatížení na základě DNS s více clustery pomocí Azure Kubernetes Fleet Manageru (Preview)

Azure Kubernetes Fleet Manager se dá použít k vytváření a správě vyrovnávání zatížení více clusterů založeného na DNS pro veřejné úlohy nasazené napříč členskými clustery.

Důležité

Funkce Azure Kubernetes Fleet Manageru ve verzi Preview jsou dostupné na samoobslužné bázi s výslovným souhlasem. Ukázky jsou poskytovány "jak jsou" a "podle aktuální dostupnosti" a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Verze Preview Azure Kubernetes Fleet Manageru jsou částečně pokryty zákaznickou podporou s vynaložením maximálního úsilí. Proto tyto funkce nejsou určené pro produkční použití.

Naše ukázkové verze datové sítě jsou vydávány přes naše rozhraní API. Pokud nevidíte náhledové objekty, zkontrolujte, zda při interakci s clusterem hubu Fleet Manager vyžadujete rozhraní API networking.fleet.azure.com/v1beta1.

Diagram znázorňující koncepční přehled toho, jak Fleet Manager podporuje vyrovnávání zatížení DNS napříč třemi členskými clustery pomocí prostředků Azure Traffic Manager a Kubernetes ServiceExport

K poskytování veřejného vyrovnávání zatížení v rámci více clusterů pomocí DNS využívá Správce prostředků Fleet Azure Traffic Manager s váženým profilem směrování, aby fungoval jako front-end pro Services export z členských clusterů. Tuto funkci je možné použít pro vyrovnávání zatížení vrstvy 4 i 7.

Správci vozového parku používají kubectl k vytvoření a konfiguraci TrafficManagerProfile a TrafficManagerBackend prostředků v clusteru centra Fleet Manager. Definuje TrafficManagerProfile profil Azure Traffic Manageru, který zahrnuje konfiguraci monitorování stavu koncového bodu s přidruženou TrafficManagerBackend definicí Service pro vyrovnávání zatížení.

Služby v členských clusterech lze přidat do vyrovnávání zatížení vytvořením ServiceExport na clusteru a konfigurací jedinečného názvu hostitele DNS pro Service. Volitelné váhy je možné definovat, které konfigurují chování směrování provozu mezi clustery. Pokud je úloha nasazena pomocí umístění prostředků clusteru Fleet Manageru, název hostitele DNS lze nakonfigurovat při umístění pomocí ResourceOverride.

Vytvoření a konfiguraci přidruženého Traffic Manageru spravuje Fleet Manager, přičemž správci vozového parku mohou řídit celkovou uživatelskou zkušenost pomocí rozhraní Kubernetes API.

TrafficManagerProfile – vlastnosti

Prostředek TrafficManagerProfile poskytuje reprezentaci objektu Kubernetes standardního profilu Azure Traffic Manageru.

apiVersion: networking.fleet.azure.com/v1beta1
kind: TrafficManagerProfile
metadata:
  name: myatm
  namespace: work
spec:
  monitorConfig:
    protocol: HTTP
    path: /api
    port: 8080
    intervalInSeconds: 30
    timeoutInSeconds: 10
    toleratedNumberOfFailures: 3

Mezi důležité vlastnosti, které je potřeba pochopit, patří:

  • name: slouží jako předpona trafficmanager.net DNS pro název DNS. Musí být jedinečný. Pokud se název už používá, nasazení selže.
  • namespace: musí být stejný jako odpovídající TrafficManagerBackend a Service prostředky.
  • monitorCOnfig: odpovídá standardní konfiguraci monitorování Azure Traffic Manageru. Nepodporované možnosti monitorování koncových bodů Azure Traffic Manageru jsou: vlastní nastavení hlaviček; očekávané stavové kódy.

TrafficManagerBackend – vlastnosti

Prostředek TrafficManagerBackend poskytuje objekt Kubernetes, který slouží k ukládání back-endových koncových bodů, které služba Traffic Manager považuje za příjem provozu. Než se provoz přesměruje do koncového bodu, ServiceExport musí se vytvořit.

apiVersion: networking.fleet.azure.com/v1beta1
kind: TrafficManagerBackend
metadata:
  name: app
  namespace: work
spec:
  profile:
    name: myatm
  backend:
    name: app
  weight: 100

Mezi důležité vlastnosti, které je potřeba pochopit, patří:

  • spec/profile/name: musí odpovídat odpovídajícímu TrafficManagerProfile.
  • spec/backend/name: Musí odpovídat názvu exportované služby pro vyrovnávání zatížení.
  • spec/weight: Volitelná váha (priorita), která se má použít pro tento back-end. Celočíselná hodnota mezi 0 a 1 000. Pokud tento parametr vynecháte, Traffic Manager použije výchozí váhu 1. Chcete-li zakázat směrování provozu, aniž byste odstranili přidružený prostředek profilu Traffic Manager, nastavte na hodnotu '0'. Další informace najdete v tématu Metoda váženého směrování Azure Traffic Manageru.

Vlastnosti ServiceExport

Chcete-li do Traffic Manageru přidat koncový bod pro Service, vytvořte v členském clusteru, který obsahuje službu, zdroj ServiceExport. Prostředek ServiceExport musí být vytvořen ve stejném oboru názvů jako Service, aby byl exportován.

apiVersion: networking.fleet.azure.com/v1alpha1
kind: ServiceExport
metadata:
  name: kuard-export
  namespace: kuard-demo
  annotations:
    networking.fleet.azure.com/weight: "50"

Mezi důležité vlastnosti, které je potřeba pochopit, patří:

  • metadata/namespace: musí odpovídat oboru názvů Service, které mají být exportovány.
  • metadata/annotations/networking.fleet.azure.com/weight: Volitelná váha (priorita), která se má použít pro tento export služby. Celočíselná hodnota mezi 0 a 1 000. Pokud tento parametr vynecháte, Traffic Manager použije výchozí váhu 1. Pokud chcete zakázat směrování provozu bez odstranění přidruženého koncového bodu služby, nastavte na hodnotu 0. Další informace najdete v tématu Metoda váženého směrování Azure Traffic Manageru.

Jedinečný název hostitele DNS prostřednictvím anotace služby

Aby bylo možné přidat záznam Service do Traffic Manageru, musí mít jedinečný název hostitele DNS. Název hostitele DNS lze nastavit podle doporučené metody AKS použití poznámky service.beta.kubernetes.io/azure-dns-label-name , jak je znázorněno.

apiVersion: v1
kind: Service
metadata:
  name: kuard-svc
  namespace: kuard-demo
  labels:
    app: kuard
  annotations:
    service.beta.kubernetes.io/azure-dns-label-name: kuard-demo-cluster-01
spec:
  selector:
    app: kuard
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

Označení štítku DNS je možné přepsat pomocí funkce ResourceOverride Fleet Manager, což umožňuje nasadit jedinečné názvy hostitelů v různých clusterech. Další informace najdete v průvodci postupy vyrovnávání zatížení DNS.

Řízení směrování provozu

V této části se podíváme na běžné scénáře řízení směrování provozu mezi clustery.

Distribuce provozu mezi clustery

Pokud chcete službě Traffic Manager umožnit, aby zvážil jakýkoli cluster, aby přijímal provoz, použijte zobrazené definice.

  1. Vytvořte TrafficManagerBackend prostředek a vynechte vlastnost weight.

    apiVersion: networking.fleet.azure.com/v1beta1
    kind: TrafficManagerBackend
    metadata:
      name: app
      namespace: work
    spec:
      profile:
        name: myatm
      backend:
        name: app
    
  2. Na každém clusteru vytvořte ServiceExport a vynechte vlastnost weight.

    apiVersion: networking.fleet.azure.com/v1alpha1
    kind: ServiceExport
    metadata:
      name: kuard-export
      namespace: kuard-demo
    

Po nasazení služba Traffic Manager náhodně vybere cluster s ohledem na všechny clustery se stejnou hmotností.

Distribuce provozu mezi clustery s různými váhami

Chcete-li službě Traffic Manager poskytnout rady předvoleb při výběru clusterů, nastavte weight vlastnost u TrafficManagerBackend objektů a ServiceExport objektů.

  1. Vytvořte zdroj TrafficManagerBackend a nastavte vlastnost weight na 100.

    apiVersion: networking.fleet.azure.com/v1beta1
    kind: TrafficManagerBackend
    metadata:
      name: app
      namespace: work
    spec:
      profile:
        name: myatm
      backend:
        name: app
      weight: 100
    
  2. ServiceExport Vytvořte a nastavte weight vlastnost na hodnotu představující prioritu Traffic Manageru, kterou byste měli použít při zvažování clusteru pro příjem provozu.

    apiVersion: networking.fleet.azure.com/v1alpha1
    kind: ServiceExport
    metadata:
      name: kuard-export
      namespace: kuard-demo
      annotations:
        networking.fleet.azure.com/weight: "40"
    

Po nasazení bude Traffic Manager upřednostňovat clustery s vyšší váhou. Není nutné, abyste nastavili hodnotu váhy v každém clusteru. Pokud nastavíte stejnou hodnotu váhy ve více než jednom clusteru, Traffic Manager bude tyto clustery považovat za stejné.

Vyřaďte cluster ze směrování provozu

Pokud chcete vyloučit cluster ze směrování provozu, nastavte weight vlastnost 0 na ServiceExport prostředek. Tato váha odebere koncový bod z konfigurace Traffic Manageru.

apiVersion: networking.fleet.azure.com/v1alpha1
kind: ServiceExport
metadata:
  name: kuard-export
  namespace: kuard-demo
  annotations:
    networking.fleet.azure.com/weight: "0"

Chování odstranění profilu TrafficManager

TrafficManagerProfile Po odstranění prostředku Kubernetes se odstraní také přidružený Azure Traffic Manager a jeho koncové body a požadavky se už nesměrují do clusterů.

Pokud chcete zastavit směrování provozu, ale zachovat Azure Traffic Manager a jeho koncové body, nastavte vlastnost weight na prostředku 0 na TrafficManagerBackend.

Další kroky