Använda en offentlig standardlastbalanserare i Azure Kubernetes Service (AKS)

Azure Load Balancer fungerar på nivå 4 i OSI-modellen (Open Systems Interconnection) som stöder både inkommande och utgående scenarier. Den distribuerar inkommande flöden som anländer till lastbalanserarens front-end till instanserna i serverdelspoolen.

En offentlig lastbalanserare som är integrerad med AKS har två syften:

  • Ange utgående anslutningar till klusternoderna i det virtuella AKS-nätverket (VNet) genom att översätta den privata IP-adressen till en offentlig IP-adressdel i den utgående poolen.
  • Ge åtkomst till program via Kubernetes-tjänster av typen LoadBalancer, så att du enkelt kan skala dina program och skapa tjänster med hög tillgänglighet.

Den här artikeln beskriver integrering med en offentlig lastbalanserare på AKS. För integrering av intern lastbalanserare, se Använda en intern lastbalanserare i AKS.

Förutsättningar

Important

Om du föredrar att använda din egen gateway, brandvägg eller proxy för att tillhandahålla utgående anslutningar kan du hoppa över att skapa lastbalanserarens utgående pool och motsvarande frontend-IP genom att använda utgående typ som UserDefinedRouting (UDR). Den utgående typen definierar den utgående metoden för ett kluster och standardinställningen är typen LoadBalancer.

Limitations

Följande begränsningar gäller när du skapar och hanterar AKS-kluster som stöder en lastbalanserare med standard-SKU :n:

  • AKS hanterar livscykeln och driften av agentnoder. Det går inte att ändra de IaaS-resurser som är associerade med agentnoderna. Ett exempel på en åtgärd som inte stöds är att göra manuella ändringar i resursgruppen för lastbalanseraren.

  • Minst en offentlig IP-adress eller IP-prefix krävs för att tillåta utgående trafik från AKS-klustret. Den offentliga IP-adressen eller IP-prefixet krävs för att upprätthålla anslutningen mellan kontrollplanet och agentnoderna, samt för att behålla kompatibiliteten med tidigare AKS-versioner. Du har följande alternativ för att ange offentliga IP-adresser eller IP-prefix med en Standard SKU-lastbalanserare:

    • Ange dina egna offentliga IP-adresser.
    • Ange dina egna offentliga IP-prefix.
    • Ange ett tal upp till 100 så att AKS-klustret kan skapa så många offentliga IP-adresser för Standard SKU i samma resursgrupp som AKS-klustret. Den här resursgruppen namnges vanligtvis med MC_ i början. AKS tilldelar den offentliga IP-adressen till Standard SKU-lastbalanseraren. Som standard skapas en offentlig IP-adress automatiskt i samma resursgrupp som AKS-klustret om ingen offentlig IP-adress, offentligt IP-prefix eller antal IP-adresser har angetts. Du måste också tillåta offentliga adresser och låta bli att skapa Azure-principer som förbjuder skapandet av IP-adresser.
  • En offentlig IP-adress som skapats av AKS kan inte återanvändas som en anpassad byo-offentlig IP-adress (Bring Your Own). Du måste skapa och hantera alla anpassade IP-adresser.

  • Du kan inte ändra lastbalanserarens SKU genom att direkt ändra den AKS-hanterade lastbalanserarens resurs. Om du vill migrera ett befintligt AKS-kluster från den tillbakadragna Basic SKU:n till standard-SKU :n använder du aks-uppgraderingsprocessen som stöds. Migreringen orsakar stilleståndstid och kan inte återställas när den har påbörjats.

  • Standard SKU-lastbalanserare stöder endast Standard SKU IP-adresser.

  • Private Link-tjänsten stöds inte när lastbalanserarens serverdelspooltyp är inställd på nodeIP.

Skapa en lastbalanserartjänst i AKS

När du har skapat ett AKS-kluster med utgående typ LoadBalancer (standard) är klustret redo att använda lastbalanseraren för att exponera tjänster.

  1. Kontrollera att klustret har minst en podd som körs och är redo med etiketten app: public-app. Tjänstmanifestet i nästa steg väljer poddar med den här etiketten men skapar ingen distribution.

    kubectl get pods -l app=public-app
    
  2. Skapa ett tjänstmanifest med namnet public-svc.yaml, som skapar en offentlig tjänst av typen LoadBalancer.

    apiVersion: v1
    kind: Service
    metadata:
      name: public-svc
    spec:
      type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: public-app
    

Ange lastbalanserarens IP-adress

Om du vill använda en specifik IP-adress med lastbalanseraren har du två alternativ för att ange IP-adressen:

  • Ange tjänstanteckningar (rekommenderas): Använd service.beta.kubernetes.io/azure-pip-name för att ange en befintlig offentlig IP-resurs efter namn. Den här annoteringen är det effektivaste alternativet och hjälper dig att undvika eventuella strypningar. Du kan också använda service.beta.kubernetes.io/azure-load-balancer-ipv4 för en IPv4-adress och service.beta.kubernetes.io/azure-load-balancer-ipv6 för en IPv6-adress. Offentliga IP-resurser, resursgrupper och identitetskrav finns i Använda en statisk offentlig IP-adress med AKS-lastbalanseraren.
  • Lägg till egenskapen LoadBalancerIP i YAML-manifestet för lastbalanseraren: Lägg till Service.Spec.LoadBalancerIP egenskapen i YAML-manifestet för lastbalanseraren. Det här fältet är föråldrat i linje med upstream Kubernetes, och det stöder inte dual-stack. Den aktuella användningen är densamma och befintliga tjänster förväntas fungera utan ändringar.

Distribuera lastbalanserarens tjänstmanifest

  1. Distribuera manifestet för den offentliga tjänsten med hjälp kubectl apply av och ange namnet på ditt YAML-manifest.

    kubectl apply -f public-svc.yaml
    

    Azure Load Balancer har konfigurerats med en ny offentlig IP-adress som frontar den nya tjänsten. Eftersom Azure Load Balancer kan ha flera klientdels-IP-adresser får varje ny tjänst som du distribuerar en ny dedikerad klientdels-IP som ska användas unikt.

  2. Bekräfta att tjänsten har skapats och att lastbalanseraren har konfigurerats med hjälp kubectl get service av kommandot .

    kubectl get service public-svc
    

    När du visar tjänstinformationen visas den offentliga IP-adressen som skapats för den här tjänsten i lastbalanseraren i kolumnen EXTERNAL-IP i utdata. Det kan ta några minuter innan IP-adressen ändras från <väntande> till en faktisk offentlig IP-adress. Följande exempelutdata visar hur tjänsten har skapats:

    NAMESPACE     NAME          TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)         AGE
    default       public-svc    LoadBalancer   10.0.39.110    203.0.113.187   80:32068/TCP    52s
    
  3. Få mer detaljerad information om din tjänst med hjälp kubectl describe service av kommandot .

    kubectl describe service public-svc
    

    Följande exempelutdata är en komprimerad version av utdata när du har kört kubectl describe service. LoadBalancer Ingress visar den externa IP-adressen som exponeras av din tjänst. IP visar de interna adresserna.

    Name:                        public-svc
    Namespace:                   default
    Labels:                      <none>
    Annotations:                 <none>
    Selector:                    app=public-app
    ...
    IP:                          10.0.39.110
    ...
    LoadBalancer Ingress:        203.0.113.187
    ...
    TargetPort:                  80/TCP
    NodePort:                    32068/TCP
    ...
    Session Affinity:            None
    External Traffic Policy:     Cluster
    ...
    

Nästa steg