Delen via


Fouten bij het implementeren van AKS-clusterextensies oplossen

In dit artikel wordt beschreven hoe u fouten oplost die optreden bij het implementeren van clusterextensies voor Microsoft Azure Kubernetes Service (AKS).

Fouten bij het maken van extensies

Fout: Kan geen reactie krijgen van de agent op tijd

Deze fout treedt op als Azure-services geen antwoord ontvangen van de clusterextensieagent. Deze situatie kan optreden omdat het AKS-cluster geen verbinding kan maken met Azure.

Oorzaak 1: De clusterextensieagent en beheerpods worden niet geïnitialiseerd

De clusteruitbreidingsagent en -manager zijn cruciale systeemonderdelen die verantwoordelijk zijn voor het beheren van de levenscyclus van Kubernetes-toepassingen. De initialisatie van de clusterextensieagent en beheerpods kan mislukken vanwege de volgende problemen:

  • Resourcebeperkingen
  • Beleidsbeperkingen
  • Knooppunttainten, zoals NoSchedule
Oplossing 1: Zorg ervoor dat de clusterextensieagent en beheerpods correct werken

U kunt dit probleem oplossen door ervoor te zorgen dat de clusterextensieagent en de beheerpods correct zijn gepland en kunnen worden gestart. Als de pods vastzitten in een ongelezen status, controleert u de beschrijving van de pod door de volgende kubectl describe pod opdracht uit te voeren voor meer informatie over de onderliggende problemen (bijvoorbeeld taints die planning, onvoldoende geheugen of beleidsbeperkingen voorkomen):

kubectl describe pod -n kube-system extension-operator-{id}

Hier volgt een voorbeeld van een opdrachtuitvoer:

kube-system         extension-agent-55d4f4795f-sqx7q             2/2     Running   0          2d19h
kube-system         extension-operator-56c8d5f96c-nvt7x          2/2     Running   0          2d19h

Voor clusters die zijn verbonden met ARC, voert u de volgende opdracht uit om de beschrijving van de pod te controleren:

kubectl describe pod -n azure-arc extension-manager-{id}

Hier volgt een voorbeeld van een opdrachtuitvoer:

NAMESPACE         NAME                                          READY   STATUS             RESTARTS        AGE
azure-arc         cluster-metadata-operator-744f8bfbd4-7pssr    0/2     ImagePullBackOff   0               6d19h
azure-arc         clusterconnect-agent-7557d99d5c-rtgqh         0/3     ImagePullBackOff   0               6d19h
azure-arc         clusteridentityoperator-9b8b88f97-nr8hf       0/2     ImagePullBackOff   0               6d19h
azure-arc         config-agent-6d5fd59b8b-khw2d                 0/2     ImagePullBackOff   0               6d19h
azure-arc         controller-manager-5bc97f7db6-rt2zs           0/2     ImagePullBackOff   0               6d19h
azure-arc         extension-events-collector-7596688867-sqzv2   0/2     ImagePullBackOff   0               6d19h
azure-arc         extension-manager-86bbb949-6s59q              0/3     ImagePullBackOff   0               6d19h
azure-arc         flux-logs-agent-5f55888db9-wnr4c              0/1     ImagePullBackOff   0               6d19h
azure-arc         kube-aad-proxy-646c475dcc-92b86               0/2     ImagePullBackOff   0               6d19h
azure-arc         logcollector-5cbc659bfb-9v96d                 0/1     ImagePullBackOff   0               6d19h
azure-arc         metrics-agent-5794866b46-j9949                0/2     ImagePullBackOff   0               6d19h
azure-arc         resource-sync-agent-6cf4cf7486-flgwc          0/2     ImagePullBackOff   0               6d19h

Wanneer de clusterextensieagent en de beheerpods operationeel en in orde zijn, brengen ze communicatie met Azure-services tot stand om Kubernetes-toepassingen te installeren en te beheren.

Oorzaak 2: Een probleem is van invloed op het uitgaand blok of de firewall

Als de clusterextensieagent en de beheerpods in orde zijn en u nog steeds de fout 'Kan geen reactie krijgen van de agent op tijd' ziet, bestaat er waarschijnlijk een uitgaand blok of een firewallprobleem. Dit probleem kan verhinderen dat de clusterextensieagent en beheerpods communiceren met Azure.

Oplossing 2: Zorg ervoor dat aan de netwerkvereisten wordt voldaan

U kunt dit probleem oplossen door ervoor te zorgen dat u voldoet aan de netwerkvereisten die worden beschreven in regels voor uitgaand netwerk en FQDN voor AKS-clusters (Azure Kubernetes Service).

Oorzaak 3: Het verkeer is niet geautoriseerd

De extensieagent probeert geen service-eindpunten voor gegevensvlakken aan te <region>.dp.kubernetesconfiguration.azure.com roepen. Met deze fout wordt de vermelding 'Errorcode: 403, Message This traffic is not authorized' gegenereerd in de podlogboeken van de extensieagent.

kubectl logs -n kube-system extension-agent-<pod-guid>
{  "Message": "2024/02/07 06:04:43 \"Errorcode: 403, Message This traffic is not authorized., Target /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/provider/managedclusters/clusters/<cluster-name>/configurations/getPendingConfigs\"",  "LogType": "ConfigAgentTrace",  "LogLevel": "Information",  "Environment": "prod",  "Role": "ClusterConfigAgent",  "Location": "<region>,  "ArmId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ContainerService/managedclusters/<cluster-name>",  "CorrelationId": "",  "AgentName": "ConfigAgent",  "AgentVersion": "1.14.5",  "AgentTimestamp": "2024/02/07 06:04:43.672"  }
{  "Message": "2024/02/07 06:04:43 Failed to GET configurations with err : {\u003cnil\u003e}",  "LogType": "ConfigAgentTrace",  "LogLevel": "Information",  "Environment": "prod",  "Role": "ClusterConfigAgent",  "Location": "<region>",  "ArmId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ContainerService/managedclusters/<cluster-name>",  "CorrelationId": "",  "AgentName": "ConfigAgent",  "AgentVersion": "1.14.5",  "AgentTimestamp": "2024/02/07 06:04:43.672"  }

Deze fout treedt op als een bestaande PrivateLinkScope bestaat in het gegevensvlak van een extensie voor Kubernetes met Azure Arc en het virtuele netwerk (of de privé-DNS-server) wordt gedeeld tussen Kubernetes met Azure Arc en het door AKS beheerde cluster. Deze netwerkconfiguratie zorgt ervoor dat uitgaand AKS-verkeer van het extensiegegevensvlak ook wordt gerouteerd via hetzelfde privé-IP-adres in plaats van via een openbaar IP-adres.

Voer de volgende nslookup-opdracht uit in uw AKS-cluster om het specifieke privé-IP-adres op te halen waarnaar het eindpunt van het gegevensvlak wordt omgezet:

PS D:\> kubectl exec -it -n kube-system extension-agent-<pod-guid> -- nslookup  <region>.dp.kubernetesconfiguration.azure.com
Non-authoritative answer:
<region>.dp.kubernetesconfiguration.azure.com        canonical name = <region>.privatelink.dp.kubernetesconfiguration.azure.com
Name:   <region>.privatelink.dp.kubernetesconfiguration.azure.com
Address: 10.224.1.184

Wanneer u zoekt naar het privé-IP-adres in Azure Portal, verwijzen de zoekresultaten naar de exacte resource: virtueel netwerk, privé-DNS-zone, privé-DNS-server, enzovoort. Deze resource heeft een privé-eindpunt dat is geconfigureerd voor het extensiegegevensvlak voor Kubernetes met Azure Arc.

U kunt dit probleem oplossen door afzonderlijke virtuele netwerken te maken voor Kubernetes- en AKS-berekeningen met Azure Arc.

Oplossing 3.2: Een CoreDNS-onderdrukking maken

Als de aanbevolen oplossing niet mogelijk is in uw situatie, maakt u een CoreDNS-onderdrukking voor het eindpunt van het extensiegegevensvlak om via het openbare netwerk te gaan. Zie de sectie Hosts-invoegtoepassing van CoreDNS aanpassen met Azure Kubernetes Service voor meer informatie over het aanpassen van CoreDNS.

Voer de volgende stappen uit om een CoreDNS-onderdrukking te maken:

  1. Zoek het openbare IP-adres van het eindpunt van het extensiegegevensvlak door de opdracht uit te nslookup voeren. Zorg ervoor dat u de regio wijzigt (bijvoorbeeld eastus2euap) op basis van de locatie van uw AKS-cluster:

    nslookup <region>.dp.kubernetesconfiguration.azure.com
    Non-authoritative answer:
    Name:    clusterconfig<region>.<region>.cloudapp.azure.com
    Address:  20.39.12.229
    Aliases:  <region>.dp.kubernetesconfiguration.azure.com
             <region>.privatelink.dp.kubernetesconfiguration.azure.com
             <region>.dp.kubernetesconfiguration.trafficmanager.net
    
  2. Maak een back-up van de bestaande coreDNS-configuratie:

    kubectl get configmap -n kube-system coredns-custom -o yaml > coredns.backup.yaml
    
  3. Overschrijf de toewijzing voor het regionale gegevensvlakeindpunt (bijvoorbeeld eastus2euap) naar het openbare IP-adres. Hiervoor maakt u een YAML-bestand met de naam corednsms.yaml en kopieert u vervolgens de volgende voorbeeldconfiguratie naar het nieuwe bestand. (Zorg ervoor dat u het adres en de hostnaam bijwerkt met behulp van de waarden voor uw omgeving.)

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom      # This is the name of the configuration map that you can overwrite with your changes.
      namespace: kube-system
    data:
      extensionsdp.override: |  # You can select any name here, but it must have the .override file name extension.
        hosts {
          20.39.12.229 <region>.dp.kubernetesconfiguration.azure.com
          fallthrough
        }
    
  4. Als u de ConfigMap wilt maken, voert u de kubectl apply opdracht uit en geeft u de naam van het YAML-manifestbestand op:

    kubectl apply -f corednsms.yaml
    
  5. Als u de ConfigMap opnieuw wilt laden en Kubernetes Scheduler wilt inschakelen om CoreDNS zonder uitvaltijd opnieuw te starten, voert u de opdracht voor het opnieuw opstarten van de kubectl-implementatie uit:

    kubectl -n kube-system rollout restart deployment coredns
    
  6. Voer de nslookup opdracht opnieuw uit om ervoor te zorgen dat het eindpunt van het gegevensvlak wordt omgezet in het opgegeven openbare IP-adres:

    kubectl exec -it -n kube-system extension-agent-55d4f4795f-nld9q -- nslookup  [region].dp.kubernetesconfiguration.azure.com
    Name:   <region>.dp.kubernetesconfiguration.azure.com
    Address: 20.39.12.229
    

In de podlogboeken van de extensieagent mag de foutvermeldingen 'Foutcode: 403, Bericht dit verkeer is niet geautoriseerd' niet meer worden vastgelegd. In plaats daarvan moeten de logboeken antwoordcodes '200' bevatten.

kubectl logs -n kube-system extension-agent-{id} 
{  "Message": "GET configurations returned response code {200}",  "LogType": "ConfigAgentTrace",  "LogLevel": "Information",  "Environment": "prod",  "Role": "ClusterConfigAgent",  "Location": "<region>",  "ArmId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ContainerService/managedclusters/<cluster-name>",  "CorrelationId": "",  "AgentName": "ConfigAgent",  "AgentVersion": "1.14.5"  }

Fout: extensiepods kunnen niet worden gepland als alle knooppuntgroepen in het cluster 'CriticalAddonsOnly' zijn

Wanneer deze fout optreedt, wordt de volgende vermelding vastgelegd in het logboek van de extensieagent:

Extensiepodfout: 0/2 knooppunten zijn beschikbaar: 2 knooppunten hadden een of meer onvertelbare taint {CriticalAddonsOnly: true}. preemption: 0/2 knooppunten zijn beschikbaar: 2 preemption is niet nuttig voor planning.

Oorzaak

Deze fout treedt op wanneer u extensies (zoals de Distributed Application Runtime (DAPR) probeert in te schakelen op een AKS-cluster met CriticalAddonsOnly getineerde knooppuntgroepen. In deze situatie worden de extensiepods niet gepland op een knooppunt, omdat er geen tolerantie bestaat voor deze taints.

Als u de foutsituatie wilt bekijken, bekijkt u de extensiepods om te controleren of ze vastzitten in de status In behandeling:

kubectl get po -n {namespace-name} -l app.kubernetes.io/name={name}

NAME                                   READY   STATUS    RESTARTS   AGE
{podname}                              0/2     Pending   0          2d6h

Beschrijf de pods om te zien dat ze niet kunnen worden gepland vanwege een niet-ondersteunde taint:

kubectl describe po -n {namespace-name} {podname}

Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  18s   default-scheduler  0/2 nodes are available: 2 node(s) had untolerated taint {CriticalAddonsOnly: true}. preemption: 0/2 nodes are available: 2 Preemption is not helpful for scheduling.

Notitie

  • Het is raadzaam om extensies niet te installeren in CriticalAddOnsOnly getainted knooppuntgroepen, tenzij dit vereist is voor toepassingsworkloads.

  • U wordt aangeraden geen taint te gebruiken CriticalAddOnsOnly op clusters met één knooppuntgroep. Als u die taint gebruikt in een cluster met slechts één knooppuntgroep, kunt u geen toepassingspods in het cluster plannen. Zorg ervoor dat ten minste één knooppuntgroep in het cluster deze taint niet heeft. Zie Systeemknooppuntgroepen beheren in Azure Kubernetes Service (AKS) voor meer informatie over wanneer de CriticalAddonsOnly aantekening moet worden gebruikt.

Oplossing 1: Een knooppuntgroep toevoegen aan het cluster

U kunt dit probleem oplossen door nog een knooppuntgroep toe te voegen die geen taint heeft CriticalAddonsOnly . Deze actie zorgt ervoor dat de extensiepods worden gepland in de nieuwe knooppuntgroep.

Oplossing 2: Verwijder de taint CriticalAddonsOnly

Als het mogelijk en praktisch is, kunt u de CriticalAddonsOnly taint verwijderen om de extensie op het cluster te installeren.

Helm-fouten

U kunt een van de volgende Helm-gerelateerde fouten tegenkomen:

Fout: er is een time-out opgetreden bij het wachten op gereedheid van resources

De installatie van een Kubernetes-toepassing mislukt en geeft de volgende foutberichten weer:

taak mislukt: BackoffLimitExceeded

Er is een time-out opgetreden voordat de resource de status Gereed/Voltooid heeft bereikt.

Oorzaak

Dit probleem heeft de volgende veelvoorkomende oorzaken:

  • Resourcebeperkingen: Onvoldoende geheugen of CPU-resources binnen het cluster kunnen de succesvolle initialisatie van pods, taken of andere Kubernetes-resources voorkomen. Uiteindelijk zorgt deze situatie ervoor dat er een time-out optreedt voor de installatie. Beleidsbeperkingen of knooppunttaints (zoals NoSchedule) kunnen ook de initialisatie van resources blokkeren.

  • Architectuur komt niet overeen: het plannen van een Linux-toepassing op een Windows-knooppunt (of omgekeerd) kan leiden tot fouten in de initialisatie van Kubernetes-resources.

  • Onjuiste configuratie-instellingen: Onjuiste configuratie-instellingen kunnen voorkomen dat pods worden gestart.

Oplossing

Volg deze stappen, om dit probleem op te lossen:

  1. Resources controleren: zorg ervoor dat uw Kubernetes-cluster voldoende resources heeft en dat podplanning is toegestaan op de knooppunten (u moet rekening houden met taints). Controleer of geheugen- en CPU-resources voldoen aan de vereisten.

  2. Gebeurtenissen controleren: controleer de gebeurtenissen in de Kubernetes-naamruimte om potentiële problemen te identificeren die kunnen voorkomen dat pods, taken of andere Kubernetes-resources de status Gereed krijgen.

  3. Controleer Helm-grafieken en -configuraties: Veel Kubernetes-toepassingen gebruiken Helm-grafieken om resources in het cluster te implementeren. Voor sommige toepassingen is mogelijk gebruikersinvoer vereist via configuratie-instellingen. Zorg ervoor dat alle opgegeven configuratiewaarden juist zijn en voldoen aan de installatievereisten.

Fout: Kan de Helm-grafiek niet downloaden via de URL van de opslagplaats

Deze fout wordt veroorzaakt door connectiviteitsproblemen die optreden tussen het cluster en de firewall, naast blokkerende problemen met uitgaand verkeer. Zie Regels voor uitgaand netwerk en FQDN voor AKS-clusters (Azure Kubernetes Service) om dit probleem op te lossen.

Fout: Het weergeven van Helm-grafieken is mislukt met opgegeven waarden

Deze fout treedt op als Kubernetes-toepassingen afhankelijk zijn van Helm-grafieken om resources binnen het Kubernetes-cluster te implementeren. Voor deze toepassingen is mogelijk gebruikersinvoer vereist die wordt geleverd via configuratie-instellingen die tijdens de installatie als Helm-waarden worden doorgegeven. Als een van deze cruciale configuratie-instellingen ontbreekt of onjuist is, wordt de Helm-grafiek mogelijk niet weergegeven.

Als u dit probleem wilt oplossen, controleert u de extensie- of toepassingsdocumentatie om te bepalen of u verplichte waarden hebt weggelaten of onjuiste waarden hebt opgegeven tijdens de installatie van de toepassing. Deze richtlijnen kunnen u helpen bij het oplossen van problemen met het weergeven van Helm-grafieken die worden veroorzaakt door ontbrekende of onjuiste configuratiewaarden.

Fout: Resource bestaat al in uw cluster

Deze fout treedt op als er een conflict bestaat tussen de Kubernetes-resources in uw cluster en de Kubernetes-resources die de toepassing probeert te installeren. In het foutbericht wordt meestal de naam van de conflicterende resource opgegeven.

Als de conflicterende resource essentieel is en niet kan worden vervangen, kunt u de toepassing mogelijk niet installeren. Als de resource niet kritiek is en kan worden verwijderd, verwijdert u de conflicterende resource en probeert u de installatie opnieuw.

Fout: de bewerking wordt al uitgevoerd voor Helm

Deze fout treedt op als er al een bewerking wordt uitgevoerd voor een bepaalde release. U kunt dit probleem oplossen door tien minuten te wachten en de bewerking opnieuw uit te voeren.

Contacteer ons voor hulp

Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.