Hilf mit, diese Seite zu verbessern
Möchten Sie zu diesem Benutzerhandbuch beitragen? Scrollen Sie zum Ende dieser Seite und wählen Sie Diese Seite bearbeiten am aus GitHub. Ihre Beiträge werden dazu beitragen, unser Benutzerhandbuch für alle zu verbessern.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Probleme mit EKS Amazon-Clustern und -Knoten beheben
In diesem Kapitel werden einige häufig auftretende Fehler behandelt, die bei der Nutzung von Amazon auftreten können, EKS und wie Sie diese umgehen können. Wenn Sie Probleme in bestimmten EKS Amazon-Bereichen beheben müssen, lesen Sie die separaten Themen Problembehebung IAMProbleme mit Amazon EKS Connector beheben, und Fehlerbehebung für die ADOT Verwendung von EKS Add-Ons
Weitere Informationen zur Fehlerbehebung finden Sie in den Knowledge Center-Inhalten zu Amazon Elastic Kubernetes Service
Unzureichende Kapazität
Wenn Sie beim Versuch, einen EKS Amazon-Cluster zu erstellen, die folgende Fehlermeldung erhalten, verfügt eine der von Ihnen angegebenen Availability Zones nicht über ausreichend Kapazität, um einen Cluster zu unterstützen.
Cannot create cluster 'example-cluster' because region-1d, the targeted
Availability Zone, does not currently have sufficient capacity to support the cluster. Retry
and choose from these Availability Zones: region-1a, region-1b, region-1c
Versuchen Sie erneut, Ihren Cluster mit Subnetzen in Ihrem Cluster zu erstellenVPC, die in den Availability Zones gehostet werden, die in dieser Fehlermeldung angezeigt wurden.
Es gibt Availability Zones, in denen sich kein Cluster befinden darf. Vergleichen Sie die Availability Zones, in denen sich Ihre Subnetze befinden, mit der Liste der Availability Zones unter Subnetz-Anforderungen und -Überlegungen.
Knoten können nicht mit dem Cluster verknüpft werden
Es gibt zwei häufige Gründe, aus denen Knoten nicht mit dem Cluster verknüpft werden können:
-
Wenn es sich bei den Knoten um verwaltete Knoten handelt, EKS fügt Amazon
aws-auth
ConfigMap
beim Erstellen der Knotengruppe Einträge hinzu. Wenn der Eintrag entfernt oder geändert wurde, müssen Sie ihn erneut hinzufügen. Weitere Informationen erhalten Sie durch Eingabe voneksctl create iamidentitymapping --help
im Terminal. Sie können Ihre aktuellenaws-auth
ConfigMap
Einträge anzeigen, indem Sie sie ersetzenmy-cluster
geben Sie den folgenden Befehl mit dem Namen Ihres Clusters ein und führen Sie dann den geänderten Befehl aus:eksctl get iamidentitymapping --cluster
. Die ARN Rolle, die Sie angeben, darf keinen anderen Pfad als enthaltenmy-cluster
/
. Wenn der Name Ihrer Rolle beispielsweise lautetdevelopment/apps/my-role
, müssen Sie ihnmy-role
bei der Angabe von ARN für die Rolle in ändern. Stellen Sie sicher, dass Sie die IAM Knotenrolle angeben ARN (nicht das InstanzprofilARN).Wenn die Knoten selbst verwaltet werden und Sie keine Zugriffseinträge für die IAM Rolle ARN des Knotens erstellt haben, führen Sie dieselben Befehle aus, die für verwaltete Knoten aufgeführt sind. Wenn Sie einen Zugriffseintrag ARN für die IAM Rolle Ihres Knotens erstellt haben, ist dieser im Zugriffseintrag möglicherweise nicht richtig konfiguriert. Stellen Sie sicher, dass die IAM Knotenrolle ARN (nicht das InstanzprofilARN) ARN in Ihrem
aws-auth
ConfigMap
Eintrag oder Zugriffseintrag als Principal angegeben ist. Weitere Informationen zu Zugriffseinträgen finden Sie unter Gewähren Sie IAM Benutzern Zugriff auf Kubernetes mit EKS Zugriffseinträgen. -
Die AWS CloudFormation Vorlage ClusterNamein Ihrem Knoten entspricht nicht genau dem Namen des Clusters, dem Ihre Knoten beitreten sollen. Wenn Sie einen falschen Wert an dieses Feld übergeben, führt dies zu Fehlern in der Konfiguration der
/var/lib/kubelet/kubeconfig
-Datei des Knotens und dieser kann nicht mit dem Cluster verknüpft werden. -
Der Knoten ist nicht als Eigentum des Clusters gekennzeichnet. Auf Ihre Worker-Knoten muss die folgende Markierung angewendet werden, wobei
durch den Namen des Clusters ersetzt wird.my-cluster
Schlüssel Wert kubernetes.io/cluster/
my-cluster
owned
-
Die Knoten können möglicherweise nicht über eine öffentliche IP-Adresse auf den Cluster zugreifen. Stellen Sie sicher, dass den Knoten, die in öffentlichen Subnetzen bereitgestellt werden, eine öffentliche IP-Adresse zugewiesen wird. Ist dies nicht der Fall, können Sie einem Knoten eine Elastic-IP-Adresse nach dem Start zuordnen. Weitere Informationen dazu finden Sie unter Zuordnen einer Elastic-IP-Adresse zu einer laufenden Instance oder einer Netzwerkschnittstelle. Wenn das öffentliche Subnetz nicht so eingestellt ist, dass es Instances, die es nutzen, automatisch öffentliche IP-Adressen zuweist, empfehlen wir, diese Einstellung zu aktivieren. Weitere Informationen finden Sie unter Ändern des öffentlichen
IPv4
-Adressierungsattributs für Ihr Subnetz. Wenn der Knoten in einem privaten Subnetz bereitgestellt wird, muss das Subnetz über eine Route zu einem NAT Gateway verfügen, dem eine öffentliche IP-Adresse zugewiesen ist. -
Der AWS STS Endpunkt für den AWS-Region , für den Sie die Knoten bereitstellen, ist für Ihr Konto nicht aktiviert. Informationen zum Aktivieren der Region finden Sie unter Aktivieren und Deaktivieren AWS STS in einem AWS-Region.
-
Der Knoten hat keinen privaten DNS Eintrag, was dazu führt, dass das
kubelet
Protokoll einennode "" not found
Fehler enthält. Stellen Sie sicher, dass für den VPC Ort, an dem der Knoten erstellt wurde, Werte fürdomain-name
unddomain-name-servers
wieOptions
in a festgelegt sindDHCP options set
. Die Standard-Werte sinddomain-name:<region>.compute.internal
unddomain-name-servers:AmazonProvidedDNS
. Weitere Informationen finden Sie unter DHCPOptionssätze im VPCAmazon-Benutzerhandbuch. -
Wenn die Knoten in der verwalteten Knotengruppe innerhalb von 15 Minuten keine Verbindung zum Cluster herstellen, wird ein Systemfehler von „NodeCreationFailure“ ausgegeben und der Konsolenstatus wird auf gesetzt
Create failed
. Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Windows AMIsbei denen die Startzeiten langsam sind, kann dieses Problem mithilfe von Fast Launch behoben werden.
Zur Ermittlung und Behebung häufiger Ursachen, die den Beitritt von Worker-Knoten zu einem Cluster verhindern, können Sie das Runbook AWSSupport-TroubleshootEKSWorkerNode
verwenden. Weitere Informationen finden Sie unter AWSSupport-TroubleshootEKSWorkerNode
in der Referenz zum Automation-Runbook für AWS Systems Manager
.
Nicht autorisiert oder Zugriff verweigert (kubectl
)
Wenn Sie beim Ausführen von kubectl
Befehlen einen der folgenden Fehler erhalten, haben Sie nicht richtig für Amazon kubectl
konfiguriert EKS oder die Anmeldeinformationen für den IAM Principal (Rolle oder Benutzer), den Sie verwenden, sind nicht zugeordnet Kubernetes Nutzername, der über ausreichende Berechtigungen verfügt für Kubernetes Objekte in Ihrem EKS Amazon-Cluster.
-
could not get token: AccessDenied: Access denied
-
error: You must be logged in to the server (Unauthorized)
-
error: the server doesn't have a resource type "svc"
Das kann auf eine der folgenden Ursachen zurückzuführen sein:
-
Der Cluster wurde mit Anmeldeinformationen für einen IAM Prinzipal erstellt und
kubectl
ist so konfiguriert, dass er Anmeldeinformationen für einen anderen IAM Prinzipal verwendet. Aktualisieren Sie in diesem Fall die Dateikube config
mit den Anmeldeinformationen, mit denen der Cluster erstellt wurde, um das Problem zu beheben. Weitere Informationen finden Sie unter Verbinden kubectl zu einem EKS Cluster durch Erstellen eines kubeconfig file. -
Wenn Ihr Cluster die minimalen Plattformanforderungen im Abschnitt Voraussetzungen von erfülltGewähren Sie IAM Benutzern Zugriff auf Kubernetes mit EKS Zugriffseinträgen, ist für Ihren IAM Prinzipal kein Zugriffseintrag vorhanden. Wenn er existiert, verfügt er nicht über die erforderlichen Kubernetes Für sie wurden Gruppennamen definiert oder ihr wurde nicht die richtige Zugriffsrichtlinie zugewiesen. Weitere Informationen finden Sie unter Gewähren Sie IAM Benutzern Zugriff auf Kubernetes mit EKS Zugriffseinträgen.
-
Wenn Ihr Cluster die Mindestanforderungen für die Plattform in nicht erfülltGewähren Sie IAM Benutzern Zugriff auf Kubernetes mit EKS Zugriffseinträgen, ist kein Eintrag mit Ihrem IAM Principal in der vorhanden
aws-auth
ConfigMap
. Wenn er existiert, ist er nicht zugeordnet Kubernetes Gruppennamen, die an a gebunden sind KubernetesRole
oderClusterRole
mit den erforderlichen Berechtigungen. Weitere Informationen zur Kubernetes Rollenbasierte Authorization (RBAC) -Objekte, siehe RBACAutorisierung verwendenin Kubernetes -Dokumentation. Sie können Ihre aktuellen aws-auth
ConfigMap
Einträge anzeigen, indem Siemy-cluster
geben Sie den folgenden Befehl mit dem Namen Ihres Clusters ein und führen Sie dann den geänderten Befehl aus:eksctl get iamidentitymapping --cluster
. Wenn ein Eintrag für mit dem Ihres IAM Prinzipals nicht in ARN der enthalten istmy-cluster
ConfigMap
, geben Sie ihneksctl create iamidentitymapping --help
in Ihr Terminal ein, um zu erfahren, wie Sie einen erstellen.
Wenn Sie das installieren und konfigurieren AWS CLI, können Sie die von Ihnen verwendeten IAM Anmeldeinformationen konfigurieren. Weitere Informationen finden Sie unter Konfigurieren der AWS CLI im AWS Command Line Interface -Leitfaden. Sie können auch kubectl
die Verwendung einer IAM Rolle konfigurieren, wenn Sie eine IAM Rolle für den Zugriff annehmen Kubernetes Objekte auf Ihrem Cluster. Weitere Informationen finden Sie unter Verbinden kubectl zu einem EKS Cluster durch Erstellen eines kubeconfig file.
hostname doesn't match
Die Python-Version Ihres Systems muss 2.7.9
oder höher sein. Andernfalls erhalten Sie hostname doesn't match
Fehler bei AWS CLI Anrufen bei AmazonEKS. Weitere Informationen finden Sie auf der Seite mit häufig gestellten Fragen der Python Requests-Website unter What are “hostname doesn’t match” errors?
getsockopt: no route to
host
Docker läuft im 172.17.0.0/16
CIDR Bereich in EKS Amazon-Clustern. Wir empfehlen, dass sich die VPC Subnetze Ihres Clusters nicht mit diesem Bereich überschneiden. Andernfalls erhalten Sie den folgenden Fehler:
Error: : error upgrading connection: error dialing backend: dial tcp 172.17.<nn>.<nn>:10250: getsockopt: no route to host
Instances failed to join the Kubernetes
cluster
Wenn Sie den Fehler Instances failed to join the Kubernetes cluster
in der erhalten, stellen Sie sicher AWS Management Console, dass entweder der private Endpunktzugriff des Clusters aktiviert ist oder dass Sie CIDR Blöcke für den Zugriff auf öffentliche Endpunkte korrekt konfiguriert haben. Weitere Informationen finden Sie unter Steuern Sie den Netzwerkzugriff auf den API Clusterserver-Endpunkt.
Fehlercodes bei verwalteten Knotengruppen
Wenn in Ihrer verwalteten Knotengruppe ein Problem mit dem Hardwarestatus auftritt, EKS gibt Amazon einen Fehlercode zurück, der Ihnen bei der Diagnose des Problems hilft. Diese Gesundheitschecks erkennen keine Softwareprobleme, da sie auf EC2Amazon-Gesundheitschecks basieren. Die Fehlercodes sind in der folgenden Liste beschrieben.
- AccessDenied
-
Amazon EKS oder einer oder mehrere Ihrer verwalteten Knoten können sich nicht authentifizieren oder autorisieren mit Ihrem Kubernetes Cluster-ServerAPI. Weitere Informationen zum Beheben einer häufigen Ursache finden Sie unter Behebung einer häufigen Ursache für AccessDenied-Fehler bei verwalteten Knotengruppen. Privat Windows AMIskann diesen Fehlercode auch zusammen mit der
Not authorized for images
Fehlermeldung verursachen. Weitere Informationen finden Sie unter Not authorized for images. - AmiIdNotFound
-
Wir konnten die mit Ihrer Startvorlage verknüpfte AMI ID nicht finden. Vergewissern Sie sich, dass die Datei AMI existiert und mit Ihrem Konto geteilt wird.
- AutoScalingGroupNotFound
-
Die Auto-Scaling-Gruppe, die der verwalteten Knotengruppe zugeordnet ist, konnte nicht gefunden werden. Möglicherweise können Sie eine Auto-Scaling-Gruppe mit den gleichen Einstellungen zur Wiederherstellung erstellen.
- ClusterUnreachable
-
Amazon EKS oder einer oder mehrere Ihrer verwalteten Knoten können nicht mit Ihrem kommunizieren Kubernetes APICluster-Server. Dies kann passieren, wenn es zu Netzwerkunterbrechungen kommt oder wenn API Server bei der Bearbeitung von Anfragen eine Zeitüberschreitung hinnehmen.
- Ec2 SecurityGroupNotFound
-
Die Cluster-Sicherheitsgruppe für den Cluster konnte nicht gefunden werden. Sie müssen Ihren Cluster neu erstellen.
- Ec2 SecurityGroupDeletionFailure
-
Die RAS-Sicherheitsgruppe für Ihre verwaltete Knotengruppe konnte nicht gelöscht werden. Entfernen Sie alle Abhängigkeiten aus der Sicherheitsgruppe.
- Ec2 LaunchTemplateNotFound
-
Wir konnten die EC2 Amazon-Startvorlage für Ihre verwaltete Knotengruppe nicht finden. Sie müssen Ihre Knotengruppe neu erstellen, um sie wiederherzustellen.
- Ec2 LaunchTemplateVersionMismatch
-
Die Version der EC2 Amazon-Startvorlage für Ihre verwaltete Knotengruppe stimmt nicht mit der Version überein, die Amazon EKS erstellt hat. Möglicherweise können Sie zu der Version zurückkehren, die Amazon für die Wiederherstellung EKS erstellt hat.
- IamInstanceProfileNotFound
-
Wir konnten das IAM Instance-Profil für Ihre verwaltete Knotengruppe nicht finden. Möglicherweise können Sie erneut ein Instance-Profil mit den gleichen Einstellungen zur Wiederherstellung erstellen.
- IamNodeRoleNotFound
-
Wir konnten die IAM Rolle für Ihre verwaltete Knotengruppe nicht finden. Möglicherweise können Sie eine IAM Rolle mit denselben Einstellungen neu erstellen, um sie wiederherzustellen.
- AsgInstanceLaunchFailures
-
Beim Versuch, Instances zu starten, treten in Ihrer Auto-Scaling-Gruppe Fehlfunktionen auf.
- NodeCreationFailure
-
Ihre gestarteten Instances können sich nicht bei Ihrem EKS Amazon-Cluster registrieren. Häufige Ursachen für diesen Fehler sind unzureichende Berechtigungen für IAMKnotenrollen oder mangelnder ausgehender Internetzugang für die Knoten. Ihre Knoten müssen eine der folgenden Anforderungen erfüllen:
-
Kann über eine öffentliche IP-Adresse auf das Internet zugreifen. Die Sicherheitsgruppe, die mit dem Subnetz verknüpft ist, in dem sich der Knoten befindet, muss die Kommunikation zulassen. Weitere Informationen erhalten Sie unter Subnetz-Anforderungen und -Überlegungen und EKSAmazon-Sicherheitsgruppenanforderungen für Cluster anzeigen.
-
Ihre Knoten und ich VPC müssen die Anforderungen von erfüllen. Stellen Sie private Cluster mit eingeschränktem Internetzugang bereit
-
- InstanceLimitExceeded
-
Ihr AWS Konto kann keine weiteren Instances des angegebenen Instance-Typs starten. Möglicherweise können Sie eine Erhöhung des EC2 Amazon-Instance-Limits für die Wiederherstellung beantragen.
- InsufficientFreeAddresses
-
Mindestens eines der Subnetze, die Ihrer verwalteten Knotengruppe zugeordnet sind, verfügt nicht über genügend verfügbare IP-Adressen für neue Knoten.
- InternalFailure
-
Diese Fehler werden normalerweise durch ein EKS serverseitiges Problem von Amazon verursacht.
Die häufigste Ursache für AccessDenied
-Fehler beim Ausführen von Vorgängen auf verwalteten Knotengruppen ist das Fehlen von eks:node-manager
, ClusterRole
oder ClusterRoleBinding
. Amazon EKS richtet diese Ressourcen in Ihrem Cluster als Teil des Onboardings mit verwalteten Knotengruppen ein. Sie sind für die Verwaltung der Knotengruppen erforderlich.
Die ClusterRole
kann sich im Laufe der Zeit ändern, sollte aber dem folgenden Beispiel ähneln:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: eks:node-manager rules: - apiGroups: - '' resources: - pods verbs: - get - list - watch - delete - apiGroups: - '' resources: - nodes verbs: - get - list - watch - patch - apiGroups: - '' resources: - pods/eviction verbs: - create
Die ClusterRoleBinding
kann sich im Laufe der Zeit ändern, sollte aber dem folgenden Beispiel ähneln:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: eks:node-manager roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: eks:node-manager subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: eks:node-manager
Stellen Sie sicher, dass die Ressource eks:node-manager
ClusterRole
besteht.
kubectl describe clusterrole eks:node-manager
Wenn bestehend, vergleichen Sie die Ausgabe mit dem vorherigen ClusterRole
-Beispiel.
Stellen Sie sicher, dass die Ressource eks:node-manager
ClusterRoleBinding
besteht.
kubectl describe clusterrolebinding eks:node-manager
Wenn bestehend, vergleichen Sie die Ausgabe mit dem vorherigen ClusterRoleBinding
-Beispiel.
Wenn Sie einen fehlenden oder defekten ClusterRole
oder ClusterRoleBinding
als Ursache eines AcessDenied
-Fehlers beim Anfordern verwalteter Knotengruppenoperationen finden, können Sie sie wiederherstellen. Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen
.eks-node-manager-role.yaml
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: eks:node-manager rules: - apiGroups: - '' resources: - pods verbs: - get - list - watch - delete - apiGroups: - '' resources: - nodes verbs: - get - list - watch - patch - apiGroups: - '' resources: - pods/eviction verbs: - create --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: eks:node-manager roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: eks:node-manager subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: eks:node-manager
Wenden Sie die Datei an.
kubectl apply -f
eks-node-manager-role.yaml
Wiederholen Sie den Vorgang der Knotengruppe, um festzustellen, ob das Problem dadurch behoben wurde.
Not authorized for
images
Eine mögliche Ursache für eine Not authorized for images
Fehlermeldung ist die Verwendung eines privaten Amazon EKS Windows AMIum zu starten Windows verwaltete Knotengruppen. Nach der Veröffentlichung neuer Windows AMIs, AWS macht AMIs die, die älter als 4 Monate sind, privat, wodurch sie nicht mehr zugänglich sind. Wenn Ihre verwaltete Knotengruppe eine private Windows AMI, erwägen Sie, Ihre zu aktualisieren Windows verwaltete Knotengruppe. Wir können zwar nicht garantieren, dass wir Zugriff auf privat gemachte AMIs Inhalte gewähren können, aber du kannst den Zugriff beantragen, indem du ein Ticket beim AWS Support einreichst. Weitere Informationen finden Sie unter Patches, Sicherheitsupdates und AMI IDs im EC2Amazon-Benutzerhandbuch.
Der Knoten befindet sich im NotReady
Status
Wenn Ihr Knoten in einen NotReady
Status wechselt, deutet dies wahrscheinlich darauf hin, dass der Knoten fehlerhaft ist und nicht für einen neuen Knoten geplant werden kann Pods. Dies kann verschiedene Ursachen haben, z. B. weil dem Knoten nicht genügend RessourcenCPU, Arbeitsspeicher oder verfügbarer Festplattenspeicher fehlen.
Für Amazon EKS optimiert Windows AMIs, es gibt keine Reservierung für Rechenressourcen, die standardmäßig in der
Konfiguration angegeben sind. Um Ressourcenproblemen vorzubeugen, können Sie Rechenressourcen für Systemprozesse reservieren, indem Sie die kubelet
Konfigurationswerte für kubelet
kube-reserved
system-reserved
-KubeletExtraArgs
Befehlszeilenparameter im Bootstrap-Skript. Weitere Informationen finden Sie unter Reservieren von Rechenressourcen für System-Daemons
CNITool zum Sammeln von Protokollen
Das Tool Amazon VPC CNI plugin for Kubernetes hat ein eigenes Fehlerbehebungsskript, das auf Knoten unter verfügbar ist/opt/cni/bin/aws-cni-support.sh
. Sie können das Skript verwenden, um Diagnoseprotokolle für Support-Fälle und allgemeine Fehlerbehebung zu sammeln.
Mit dem folgenden Befehl können Sie das Skript auf dem Knoten ausführen:
sudo bash /opt/cni/bin/aws-cni-support.sh
Anmerkung
Wenn das Skript an diesem Ort nicht vorhanden ist, konnte der CNI Container nicht ausgeführt werden. Sie können das Skript mit dem folgenden Befehl manuell herunterladen und ausführen:
curl -O https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/log-collector-script/linux/eks-log-collector.sh sudo bash eks-log-collector.sh
Das Skript sammelt die folgenden Diagnoseinformationen: Die CNI Version, die Sie bereitgestellt haben, kann älter als die Skriptversion sein.
This is version 0.6.1. New versions can be found at https://github.com/awslabs/amazon-eks-ami
Trying to collect common operating system logs...
Trying to collect kernel logs...
Trying to collect mount points and volume information...
Trying to collect SELinux status...
Trying to collect iptables information...
Trying to collect installed packages...
Trying to collect active system services...
Trying to collect Docker daemon information...
Trying to collect kubelet information...
Trying to collect L-IPAMD information...
Trying to collect sysctls information...
Trying to collect networking information...
Trying to collect CNI configuration information...
Trying to collect running Docker containers and gather container data...
Trying to collect Docker daemon logs...
Trying to archive gathered information...
Done... your bundled logs are located in /var/log/eks_i-0717c9d54b6cfaa19_2020-03-24_0103-UTC_0.6.1
.tar.gz
Die Diagnoseinformationen werden gesammelt und gespeichert unter:
/var/log/
eks_i-0717c9d54b6cfaa19_2020-03-24_0103-UTC_0.6.1
.tar.gz
Container-Laufzeitnetzwerk nicht bereit
Möglicherweise erhalten Sie einen Container runtime network not ready
-Fehler und einen Autorisierungsfehler, die den folgenden ähneln:
4191 kubelet.go:2130] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
4191 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: Failed to list *v1.Service: Unauthorized
4191 kubelet_node_status.go:106] Unable to register node "ip-10-40-175-122.ec2.internal" with API server: Unauthorized
4191 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: Failed to list *v1.Service: Unauthorized
Dieses Problem kann folgende Ursachen haben:
-
Sie haben entweder keine in
aws-auth
ConfigMap
Ihrem Cluster oder sie enthält keine Einträge für die IAM Rolle, mit der Sie Ihre Knoten konfiguriert haben.Dieser
ConfigMap
-Eintrag ist erforderlich, wenn Ihre Knoten eines der folgenden Kriterien erfüllen:-
Verwaltete Knoten in einem Cluster mit beliebigen Kubernetes oder Plattformversion.
-
Selbstverwaltete Knoten in einem Cluster, der älter ist als eine der Plattformversionen, die im Abschnitt „Voraussetzungen“ des Themas Gewähren Sie IAM Benutzern Zugriff auf Kubernetes mit EKS Zugriffseinträgen aufgeführt sind.
Um das Problem zu beheben, sehen Sie sich die vorhandenen Einträge in Ihrem an,
ConfigMap
indem Sie sie ersetzenmy-cluster
geben Sie den folgenden Befehl mit dem Namen Ihres Clusters ein und führen Sie dann den geänderten Befehl aus:eksctl get iamidentitymapping --cluster
. Sollten Sie im Zusammenhang mit dem Befehl eine Fehlermeldung erhalten, verfügt Ihr Cluster möglicherweise nicht über einemy-cluster
aws-auth
ConfigMap
. Der folgende Befehl fügtConfigMap
einen Eintrag hinzu. IstConfigMap
nicht vorhanden, wird sie durch den Befehl erstellt. Ersetzen111122223333
mit der AWS-Konto ID für die IAM Rolle undmyAmazonEKSNodeRole
mit dem Namen der Rolle Ihres Knotens.eksctl create iamidentitymapping --cluster
my-cluster
\ --arn arn:aws:iam::111122223333
:role/myAmazonEKSNodeRole
--group system:bootstrappers,system:nodes \ --username system:node:{{EC2PrivateDNSName}}Die ARN Rolle, die Sie angeben, darf keinen anderen Pfad als enthalten
/
. Wenn der Name Ihrer Rolle beispielsweise lautetdevelopment/apps/my-role
, müssen Sie ihnmy-role
bei der Angabe ARN der Rolle in ändern. Stellen Sie sicher, dass Sie die IAM Knotenrolle angeben ARN (nicht das InstanzprofilARN). -
Ihre selbstverwalteten Knoten befinden sich in einem Cluster mit einer Plattformversion in der Mindestversion, die in den Voraussetzungen im Gewähren Sie IAM Benutzern Zugriff auf Kubernetes mit EKS Zugriffseinträgen Thema aufgeführt ist, aber ein Eintrag für die IAM Rolle des Knotens ist nicht aufgeführt
aws-auth
ConfigMap
(siehe vorheriges Element) oder es gibt keinen Zugriffseintrag für die Rolle. Um das Problem zu beheben, sehen Sie sich Ihre vorhandenen Zugriffseinträge an, indem Sie sie ersetzenmy-cluster
geben Sie den folgenden Befehl mit dem Namen Ihres Clusters ein und führen Sie dann den geänderten Befehl aus:aws eks list-access-entries --cluster-name
. Der folgende Befehl fügt einen Zugriffseintrag für die IAM Rolle des Knotens hinzu. Ersetzenmy-cluster
111122223333
mit der AWS-Konto ID für die IAM Rolle undmyAmazonEKSNodeRole
mit dem Namen der Rolle Ihres Knotens. Wenn Sie einen Windows-Knoten haben, ersetzen SieEC2_Linux
mitEC2_Windows
. Stellen Sie sicher, dass Sie die IAM Knotenrolle angeben ARN (nicht das InstanzprofilARN).aws eks create-access-entry --cluster-name
my-cluster
--principal-arn arn:aws:iam::111122223333
:role/myAmazonEKSNodeRole
--typeEC2_Linux
TLSHandshake-Timeout
Wenn ein Knoten keine Verbindung zum Endpunkt des öffentlichen API Servers herstellen kann, wird möglicherweise ein Fehler angezeigt, der dem folgenden Fehler ähnelt.
server.go:233] failed to run Kubelet: could not init cloud provider "aws": error finding instance i-1111f2222f333e44c
: "error listing AWS instances: \"RequestError: send request failed\\ncaused by: Post net/http: TLS handshake timeout\""
Der kubelet
Prozess wird kontinuierlich neu gestartet und der API Serverendpunkt getestet. Der Fehler kann auch vorübergehend während jeder Prozedur auftreten, die eine laufende Aktualisierung des Clusters auf der Steuerungsebene durchführt, z. B. eine Konfigurationsänderung oder eine Versionsaktualisierung.
Um das Problem zu beheben, überprüfen Sie die Routing-Tabelle und die Sicherheitsgruppen, um sicherzustellen, dass der Datenverkehr von den Knoten den öffentlichen Endpunkt erreichen kann.
InvalidClientTokenId
Wenn Sie IAM Rollen für Dienstkonten für einen verwenden Pod oder in einem Cluster in China DaemonSet
AWS-Region bereitgestellt und die AWS_DEFAULT_REGION
Umgebungsvariable nicht in der Spezifikation festgelegt wurde, Pod oder DaemonSet
es wird möglicherweise der folgende Fehler angezeigt:
An error occurred (InvalidClientTokenId) when calling the GetCallerIdentity operation: The security token included in the request is invalid
Um das Problem zu beheben, müssen Sie die AWS_DEFAULT_REGION
Umgebungsvariable zu Ihrem hinzufügen Pod oder DaemonSet
Spezifikation, wie im folgenden Beispiel gezeigt Pod spezifikation.
apiVersion: v1 kind: Pod metadata: name: envar-demo labels: purpose: demonstrate-envars spec: containers: - name: envar-demo-container image: gcr.io/google-samples/node-hello:1.0 env: - name: AWS_DEFAULT_REGION value: "
region-code
"
Knotengruppen müssen übereinstimmen Kubernetes Version vor dem Upgrade der Steuerungsebene
Bevor Sie eine Steuerungsebene auf eine neue aktualisieren Kubernetes Version, die Nebenversion der verwalteten Knoten und der Fargate-Knoten in Ihrem Cluster muss mit der Version der aktuellen Version Ihrer Kontrollebene identisch sein. Amazon EKS update-cluster-version
API lehnt Anfragen ab, bis Sie alle von Amazon EKS verwalteten Knoten auf die aktuelle Cluster-Version aktualisiert haben. Amazon EKS bietet APIs die Möglichkeit, verwaltete Knoten zu aktualisieren. Für Informationen zum Upgrade einer verwalteten Knotengruppe Kubernetes Version finden Sie unterAktualisieren Sie eine verwaltete Knotengruppe für Ihren Cluster. Um die Version eines Fargate-Knotens zu aktualisieren, löschen Sie den pod das wird durch den Knoten repräsentiert, und stellen Sie das erneut bereit pod nachdem Sie Ihre Steuerungsebene aktualisiert haben. Weitere Informationen finden Sie unter Aktualisieren Sie den vorhandenen Cluster auf die neue Kubernetes-Version.
Beim Starten vieler Knoten gibt es Too
Many Requests
-Fehler
Wenn Sie viele Knoten gleichzeitig starten, wird in den Ausführungsprotokollen der EC2Amazon-Benutzerdaten möglicherweise eine Fehlermeldung angezeigt, die besagtToo Many
Requests
. Dies kann auftreten, weil die Steuerebene mit describeCluster
-Aufrufen überlastet wird. Die Überladung führt zu einer Drosselung, Knoten, die das Bootstrap-Skript nicht ausführen können, und Knoten, die dem Cluster insgesamt nicht beitreten können.
Stellen Sie sicher, dass die Argumente --apiserver-endpoint
, --b64-cluster-ca
und --dns-cluster-ip
an das Bootstrap-Skript des Knotens übergeben werden. Wenn Sie diese Argumente einschließen, muss das Bootstrap-Skript keinen describeCluster
-Aufruf ausführen, wodurch verhindert wird, dass die Steuerebene überlastet wird. Weitere Informationen finden Sie unter Geben Sie Benutzerdaten an, um Argumente an die bootstrap.sh Datei zu übergeben, die in einem EKS Amazon-optimiertenLinux/enthalten ist Bottlerocket AMI.
HTTP401 unautorisierte Fehlerantwort auf Kubernetes APIServeranfragen
Sie sehen diese Fehler, wenn PodDas Dienstkonto-Token ist auf einem Cluster abgelaufen.
Die Ihres EKS Amazon-Clusters Kubernetes APIDer Server lehnt Anfragen ab, deren Token älter als 90 Tage sind. In der Vergangenheit Kubernetes In den Versionen hatten Tokens kein Ablaufdatum. Clients, die diese Tokens verwenden, müssen die Tokens nun innerhalb einer Stunde aktualisieren. Um das zu verhindern Kubernetes APIdass der Server Ihre Anfrage aufgrund eines ungültigen Tokens ablehnt, Kubernetes Die von Ihrem Workload verwendete SDK
Go-Version
0.15.7
und höherPython-Version
12.0.0
und höherJava-Version
9.0.0
und höherJavaScript Version
0.10.3
und späterRuby
master
-BranchHaskell-Version
0.3.0.0
C# Version
7.0.5
und später
Sie können alle vorhandenen identifizieren Pods in Ihrem Cluster, die veraltete Token verwenden. Weitere Informationen finden Sie unter Kubernetes Dienstkonten.
Die EKS Amazon-Plattformversion liegt mehr als zwei Versionen hinter der aktuellen Plattformversion
Dies kann passieren, wenn Amazon die Plattformversion Ihres Clusters EKS nicht automatisch aktualisieren kann. Obwohl es dafür viele Ursachen gibt, folgen einige der häufigsten Ursachen. Wenn eines dieser Probleme auf Ihren Cluster zutrifft, funktioniert er möglicherweise immer noch, seine Plattformversion wird nur nicht von Amazon aktualisiertEKS.
Problem
Die IAMClusterrolle wurde gelöscht — Diese Rolle wurde bei der Erstellung des Clusters angegeben. Sie können mit dem folgenden Befehl überprüfen, welche Rolle angegeben wurde. Ersetzen my-cluster
mit dem Namen Ihres Clusters.
aws eks describe-cluster --name
my-cluster
--query cluster.roleArn --output text | cut -d / -f 2
Eine Beispielausgabe sieht wie folgt aus.
eksClusterRole
Lösung
Erstellen Sie eine neue IAMClusterrolle mit demselben Namen.
Problem
Ein bei der Clustererstellung festgelegtes Subnetz wurde gelöscht – Die mit dem Cluster zu verwendenden Subnetze wurden bei der Clustererstellung angegeben. Sie können mit dem folgenden Befehl überprüfen, welche Subnetze angegeben wurden. Ersetzen my-cluster
mit dem Namen Ihres Clusters.
aws eks describe-cluster --name
my-cluster
--query cluster.resourcesVpcConfig.subnetIds
Eine Beispielausgabe sieht wie folgt aus.
[
"subnet-EXAMPLE1
",
"subnet-EXAMPLE2
"
]
Lösung
Bestätigen Sie, ob das Subnetz in Ihrem Konto IDs existiert.
vpc_id=$(aws eks describe-cluster --name
my-cluster
--query cluster.resourcesVpcConfig.vpcId --output text) aws ec2 describe-subnets --filters "Name=vpc-id,Values=$vpc_id" --query "Subnets[*].SubnetId"
Eine Beispielausgabe sieht wie folgt aus.
[
"subnet-EXAMPLE3
",
"subnet-EXAMPLE4
"
]
Wenn das in der Ausgabe IDs zurückgegebene Subnetz nicht mit dem Subnetz übereinstimmtIDs, das bei der Erstellung des Clusters angegeben wurde, müssen Sie die vom Cluster verwendeten Subnetze ändern, wenn Sie möchten, dass Amazon EKS den Cluster aktualisiert. Das liegt daran, dass Amazon, wenn Sie bei der Erstellung Ihres Clusters mehr als zwei Subnetze angegeben haben, EKS nach dem Zufallsprinzip Subnetze auswählt, in denen Sie neue elastische Netzwerkschnittstellen erstellt haben. Diese Netzwerkschnittstellen ermöglichen es der Steuerebene, mit Ihren Knoten zu kommunizieren. Amazon aktualisiert den Cluster EKS nicht, wenn das ausgewählte Subnetz nicht existiert. Sie haben keine Kontrolle darüber, in welchem der Subnetze, die Sie bei der Cluster-Erstellung angegeben EKS haben, Amazon eine neue Netzwerkschnittstelle erstellt.
Wenn Sie eine initiieren Kubernetes Versionsupdate für Ihren Cluster, das Update kann aus demselben Grund fehlschlagen.
Problem
Eine bei der Clustererstellung angegebene Sicherheitsgruppe wurde gelöscht — Wenn Sie bei der Clustererstellung Sicherheitsgruppen angegeben haben, können Sie diese IDs mit dem folgenden Befehl einsehen. Ersetzen my-cluster
mit dem Namen Ihres Clusters.
aws eks describe-cluster --name
my-cluster
--query cluster.resourcesVpcConfig.securityGroupIds
Eine Beispielausgabe sieht wie folgt aus.
[
"sg-EXAMPLE1
"
]
Wenn []
zurückgegeben wird, wurden beim Erstellen des Clusters keine Sicherheitsgruppen angegeben und eine fehlende Sicherheitsgruppe ist nicht das Problem. Wenn Sicherheitsgruppen zurückgegeben werden, vergewissern Sie sich, dass die Sicherheitsgruppen in Ihrem Konto vorhanden sind.
Lösung
Bestätigen Sie, ob diese Sicherheitsgruppen in Ihrem Konto vorhanden sind.
vpc_id=$(aws eks describe-cluster --name
my-cluster
--query cluster.resourcesVpcConfig.vpcId --output text) aws ec2 describe-security-groups --filters "Name=vpc-id,Values=$vpc_id" --query "SecurityGroups[*].GroupId"
Eine Beispielausgabe sieht wie folgt aus.
[
"sg-EXAMPLE2
"
]
Wenn die in der Ausgabe IDs zurückgegebene Sicherheitsgruppe nicht mit der Sicherheitsgruppe übereinstimmtIDs, die bei der Erstellung des Clusters angegeben wurde, müssen Sie die vom Cluster verwendeten Sicherheitsgruppen ändern, wenn Sie möchten, dass Amazon EKS den Cluster aktualisiert. Amazon aktualisiert einen Cluster EKS nicht, wenn die bei der Clustererstellung IDs angegebene Sicherheitsgruppe nicht existiert.
Wenn Sie eine initiieren Kubernetes Versionsupdate für Ihren Cluster, das Update kann aus demselben Grund fehlschlagen.
Andere Gründe, warum Amazon die Plattformversion Ihres Clusters EKS nicht aktualisiert
-
Sie haben nicht mindestens sechs verfügbare IP-Adressen (wir empfehlen jedoch 16) in jedem der Subnetze, die Sie bei der Erstellung Ihres Clusters angegeben haben. Wenn Sie nicht über genügend verfügbare IP-Adressen im Subnetz verfügen, müssen Sie entweder IP-Adressen im Subnetz freigeben oder die vom Cluster verwendeten Subnetze ändern, um Subnetze mit genügend verfügbaren IP-Adressen zu verwenden.
-
Sie haben die Verschlüsselung von Geheimnissen aktiviert, als Sie Ihren Cluster erstellt haben, und der von Ihnen angegebene AWS KMS Schlüssel wurde gelöscht. Wenn Sie möchtenEKS, dass Amazon den Cluster aktualisiert, müssen Sie einen neuen Cluster erstellen.
FAQsCluster-Integritäts- und Fehlercodes mit Lösungspfaden
Amazon EKS erkennt Probleme mit Ihren EKS Clustern und der Cluster-Infrastruktur und speichert sie im Cluster-Status. Mithilfe von Cluster-Integritätsinformationen können Sie Cluster-Probleme schneller erkennen, behandeln und beheben. Auf diese Weise können Sie Anwendungsumgebungen erstellen, die sicherer und sicherer sind up-to-date. Darüber hinaus ist es für Sie möglicherweise unmöglich, auf neuere Versionen von zu aktualisieren Kubernetes oder für AmazonEKS, um Sicherheitsupdates auf einem heruntergestuften Cluster zu installieren, der aufgrund von Problemen mit der erforderlichen Infrastruktur oder Clusterkonfiguration beeinträchtigt wurde. Es EKS kann 3 Stunden dauern, bis Amazon Probleme erkennt oder feststellt, dass ein Problem gelöst wurde.
Die Integrität eines EKS Amazon-Clusters liegt in der gemeinsamen Verantwortung von Amazon EKS und seinen Benutzern. Sie sind verantwortlich für die erforderliche Infrastruktur von IAM Rollen und VPC Amazon-Subnetzen sowie für andere notwendige Infrastrukturen, die im Voraus bereitgestellt werden müssen. Amazon EKS erkennt Änderungen an der Konfiguration dieser Infrastruktur und des Clusters.
Um in der EKS Amazon-Konsole auf den Status Ihres Clusters zuzugreifen, suchen Sie auf der Registerkarte Übersicht der EKS Amazon-Cluster-Detailseite nach einem Abschnitt mit dem Namen Health Issues. Diese Daten sind auch verfügbar, wenn Sie die DescribeCluster
Aktion im aufrufen EKSAPI, z. B. von der aus AWS Command Line Interface.
- Warum sollte ich diese Funktion verwenden?
-
Sie erhalten einen besseren Überblick über den Zustand Ihres EKS Amazon-Clusters und können Probleme schnell diagnostizieren und beheben, ohne Zeit mit dem Debuggen oder dem Öffnen von AWS Supportanfragen verbringen zu müssen. Beispiel: Sie haben versehentlich ein Subnetz für den EKS Amazon-Cluster gelöscht, Amazon kann EKS keine kontoübergreifenden Netzwerkschnittstellen erstellen und Kubernetes AWS CLI Befehle wie
kubectl
Exec oderkubectl
Logs. Diese werden mit dem Fehler fehlschlagen:Error from server: error dialing backend: remote error: tls: internal error.
Jetzt wird ein EKS Amazon-Gesundheitsproblem angezeigt, das besagt:subnet-da60e280 was deleted: could not create network interface
. - In welcher Beziehung steht diese Funktion zu anderen AWS Diensten oder funktioniert mit ihnen?
-
IAMRollen und VPC Amazon-Subnetze sind zwei Beispiele für eine vorausgesetzte Infrastruktur, bei der Cluster Health Probleme erkennt. Diese Funktion gibt detaillierte Informationen zurück, wenn diese Ressourcen nicht ordnungsgemäß konfiguriert sind.
- Fallen für Cluster mit Integritätsproblemen Gebühren an?
-
Ja, jeder EKS Amazon-Cluster wird zum EKS Amazon-Standardpreis abgerechnet. Die Funktion Cluster-Integrität steht ohne Aufpreis zur Verfügung.
- Funktioniert diese Funktion bei aktivierten EKS Amazon-Clustern AWS Outposts?
-
Ja, Clusterprobleme wurden bei EKS Clustern in der AWS Cloud erkannt, einschließlich erweiterter Cluster AWS Outposts und eingeschalteter lokaler Cluster AWS Outposts. Der Clusterstatus erkennt keine Probleme mit Amazon EKS Anywhere oder Amazon EKS Distro (EKS-D).
- Kann ich benachrichtigt werden, wenn neue Probleme erkannt werden?
-
Nein, Sie müssen in der EKS Amazon-Konsole nachschauen oder die anrufen EKS
DescribeCluster
API. - Werden in der Konsole Warnungen im Zusammenhang mit Integritätsproblemen ausgegeben?
-
Ja. Cluster mit Problemen verfügen über ein Banner im oberen Bereich der Konsole.
Die ersten beiden Spalten werden für API Antwortwerte benötigt. Das dritte Feld des ClusterIssueHealth-Objekts ist resourceIds, dessen Rückgabe vom Typ des Problems abhängt.
Code | Fehlermeldung | ResourceIds | Cluster wiederherstellbar? |
---|---|---|---|
SUBNET_NOT_FOUND |
We couldn't find one or more subnets currently associated with your cluster. Rufen Sie Amazon an EKS update-cluster-config APIum Subnetze zu aktualisieren. |
Subnetz-IDs | Ja |
SECURITY_GROUP_NOT_FOUND | We couldn't find one or more security groups currently associated with your cluster. Rufen Sie Amazon EKS update-cluster-config API an, um Sicherheitsgruppen zu aktualisieren | Sicherheitsgruppen-IDs | Ja |
IP_NOT_AVAILABLE | In einem oder mehreren der mit Ihrem Cluster verknüpften Subnetze sind nicht genügend IP-Adressen verfügbar, damit Amazon EKS Cluster-Management-Operationen durchführen kann. Geben Sie Adressen in den Subnetzen frei oder ordnen Sie Ihrem Cluster mithilfe von Amazon verschiedene Subnetze zu. EKS update-cluster-config API | Subnetz-IDs | Ja |
VPC_NOT_FOUND | Wir konnten die mit Ihrem Cluster VPC verknüpften Dateien nicht finden. You must delete and recreate your cluster. | VPCid | Nein |
ASSUME_ROLE_ACCESS_DENIED | Ihr Cluster verwendet Amazon nicht EKS service-linked-role. Wir konnten die Ihrem Cluster zugeordnete Rolle nicht übernehmen, um die erforderlichen EKS Amazon-Verwaltungsvorgänge durchzuführen. Check the role exists and has the required trust policy. | Die IAM Cluster-Rolle | Ja |
PERMISSION_ACCESS_DENIED |
Ihr Cluster verwendet Amazon nicht EKS service-linked-role. Die Ihrem Cluster zugeordnete Rolle gewährt Amazon nicht genügend BerechtigungenEKS, um die erforderlichen Verwaltungsvorgänge durchzuführen. Check the policies attached to the cluster role and if any separate deny policies are applied. | Die IAM Cluster-Rolle | Ja |
ASSUME_ROLE_ACCESS_DENIED_USING_SLR |
Wir konnten das EKS Amazon-Clustermanagement nicht übernehmen service-linked-role. Check the role exists and has the required trust policy. | Der Amazon EKS service-linked-role | Ja |
PERMISSION_ACCESS_DENIED_USING_SLR |
Die EKS Amazon-Clusterverwaltung gewährt Amazon service-linked-role nicht genügend BerechtigungenEKS, um die erforderlichen Verwaltungsvorgänge durchzuführen. Check the policies attached to the cluster role and if any separate deny policies are applied. |
Der Amazon EKS service-linked-role |
Ja |
OPT_IN_REQUIRED |
Ihr Konto hat kein EC2 Amazon-Serviceabonnement. Update your account subscriptions in your account settings page. |
N/A | Ja |
STS_REGIONAL_ENDPOINT_DISABLED |
Das Tool STS Der regionale Endpunkt ist deaktiviert. Aktivieren Sie den Endpunkt, damit Amazon EKS die erforderlichen Clusterverwaltungsvorgänge ausführen kann. |
N/A | Ja |
KMS_KEY_DISABLED |
Der mit Ihrem Cluster verknüpfte AWS KMS Schlüssel ist deaktiviert. Re-enable the key to recover your cluster. |
Das Tool KMS Key Arn |
Ja |
KMS_KEY_NOT_FOUND |
Wir konnten den mit Ihrem Cluster verknüpften AWS KMS Schlüssel nicht finden. You must delete and recreate the cluster. |
Das Tool KMS Key ARN |
Nein |
KMS_GRANT_REVOKED |
Zuschüsse für den mit Ihrem Cluster verknüpften AWS KMS Schlüssel wurden widerrufen. You must delete and recreate the cluster. |
Das Tool KMS Key Arn |
Nein |