Freigeben über


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

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

  • Das standardmäßige Back-End iptables wird in den meisten Kubernetes-Clustern verwendet. Es ist einfach und gut unterstützt, aber nicht so effizient oder intelligent wie IPVS.
  • IPVS nutzt den Linux Virtual Server, einen in den Linux-Kernel integrierten Layer 3/4-Lastenausgleich. IPVS bietet eine Reihe von Vorteilen gegenüber der iptables-Standardkonfiguration, beispielsweise Zustandsbewusstsein, Verbindungsverfolgung und intelligenteren Lastenausgleich. IPVS unterstützt Azure Network-Richtlinie nicht.

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

Hinweis

Wenn Sie möchten, können Sie das von AKS verwaltete kube-proxy DaemonSet deaktivieren, um bring-your-own CNI 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 Service Level Agreements und der Herstellergarantie 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-Featureflags

  1. Registrieren Sie das Featureflag 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 Zustand Registered (Registriert) lautet, aktualisieren Sie die Registrierung des Ressourcenanbieters Microsoft.ContainerService mithilfe des Befehls az provider register.

    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 oder IPVS festlegen. 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.

Hinweis

Der IPVS-Lastenausgleich funktioniert in jedem Knoten unabhängig und kennt nur die Verbindungen, die durch den lokalen Knoten fließen. Dies bedeutet, dass LeastConnection zwar bei einer höheren Anzahl von Verbindungen zu einer gleichmäßigeren Auslastung führt, dass aber bei einer geringen Anzahl von Verbindungen (Anzahl der Verbindungen < 2 * Knotenanzahl) der Datenverkehr relativ unausgewogen sein kann

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.

Warnung

Das Ändern der kube-proxy-Konfiguration kann zu einer leichten Unterbrechung des Datenverkehrsflusses im Clusterdienst führen.

  1. Erstellen Sie eine Konfigurationsdatei mit der gewünschten kube-proxy-Konfiguration. Die folgende Konfiguration aktiviert beispielsweise IPVS mit dem LeastConnection-Scheduler und legt das TCP-Timeout auf 900 Sekunden fest.

    {
      "enabled": true,
      "mode": "IPVS",
      "ipvsConfig": {
        "scheduler": "LeastConnection",
        "TCPTimeoutSeconds": 900,
        "TCPFINTimeoutSeconds": 120,
        "UDPTimeoutSeconds": 300
      }
    }
    
  2. Erstellen Sie einen neuen Cluster, oder aktualisieren Sie einen vorhandenen Cluster mit der Konfigurationsdatei mithilfe des Befehls az aks create oder az aks update mit dem Parameter --kube-proxy-config, der auf die Konfigurationsdatei festgelegt ist.

    # 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

Dieser Artikel behandelt, wie Sie in Azure Kubernetes Service (AKS) kube-proxy konfigurieren. Weitere Informationen zum Lastenausgleich in AKS finden Sie in den folgenden Artikeln: