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.
Oplossing 3.1: (Aanbevolen) Afzonderlijke virtuele netwerken maken
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:
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 (bijvoorbeeldeastus2euap
) 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
Maak een back-up van de bestaande coreDNS-configuratie:
kubectl get configmap -n kube-system coredns-custom -o yaml > coredns.backup.yaml
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 }
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
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
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 deCriticalAddonsOnly
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:
- Er is een time-out opgetreden bij het wachten op de gereedheid van resources
- Kan de Helm-grafiek niet downloaden via de URL van de opslagplaats
- Het weergeven van Helm-grafieken is mislukt met opgegeven waarden
- Resource bestaat al in uw cluster
- De bewerking wordt al uitgevoerd voor Helm
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:
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.
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.
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.