Konfigurieren von kube-proxy in Azure Kubernetes Service (AKS) (Vorschau)

kube-proxy ist eine Komponente von Kubernetes, die den Routing-Datenverkehr für Dienste innerhalb des Clusters verarbeitet. Es gibt drei Back-Ends im Upstream für den Layer-3/4-Lastenausgleich kube-proxy: iptables, IPVS und nftables.

  • iptables ist das Standard-Back-End, das in vielen Kubernetes-Clustern verwendet wird. Es ist einfach und gut unterstützt, aber nicht so effizient oder intelligent wie IPVS.
  • IPVS verwendet den virtuellen Linux-Server, einen Layer 3/4-Lastenausgleich, der in den Linux-Kernel integriert ist. IPVS bietet viele Vorteile gegenüber der Standardkonfiguration iptables , einschließlich Zustandsbewusstsein, Verbindungsverfolgung und intelligenterer Lastenausgleich. IPVS unterstützt keine Azure-Netzwerkrichtlinie.
  • nftables ist der Nachfolger der iptables API und soll eine bessere Leistung und Skalierbarkeit bieten als iptables. Der nftables Proxymodus ist im Wesentlichen ein Ersatz für beide iptables und IPVS Modus, mit besserer Leistung als jeder von ihnen, und wird als Ersatz für IPVS empfohlen.

Weitere Informationen finden Sie in der Kubernetes-Dokumentation auf kube-proxy.

Hinweis

Sie können die von AKS verwaltete kube-proxyDaemonSet deaktivieren, um „eigenes CNI mitbringen” zu unterstützen.

Wichtig

AKS-Previewfunktionen stehen gemäß dem Self-Service- und Aktivierungsprinzip zur Verfügung. Vorschauversionen werden „wie besehen“ und „wie verfügbar“ bereitgestellt und sind von den Vereinbarungen zum Service Level und der eingeschränkten Garantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:

Voraussetzungen

Installieren der Azure CLI-Erweiterung aks-preview

  1. Installieren Sie die „aks-preview“-Erweiterung mithilfe des Befehls „az extension add“.

    az extension add --name aks-preview
    
  2. Führen Sie mit dem Befehl az extension update ein Update auf die neueste Version der Erweiterung aus.

    az extension update --name aks-preview
    

Registrieren des KubeProxyConfigurationPreview-Feature-Flags

  1. Registrieren Sie das Feature-Flag KubeProxyConfigurationPreview mithilfe des Befehls az feature register.

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

    Es dauert einige Minuten, bis der Status Registered (Registriert) angezeigt wird.

  2. Überprüfen Sie den Registrierungsstatus mithilfe des Befehls az feature show.

    az feature show --namespace "Microsoft.ContainerService" --name "KubeProxyConfigurationPreview"
    
  3. Wenn der Status "Registriert" angezeigt wird, aktualisieren Sie die Registrierung des Ressourcenanbieters mithilfe des Microsoft.ContainerServiceaz provider register Befehls.

    az provider register --namespace Microsoft.ContainerService
    

kube-proxy Konfigurationsoptionen

Sie finden die vollständige kube-proxy-Konfigurationsstruktur im AKS-Clusterschema.

  • enabled: Bestimmt die Bereitstellung des DaemonSets kube-proxy. Wird standardmäßig auf true festgelegt.
  • mode: Sie können entweder IPTABLES, IPVS oder NFTABLES einstellen. Wird standardmäßig auf IPTABLES festgelegt.
  • ipvsConfig: Falls mode auf IPVS festgelegt ist, enthält dieses Objekt IPVS-spezifische Konfigurationseigenschaften.
    • scheduler: Bestimmt, welcher Verbindungsplaner verwendet werden soll. Unterstützte Werte:
      • LeastConnection: Sendet Verbindungen an den Back-End-Pod mit den wenigsten Verbindungen.
      • RoundRobin: Verteilt Verbindungen gleichmäßig auf die Back-End-Pods.
    • tcpFinTimeoutSeconds: Legt den Wert der Timeout-Länge fest, nachdem eine TCP-Sitzung eine FIN empfangen hat.
    • tcpTimeoutSeconds: Legt den Wert der Timeout-Länge für inaktive TCP-Sitzungen fest.
    • udpTimeoutSeconds: Legt den Wert der Timeout-Länge für inaktive UDP-Sitzungen fest.

IPVS Der Lastenausgleich wird in jedem Knoten unabhängig ausgeführt und kennt nur Verbindungen, die über den lokalen Knoten fließen. Dies bedeutet, dass LeastConnection bei einer höheren Anzahl von Verbindungen zu einer gleichmäßigeren Auslastung führt, während bei einer geringen Anzahl von Verbindungen (# connects < 2 * node count) der Datenverkehr möglicherweise unausgewogen ist.

Verwenden Sie kube-proxy in einem neuen oder vorhandenen AKS-Cluster

Die kube-proxy Konfiguration ist eine clusterweite Einstellung. Sie brauchen Ihre Dienste nicht zu aktualisieren.

Eine Änderung der kube-proxy Konfiguration kann zu einer leichten Unterbrechung des Datenverkehrsflusses des Clusterdiensts führen.

  1. Erstellen Sie eine Konfigurationsdatei mit der gewünschten kube-proxy-Konfiguration.

    • IPVS: Die folgende Konfiguration aktiviert IPVS z. B. den LeastConnection Scheduler und legt das TCP-Timeout auf 900 Sekunden fest.

      {
        "enabled": true,
        "mode": "IPVS",
        "ipvsConfig": {
          "scheduler": "LeastConnection",
          "tcpTimeoutSeconds": 900,
          "tcpFinTimeoutSeconds": 120,
          "udpTimeoutSeconds": 300
        }
      }
      
    • nftables: Zum Beispiel aktiviert die folgende Konfiguration den nftables Modus.

      {
        "enabled": true,
        "mode": "NFTABLES"
      }
      
  2. Erstellen Sie einen neuen Cluster, oder aktualisieren Sie einen vorhandenen Cluster mit der Konfigurationsdatei mithilfe der az aks create Oder az aks update Befehle. Verwenden Sie den --kube-proxy-config Parameter, um die Konfigurationsdatei anzugeben.

    # 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
    

Nächste Schritte

In diesem Artikel wird beschrieben, wie Sie kube-proxy im Azure Kubernetes Service (AKS) konfigurieren. Weitere Informationen zum Lastenausgleich in AKS finden Sie in den folgenden Artikeln: