DNS-baserad belastningsutjämning med flera kluster med Azure Kubernetes Fleet Manager (förhandsversion)

Azure Kubernetes Fleet Manager kan användas för att skapa och hantera DNS-baserad belastningsutjämning med flera kluster för offentliga arbetsbelastningar som distribueras i medlemskluster.

Viktigt!

Förhandsversionsfunktionerna i Azure Kubernetes Fleet Manager är tillgängliga via självbetjäning och opt-in. Förhandsversioner tillhandahålls "i befintligt skick" och "i mån av tillgång," och de är undantagna från servicenivåavtal och begränsad garanti. Förhandsversioner av Azure Kubernetes Fleet Manager omfattas delvis av kundsupport på bästa sätt. Dessa funktioner är därmed inte avsedda för produktionsanvändning.

Våra förhandsversioner av dataplanets nätverk släpps via vårt networking.fleet.azure.com/v1beta1 API. Om du inte ser förhandsgranskningsobjekt kontrollerar du att du begär API:et networking.fleet.azure.com/v1beta1 när du interagerar med Fleet Manager-hubbklustret.

Ett diagram som visar en konceptuell översikt över hur Fleet Manager stöder DNS-belastningsutjämning i tre medlemskluster med hjälp av Azure Traffic Manager och Kubernetes ServiceExport-resurser.

För att leverera offentlig belastningsutjämning för flera kluster med DNS använder Fleet Manager Azure Traffic Manager med en viktad routningsprofil för att fungera som klientdel för Services export från medlemskluster. Du kan använda den här funktionen för belastningsutjämning på både nivå 4 och 7.

Fleet-administratörer använder kubectl för att skapa och konfigurera TrafficManagerProfile och TrafficManagerBackend resurser i Fleet Manager-hubbklustret. TrafficManagerProfile definierar en Azure Traffic Manager-profil som innehåller konfiguration för hälsoövervakning av slutpunkter, där den associerade definierar TrafficManagerBackend som ska belastningsutjämnas.

Tjänster i medlemskluster kan läggas till i belastningsutjämningen genom att skapa en ServiceExport i klustret och konfigurera ett unikt DNS-värdnamn för Service. Valfria vikter kan definieras som konfigurerar trafikroutningsbeteende mellan kluster. Om arbetsbelastningen distribueras med hjälp av Fleet Managers klusterresursplacering kan DNS-värdnamnet konfigureras vid placering med hjälp av en ResourceOverride.

Skapandet och konfigurationen av den associerade Traffic Manager hanteras av Fleet Manager, där vagnparksadministratörer kan köra upplevelsen från slutpunkt till slutpunkt med kubernetes-API:et.

TrafficManagerProfile-egenskaper

Resursen TrafficManagerProfile tillhandahåller en Kubernetes-objektrepresentation av en Standard Azure Traffic Manager-profil.

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

Viktiga egenskaper att förstå är:

  • name: används som DNS-prefix för trafficmanager.net DNS-namnet. Den måste vara unik. Om namnet redan används misslyckas distributionen.
  • namespace: måste vara samma som motsvarande TrafficManagerBackend resurser och Service resurser.
  • monitorCOnfig: motsvarar standardövervakningskonfigurationen för Azure Traffic Manager. Azure Traffic Manager-slutpunktsövervakningsalternativ som inte stöds är: Anpassade rubrikinställningar; förväntade statuskoder.

TrafficManagerBackend-egenskaper

Resursen TrafficManagerBackend tillhandahåller ett Kubernetes-objekt som används för att lagra serverdelsslutpunkter som Traffic Manager kan överväga för att ta emot trafik. Innan trafiken dirigeras till en slutpunkt måste en ServiceExport skapas.

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

Viktiga egenskaper att förstå är:

  • spec/profile/name: måste matcha motsvarande TrafficManagerProfile.
  • spec/backend/name: måste matcha det exporterade tjänstnamnet för att möjliggöra belastningsutjämning.
  • spec/weight: valfri vikt (prioritet) för den här serverdelen. Heltalsvärde mellan 0 och 1 000. Om den utelämnas använder Traffic Manager standardvikten "1". Ange "0" för att inaktivera trafikroutning utan att ta bort den associerade Traffic Manager-profilresursen. Mer information finns i Den viktade routningsmetoden i Azure Traffic Manager.

ServiceExport-egenskaper

Om du vill lägga till en slutpunkt för en Service i Traffic Manager skapar du en ServiceExport resurs i medlemsklustret som innehåller tjänsten. Resursen ServiceExport måste skapas i samma namnområde som den Service som ska exporteras.

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

Viktiga egenskaper att förstå är:

  • metadata/namespace: måste matcha namnområdet för det Service som ska exporteras.
  • metadata/annotations/networking.fleet.azure.com/weight: valfri vikt (prioritet) för den här tjänstexporten. Heltalsvärde mellan 0 och 1 000. Om den utelämnas använder Traffic Manager standardvikten "1". Ange till 0 för att inaktivera trafikroutning utan att ta bort den associerade tjänstslutpunkten. Mer information finns i Den viktade routningsmetoden i Azure Traffic Manager.

Unikt DNS-värdnamn via tjänstanteckning

För att kunna lägga till en Service i Traffic Manager måste den ha ett unikt DNS-värdnamn. DNS-värdnamnet kan anges genom att följa den rekommenderade AKS-metoden för att använda annoteringen som visas service.beta.kubernetes.io/azure-dns-label-name.

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

DNS-etikettanteckningen ResourceOverride kan åsidosättas med hjälp av funktionen i Fleet Manager, vilket gör det möjligt att distribuera unika värdnamn i flera kluster. För mer information, se instruktionsguiden för DNS-belastningsutjämning.

Styra trafikroutning

I det här avsnittet tittar vi på vanliga scenarier för att kontrollera trafikroutning mellan kluster.

Distribuera trafik mellan kluster

Om du vill tillåta Traffic Manager att överväga alla kluster för att ta emot trafik använder du de definitioner som visas.

  1. Skapa en TrafficManagerBackend resurs och utelämna egenskapen weight .

    apiVersion: networking.fleet.azure.com/v1beta1
    kind: TrafficManagerBackend
    metadata:
      name: app
      namespace: work
    spec:
      profile:
        name: myatm
      backend:
        name: app
    
  2. I varje kluster skapar du en ServiceExport och utelämnar egenskapen weight .

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

När Traffic Manager har distribuerats väljer den ett kluster slumpmässigt genom att beakta alla kluster med samma vikt.

Distribuera trafik mellan kluster med olika vikter

Om du vill ge Traffic Manager inställningstips när du väljer kluster anger du weight egenskapen för objekten TrafficManagerBackend och ServiceExport .

  1. Skapa en TrafficManagerBackend resurs och ange egenskapen weight till 100.

    apiVersion: networking.fleet.azure.com/v1beta1
    kind: TrafficManagerBackend
    metadata:
      name: app
      namespace: work
    spec:
      profile:
        name: myatm
      backend:
        name: app
      weight: 100
    
  2. Skapa en ServiceExport och ange weight-egenskapen till ett värde som representerar den prioritet Traffic Manager ska använda när den överväger ett kluster för att ta emot trafik.

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

När den har distribuerats föredrar Traffic Manager kluster med högre vikt. Det krävs inte att du anger viktvärdet för varje kluster. Om du anger viktvärdet på samma sätt i fler än ett kluster, kommer Traffic Manager att betrakta dessa kluster lika.

Undanta ett kluster från trafikroutning

Om du vill undanta ett kluster från trafikroutning anger du weight egenskapen till 0 på resursen ServiceExport . Den här vikten tar bort slutpunkten från Traffic Manager-konfigurationen.

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

TrafficManagerProfile-borttagningsbeteende

När en TrafficManagerProfile Kubernetes-resurs tas bort tas även den associerade Azure Traffic Manager och dess slutpunkter bort och begäranden dirigeras inte längre till kluster.

Om du vill stoppa trafikroutningen men behålla Azure Traffic Manager och dess slutpunkter anger du weight egenskapen till 0 på resursen TrafficManagerBackend .

Nästa steg