Condividi tramite


Configurare kube-proxy nel servizio Azure Kubernetes (anteprima)

kube-proxy è un componente di Kubernetes che gestisce il traffico di routing per i servizi all'interno del cluster. Sono disponibili due back-end per il bilanciamento del carico di livello 3/4 in upstream kube-proxy: iptables e IPVS.

  • iptables è il back-end predefinito usato nella maggior parte dei cluster Kubernetes. È semplice e ben supportato, ma non altrettanto efficiente o intelligente come IPVS.
  • IPVS usa il server virtuale Linux, un servizio di bilanciamento del carico di livello 3/4 integrato nel kernel Linux. IPVS offre numerosi vantaggi rispetto alla configurazione iptables predefinita, tra cui consapevolezza dello stato, rilevamento delle connessioni e bilanciamento del carico più intelligente. IPVS non supporta Criteridi rete di Azure.

Per altre informazioni, vedere la documentazione di Kubernetes su kube-proxy.

Nota

Se si vuole, è possibile disabilitare il DaemonSet kube-proxy gestito dal servizio Azure Kubernetes per supportare l'interfaccia CNI bring-your-own.

Importante

Le funzionalità di anteprima del servizio Azure Kubernetes sono disponibili in modalità self-service e opzionale. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:

Operazioni preliminari

Installare l'estensione aks-preview dell'interfaccia della riga di comando di Azure.

  1. Installare l'aks-previewestensione usando il comando az extension add.

    az extension add --name aks-preview
    
  2. Aggiornare alla versione più recente dell'estensione usando il comando az extension update.

    az extension update --name aks-preview
    

Registrare il flag di funzionalità KubeProxyConfigurationPreview

  1. Registrare il flag di funzionalità KubeProxyConfigurationPreview usando il comando az feature register.

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

    Sono necessari alcuni minuti per visualizzare lo stato Registered.

  2. Verificare lo stato della registrazione usando il comando az feature show.

    az feature show --namespace "Microsoft.ContainerService" --name "KubeProxyConfigurationPreview"
    
  3. Quando lo stato diventa Registrato, aggiornare la registrazione del provider di risorse Microsoft.ContainerService usando il comando az provider register.

    az provider register --namespace Microsoft.ContainerService
    

Opzioni di configurazione kube-proxy

È possibile visualizzare la struttura di configurazione completa kube-proxy nello schema del cluster del servizio Azure Kubernetes .

  • enabled: determina la distribuzione del kube-proxyDaemonSet. Il valore predefinito è true.
  • mode: è possibile impostare su IPTABLES o IPVS. Il valore predefinito è IPTABLES.
  • ipvsConfig: se mode è IPVS, questo oggetto contiene proprietà di configurazione specifiche di IPVS.
    • scheduler: determina l'utilità di pianificazione della connessione da usare. I valori supportati includono:
      • LeastConnection: invia connessioni al pod back-end con le connessioni più poche.
      • RoundRobin: distribuisce uniformemente le connessioni tra i pod back-end.
    • tcpFinTimeoutSeconds: imposta il valore di lunghezza del timeout dopo che una sessione TCP riceve una fin.
    • tcpTimeoutSeconds: imposta il valore di lunghezza del timeout per le sessioni TCP inattive.
    • udpTimeoutSeconds: imposta il valore di lunghezza del timeout per le sessioni UDP inattive.

Nota

Il bilanciamento del carico IPVS opera in ogni nodo in modo indipendente ed è a conoscenza solo delle connessioni che passano attraverso il nodo locale. Ciò significa che, mentre il LeastConnection da come risultato un carico più uniforme con un numero di connessioni più elevato, quando si verifica un numero basso di connessioni (# connessioni < 2 * numero di nodi), il traffico può essere relativamente sbilanciato

Utilizzare kube-proxy in un cluster del servizio AKS nuovo o esistente

kube-proxy la configurazione è un'impostazione a livello di cluster. Non è necessario aggiornare i servizi.

Avviso

La modifica della configurazione kube-proxy può causare un'interruzione lieve del flusso del traffico del servizio cluster.

  1. Creare un file di configurazione con la configurazione desiderata kube-proxy. Ad esempio, la configurazione seguente abilita IPVS con l'utilità LeastConnection di pianificazione e imposta il timeout TCP su 900 secondi.

    {
      "enabled": true,
      "mode": "IPVS",
      "ipvsConfig": {
        "scheduler": "LeastConnection",
        "TCPTimeoutSeconds": 900,
        "TCPFINTimeoutSeconds": 120,
        "UDPTimeoutSeconds": 300
      }
    }
    
  2. Creare un nuovo cluster o aggiornare un cluster esistente con il file di configurazione usando il comando az aks create o az aks update con il parametro --kube-proxy-config impostato sul file di configurazione.

    # 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
    

Passaggi successivi

Questo articolo ha illustrato come configurare kube-proxy nel servizio Azure Kubernetes (AKS). Per altre informazioni sul bilanciamento del carico nel servizio Azure Kubernetes, vedere gli articoli seguenti: