Konfigurowanie kube-proxy w usłudze Azure Kubernetes Service (AKS) (wersja zapoznawcza)

kube-proxy jest składnikiem platformy Kubernetes, która obsługuje routing ruchu dla usług w klastrze. Istnieją trzy zaplecza dostępne dla równoważenia obciążenia warstwy 3/4 w nadrzędnym zakresie kube-proxy: iptables, IPVSi nftables.

  • iptables to domyślne zaplecze używane w wielu klastrach Kubernetes. Jest to proste i dobrze obsługiwane, ale nie tak wydajne lub inteligentne, jak IPVS.
  • IPVS korzysta z serwera wirtualnego z systemem Linux, modułu równoważenia obciążenia warstwy 3/4 wbudowanego w jądro systemu Linux. IPVS zapewnia wiele zalet konfiguracji domyślnej iptables , w tym świadomość stanu, śledzenie połączeń i bardziej inteligentne równoważenie obciążenia. IPVS nie obsługuje usługi Azure Network Policy.
  • nftables jest następcą interfejsu iptables API i został zaprojektowany w celu zapewnienia lepszej wydajności i skalowalności niż iptables. Tryb nftables serwera proxy jest zasadniczo zamiennikiem zarówno trybów, jak iptables i IPVS , z lepszą wydajnością niż jeden z nich, i jest zalecany jako zamiennik dla IPVS.

Aby uzyskać więcej informacji, zobacz dokumentację platformy Kubernetes dotyczącą serwera kube-proxy.

Note

Zarządzaną przez AKS kube-proxyDaemonSet można wyłączyć, aby obsługiwać własny CNI.

Important

Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi i wymagają zapisania się. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów, świadczoną w miarę możliwości. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:

Zanim rozpoczniesz

  • Jeśli używasz interfejsu wiersza polecenia Azure aks-preview, potrzebujesz rozszerzenia. Patrz Instalowanie rozszerzenia Azure CLIaks-preview.
  • Jeśli używasz usługi Azure Resource Manager lub interfejsu API REST, wersja interfejsu API usługi AKS musi mieć wartość 2022-08-02-preview lub nowszą . W przypadku trybu nftables, wersja musi być 2025-09-02-preview lub nowsza.
  • Musisz zarejestrować flagę KubeProxyConfigurationPreview funkcji. Sprawdź Rejestrację flagi KubeProxyConfigurationPreview funkcji.

Zainstaluj rozszerzenie Azure CLI aks-preview

  1. Zainstaluj rozszerzenie aks-preview przy użyciu polecenia az extension add.

    az extension add --name aks-preview
    
  2. Przeprowadź aktualizację do najnowszej wersji rozszerzenia przy użyciu az extension update polecenia .

    az extension update --name aks-preview
    

Zarejestruj flagę funkcji KubeProxyConfigurationPreview

  1. Zarejestruj flagę funkcji KubeProxyConfigurationPreview za pomocą polecenia az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "KubeProxyConfigurationPreview"
    

    Wyświetlenie stanu Zarejestrowane trwa kilka minut.

  2. Sprawdź stan rejestracji przy użyciu az feature show polecenia .

    az feature show --namespace "Microsoft.ContainerService" --name "KubeProxyConfigurationPreview"
    
  3. Gdy stan ma wartość Zarejestrowano, odśwież rejestrację dostawcy Microsoft.ContainerService zasobów przy użyciu az provider register polecenia .

    az provider register --namespace Microsoft.ContainerService
    

kube-proxy opcje konfiguracji

Pełną kube-proxy strukturę konfiguracji można wyświetlić w schemacie klastra usługi AKS.

  • enabled: Decyduje o wdrożeniu DaemonSet kube-proxy. Wartość domyślna to true.
  • mode: Można ustawić wartość IPTABLESna , IPVS lub NFTABLES. Wartość domyślna to IPTABLES.
  • ipvsConfig: Jeśli mode ma wartość IPVS, ten obiekt zawiera właściwości konfiguracji specyficzne dla protokołu IPVS.
    • scheduler: określa, który harmonogram połączeń ma być używany. Obsługiwane wartości to:
      • LeastConnection: Wysyła połączenia do podu zaplecza z najmniejszą liczbą połączeń.
      • RoundRobin: równomiernie dystrybuuje połączenia między podami zaplecza.
    • tcpFinTimeoutSeconds: Ustawia wartość limitu czasu po tym, jak sesja TCP otrzyma pakiet FIN.
    • tcpTimeoutSeconds: Ustawia wartość długości limitu czasu dla bezczynnych sesji TCP.
    • udpTimeoutSeconds: Ustawia wartość długości limitu czasu dla bezczynnych sesji UDP.

IPVS równoważenie obciążenia działa niezależnie w każdym węźle i jest świadome tylko połączeń, które przepływają przez węzeł lokalny. Oznacza to, że chociaż LeastConnection prowadzi do bardziej równomiernego obciążenia przy większej liczbie połączeń, gdy jest niska liczba połączeń (# connects < 2 * node count), może dojść do niezrównoważenia ruchu.

Użyj kube-proxy w nowym lub istniejącym klastrze AKS

Konfiguracja kube-proxy jest ustawieniem obejmującym cały klaster. Nie musisz aktualizować usług.

Zmiana kube-proxy konfiguracji może spowodować niewielkie przerwy w przepływie ruchu usługi klastra.

  1. Utwórz plik konfiguracji z żądaną kube-proxy konfiguracją.

    • IPVS: Na przykład następująca konfiguracja umożliwia użycie harmonogramu IPVS z LeastConnection i ustawienie czasu oczekiwania dla TCP na 900 sekund.

      {
        "enabled": true,
        "mode": "IPVS",
        "ipvsConfig": {
          "scheduler": "LeastConnection",
          "tcpTimeoutSeconds": 900,
          "tcpFinTimeoutSeconds": 120,
          "udpTimeoutSeconds": 300
        }
      }
      
    • nftables: Na przykład następująca konfiguracja włącza nftables tryb.

      {
        "enabled": true,
        "mode": "NFTABLES"
      }
      
  2. Utwórz nowy klaster lub zaktualizuj istniejący klaster za pomocą pliku konfiguracji wykorzystując polecenia az aks create lub az aks update. Użyj parametru --kube-proxy-config , aby określić plik konfiguracji.

    # Create a new cluster
    az aks create \
      --resource-group <resourceGroup> \
      --name <clusterName> \
      --kube-proxy-config kube-proxy.json \
      --generate-ssh-keys
    
    # Update an existing cluster
    az aks update \
      --resource-group <resourceGroup> \
      --name <clusterName> \
      --kube-proxy-config kube-proxy.json
    

Dalsze kroki

W tym artykule opisano sposób konfigurowania kube-proxy w usłudze Azure Kubernetes Service (AKS). Aby dowiedzieć się więcej na temat równoważenia obciążenia w AKS, zapoznaj się z następującymi artykułami: