Używanie publicznego standardowego modułu równoważenia obciążenia w usłudze Azure Kubernetes Service (AKS)

Azure Load Balancer działa na 4. warstwie modelu wzajemnych połączeń systemów otwartych (OSI) i obsługuje zarówno scenariusze ruchu przychodzącego, jak i wychodzącego. Rozdziela przepływy przychodzące, które docierają do front-endu modułu równoważenia obciążenia, do instancji puli zaplecza.

Publiczny moduł równoważenia obciążenia zintegrowany z usługą AKS służy dwóm celom:

  • Podaj połączenia wychodzące do węzłów klastra wewnątrz sieci wirtualnej AKS, tłumacząc prywatny adres IP na publiczny adres IP z jego puli wychodzącej.
  • Zapewnianie dostępu do aplikacji za pośrednictwem usług typu LoadBalancerKubernetes, co umożliwia łatwe skalowanie aplikacji i tworzenie usług o wysokiej dostępności.

W tym artykule opisano integrację z publicznym modułem równoważenia obciążenia w usłudze AKS. Aby uzyskać informacje na temat integracji wewnętrznego modułu równoważenia obciążenia, zobacz Używanie wewnętrznego modułu równoważenia obciążenia w usłudze AKS.

Wymagania wstępne

Important

Jeśli wolisz używać własnej bramy, zapory lub serwera proxy do obsługi połączeń wychodzących, możesz pominąć tworzenie puli ruchu wychodzącego load balancera i odpowiedniego adresu IP frontendu, ustawiając typ ruchu wychodzącego na UserDefinedRouting (UDR). Typ ruchu wychodzącego definiuje metodę ruchu wychodzącego dla klastra i domyślnie określa typ LoadBalancer.

Limitations

Poniższe ograniczenia mają zastosowanie podczas tworzenia klastrów AKS i zarządzania nimi, jeśli obsługują one moduł równoważenia obciążenia ze standardową jednostką SKU Standard:

  • AKS zarządza cyklem życia i obsługą węzłów agenta. Modyfikowanie zasobów IaaS skojarzonych z węzłami agenta nie jest obsługiwane. Przykładem nieobsługiwanej operacji jest ręczne wprowadzanie zmian w grupie zasobów modułu równoważenia obciążenia.

  • Do zezwalania na ruch wychodzący z klastra usługi AKS wymagany jest co najmniej jeden publiczny adres IP lub prefiks adresu IP. Publiczny adres IP lub prefiks IP jest wymagany do utrzymania łączności między płaszczyzną sterowania a węzłami agenta oraz utrzymania zgodności z poprzednimi wersjami usługi AKS. Dostępne są następujące opcje określania publicznych adresów IP lub prefiksów adresów IP z użyciem modułu równoważenia obciążenia z warstwy SKU Standard.

    • Podaj własne publiczne adresy IP.
    • Podaj własne prefiksy publicznego adresu IP.
    • Określ liczbę nie większą niż 100, aby umożliwić klastrowi AKS utworzenie tylu publicznych adresów IP jednostki SKU Standard w tej samej grupie zasobów co klaster AKS. Ta grupa zasobów zwykle ma nazwę zaczynającą się od MC_. Usługa AKS przypisuje publiczny adres IP do modułu równoważenia obciążenia w jednostce SKU Standard. Domyślnie jeden publiczny adres IP jest automatycznie tworzony w tej samej grupie zasobów co klaster usługi AKS, jeśli nie określono publicznego adresu IP, prefiksu publicznego adresu IP lub liczby adresów IP. Należy również zezwolić na publiczne adresy i uniknąć tworzenia zasad platformy Azure, które zakazują tworzenia adresów IP.
  • Publicznego adresu IP utworzonego przez usługę AKS nie można użyć ponownie jako niestandardowego publicznego adresu IP bring your own (BYO). Musisz utworzyć wszystkie niestandardowe adresy IP i zarządzać nimi.

  • Nie można zmienić jednostki SKU modułu równoważenia obciążenia, modyfikując bezpośrednio zasób modułu równoważenia obciążenia zarządzanego przez usługę AKS. Aby przeprowadzić migrację istniejącego klastra AKS z wycofanej jednostki SKU Basic do jednostki SKU Standard, użyj obsługiwanego procesu uaktualniania AKS. Migracja powoduje przestój i nie można go wycofać po rozpoczęciu.

  • Moduły równoważenia obciążenia jednostki SKU w warstwie Standardowa obsługują tylko adresy IP jednostek SKU w warstwie Standardowa.

  • Usługa Private Link nie jest obsługiwana, gdy typ puli zapasowej modułu równoważenia obciążenia jest ustawiony na nodeIP.

Utwórz usługę równoważenia obciążenia w AKS

Po utworzeniu klastra AKS z typem ruchu wychodzącego LoadBalancer (ustawienie domyślne) klaster jest gotowy do użycia modułu równoważenia obciążenia do udostępniania usług.

  1. Sprawdź, czy klaster ma co najmniej jeden uruchomiony, gotowy zasobnik z etykietą app: public-app . Manifest usługi w następnym kroku wybiera pody z tą etykietą, ale nie tworzy wdrożenia.

    kubectl get pods -l app=public-app
    
  2. Utwórz manifest usługi o nazwie public-svc.yaml, który tworzy usługę publiczną typu LoadBalancer.

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

Określanie adresu IP modułu równoważenia obciążenia

Jeśli chcesz użyć określonego adresu IP z modułem równoważenia obciążenia, masz dwie opcje określania adresu IP:

  • Ustaw adnotacje usługi (zalecane): użyj service.beta.kubernetes.io/azure-pip-name, aby określić istniejący zasób publicznego adresu IP za pomocą nazwy. Ta adnotacja jest najbardziej wydajną opcją i pomaga uniknąć potencjalnego ograniczania przepustowości. Można również użyć service.beta.kubernetes.io/azure-load-balancer-ipv4 adresu IPv4 i service.beta.kubernetes.io/azure-load-balancer-ipv6 adresu IPv6. Informacje o wymaganiach dotyczących zasobu publicznego adresu IP, grupy zasobów i tożsamości można znaleźć w artykule Używanie statycznego publicznego adresu IP z modułem równoważenia obciążenia AKS.
  • Dodaj właściwość LoadBalancerIP do manifestu YAML modułu równoważenia obciążenia: dodaj Service.Spec.LoadBalancerIP właściwość do manifestu YAML modułu równoważenia obciążenia. To pole zostało wycofane zgodnie z upstream Kubernetes i nie obsługuje trybu dual-stack. Bieżące użycie pozostaje takie same, a istniejące usługi powinny działać bez modyfikacji.

Wdróż manifest usługi wyważacza obciążenia

  1. Wdróż manifest usługi publicznej przy użyciu polecenia kubectl apply i określ nazwę manifestu YAML.

    kubectl apply -f public-svc.yaml
    

    Usługa Azure Load Balancer jest skonfigurowana przy użyciu nowego publicznego adresu IP, który jest frontonem nowej usługi. Ponieważ usługa Azure Load Balancer może mieć wiele adresów IP frontonu, każda nowa wdrażana usługa uzyskuje unikatowy dostęp do nowego dedykowanego adresu IP frontonu.

  2. Upewnij się, że usługa została utworzona, a moduł równoważenia obciążenia został skonfigurowany przy użyciu kubectl get service polecenia .

    kubectl get service public-svc
    

    Podczas wyświetlania szczegółów usługi publiczny adres IP utworzony dla tej usługi w module równoważenia obciążenia jest wyświetlany w kolumnie EXTERNAL-IP danych wyjściowych. Zmiana adresu IP z <oczekiwania> na rzeczywisty publiczny adres IP może potrwać kilka minut. Następujące przykładowe dane wyjściowe pokazują pomyślne utworzenie usługi:

    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. Uzyskaj bardziej szczegółowe informacje na temat usługi, używając polecenia kubectl describe service.

    kubectl describe service public-svc
    

    Poniższe przykładowe dane wyjściowe to skrócona wersja danych wyjściowych po uruchomieniu polecenia kubectl describe service. LoadBalancer Ingress pokazuje zewnętrzny adres IP udostępniany przez usługę. Adres IP pokazuje adresy wewnętrzne.

    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
    ...
    

Następny krok