Unterstützung für die Verbesserung dieser Seite beitragen
Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.
nodeadm-Referenz für Hybridknoten
Die Amazon EKS Hybrid Nodes CLI (nodeadm) vereinfacht die Installation, Konfiguration, Registrierung und Deinstallation der Hybridknoten-Komponenten. Sie können nodeadm in Ihre Betriebssystem-Images einbinden, um das Bootstrapping von Hybridknoten zu automatisieren. Weitere Informationen finden Sie unter Vorbereitung des Betriebssystems für Hybridknoten.
Die nodeadm-Version für Hybridknoten unterscheidet sich von der nodeadm-Version, die zum Bootstrapping von Amazon-EC2-Instances als Knoten in Amazon-EKS-Clustern verwendet wird. Befolgen Sie die Dokumentation und Referenzen für die entsprechende nodeadm-Version. Diese Dokumentationsseite bezieht sich auf die nodeadm-Version für Hybridknoten.
Der Quellcode für die Hybridknoten nodeadm ist im GitHub-Repository https://github.com/aws/eks-hybrid
Wichtig
Sie müssen nodeadm mit einem Benutzer ausführen, der über Root-/Sudo-Berechtigungen verfügt.
Herunterladen von nodeadm
Die Hybridknoten-Version von nodeadm wird in Amazon S3 gehostet und von Amazon CloudFront bereitgestellt. Um die Installation auf jedem On-Premises-Host nodeadm durchzuführen, können Sie den folgenden Befehl von Ihren On-Premises-Hosts aus ausführen.
Für x86_64-Hosts
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/amd64/nodeadm'
Für ARM-Hosts
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/arm64/nodeadm'
Fügen Sie der heruntergeladenen Binärdatei auf jedem Host die Berechtigung zum Ausführen von Dateien hinzu.
chmod +x nodeadm
nodeadm install
Der nodeadm install-Befehl wird verwendet, um die Artefakte und Abhängigkeiten zu installieren, die zum Ausführen und Verbinden von Hybridknoten mit einem Amazon-EKS-Cluster erforderlich sind. Der nodeadm install-Befehl kann einzeln auf jedem Hybridknoten oder während Image-Entwicklungs-Pipelines ausgeführt werden, um die Abhängigkeiten der Hybridknoten in Betriebssystem-Images vorzuinstallieren.
Usage
nodeadm install [KUBERNETES_VERSION] [flags]
Positionale Argumente
(Erforderlich) KUBERNETES_VERSION Die zu installierende Haupt- und Nebenversion von EKS Kubernetes, zum Beispiel 1.32
Flags
| Name | Erforderlich | Beschreibung |
|---|---|---|
|
|
TRUE |
Zu installierender Anmeldeinformationsanbieter. Unterstützte Werte sind |
|
|
FALSE |
Quelle für Werte |
|
|
FALSE |
Gibt die AWS-Region zum Herunterladen von Artefakten wie dem SSM-Agent an. Standardeinstellung: |
|
|
FALSE |
Maximale Dauer des Installationsbefehls. Die Eingabe erfolgt im Zeitdauerformat. Zum Beispiel |
|
|
FALSE |
Zeigt eine Hilfemeldung mit verfügbaren Flag-, Unterbefehls- und Positionswertparametern an. |
Beispiele
Installation der Kubernetes-Version 1.32 mit AWS Systems Manager (SSM) als Anmeldeinformationsanbieter
nodeadm install 1.32 --credential-provider ssm
Installieren Sie die Kubernetes-Version 1.32 mit AWS Systems Manager (SSM) als Anmeldeinformationsanbieter, Docker als containerd-Quelle und einer Download-Zeitüberschreitung von 20 Minuten.
nodeadm install 1.32 --credential-provider ssm --containerd-source docker --timeout 20m
Installation der Kubernetes-Version 1.32 mit AWS IAM Roles Anywhere als Anmeldeinformationsanbieter
nodeadm install 1.32 --credential-provider iam-ra
nodeadm config check
Der nodeadm config check-Befehl überprüft die angegebene Knotenkonfiguration auf Fehler. Mit diesem Befehl kann die Richtigkeit einer Hybridknoten-Konfigurationsdatei überprüft und validiert werden.
Usage
nodeadm config check [flags]
Flags
| Name | Erforderlich | Beschreibung |
|---|---|---|
|
|
TRUE |
Quelle der nodeadm-Konfiguration. Bei Hybridknoten sollte die Eingabe einer URI mit Dateischema folgen. |
|
|
FALSE |
Zeigt eine Hilfemeldung mit verfügbaren Flag-, Unterbefehls- und Positionswertparametern an. |
Beispiele
nodeadm config check -c file://nodeConfig.yaml
nodeadm init
Der nodeadm init-Befehl startet und verbindet den Hybridknoten mit dem konfigurierten Amazon-EKS-Cluster. Einzelheiten zur Konfiguration der nodeConfig.yaml-Datei finden Sie unter Knotenkonfiguration für SSM-Hybridaktivierungen oder Knotenkonfiguration für IAM Roles Anywhere.
Usage
nodeadm init [flags]
Flags
| Name | Erforderlich | Beschreibung |
|---|---|---|
|
|
TRUE |
Quelle der |
|
|
FALSE |
Zu überspringende Phasen von Werte |
|
|
FALSE |
Zeigt eine Hilfemeldung mit verfügbaren Flag-, Unterbefehls- und Positionswertparametern an. |
Beispiele
nodeadm init -c file://nodeConfig.yaml
nodeadm upgrade
Der nodeadm upgrade-Befehl aktualisiert alle installierten Artefakte auf die neueste Version und führt einen Bootstrapping des Knotens durch, um die aktualisierten Artefakte zu konfigurieren und dem EKS-Cluster in AWS beizutreten. Ein Upgrade ist ein Befehl zur Unterbrechung der auf dem Knoten ausgeführten Workloads. Verschieben Sie Ihre Workloads vor dem Upgrade auf einen anderen Knoten.
Usage
nodeadm upgrade [KUBERNETES_VERSION] [flags]
Positionale Argumente
(Erforderlich) KUBERNETES_VERSION Die zu installierende Haupt- und Nebenversion von EKS Kubernetes, zum Beispiel 1.32
Flags
| Name | Erforderlich | Beschreibung |
|---|---|---|
|
|
TRUE |
Quelle der |
|
|
FALSE |
Zeitüberschreitung beim Herunterladen von Artefakten. Die Eingabe erfolgt im Zeitdauerformat. Beispielsweise 1 Stunde und 23 Minuten Die Standard-Zeitüberschreitung für den Download des Upgrade-Befehls beträgt 10 Minuten. |
|
|
FALSE |
Zu überspringende Phasen des Upgrades. Es wird nicht empfohlen, eine der Phasen zu überspringen, es sei denn, dies trägt zur Behebung eines Problems bei Werte |
|
|
FALSE |
Zeigt eine Hilfemeldung mit verfügbaren Flag-, Unterbefehls- und Positionswertparametern an. |
Beispiele
nodeadm upgrade 1.32 -c file://nodeConfig.yaml
nodeadm upgrade 1.32 -c file://nodeConfig.yaml --timeout 20m
nodeadm uninstall
Der nodeadm uninstall-Befehl stoppt und entfernt die während nodeadm install installierten Artefakte nodeadm, einschließlich kubelet und containerd. Beachten Sie, dass der Deinstallations-Befehl Ihre Hybridknoten nicht aus Ihrem Cluster entfernt oder löscht. Sie müssen die Entleerungs- und Löschvorgänge separat ausführen. Weitere Informationen finden Sie unter Hybridknoten entfernen. Standardmäßig wird nodeadm uninstall nicht fortgesetzt, wenn auf dem Knoten noch Pods vorhanden sind. Ebenso entfernt nodeadm uninstall keine CNI-Abhängigkeiten oder Abhängigkeiten anderer Kubernetes-Add-Ons, die Sie in Ihrem Cluster ausführen. Informationen zum vollständigen Entfernen der CNI-Installation von Ihrem Host finden Sie in den Anweisungen unter CNI für Hybridknoten konfigurieren. Wenn Sie AWS-SSM-Hybridaktivierungen als Ihren On-Premises-Anmeldeinformationsanbieter verwenden, werden Ihre Hosts mit dem nodeadm uninstall-Befehl als von AWS SSM verwaltete Instances abgemeldet.
Usage
nodeadm uninstall [flags]
Flags
| Name | Erforderlich | Beschreibung |
|---|---|---|
|
|
FALSE |
Zu überspringende Phasen der Deinstallation. Es wird nicht empfohlen, eine der Phasen zu überspringen, es sei denn, dies trägt zur Behebung eines Problems bei. Werte |
|
|
FALSE |
Zeigt eine Hilfemeldung mit verfügbaren Flag-, Unterbefehls- und Positionswertparametern an. |
|
|
FALSE |
Erzwingen Sie das Löschen zusätzlicher Verzeichnisse, die möglicherweise verbleibende Dateien von Kubernetes- und CNI-Komponenten enthalten. WARNUNG Dadurch werden alle Inhalte in den Standardverzeichnissen von Kubernetes und CNI ( Ab nodeadm Tipps zur sicheren Handhabung - Das Löschen von eingebundenen Pfaden kann zum versehentlichen Löschen des tatsächlich eingebundenen Dateisystems des Knotens führen. Bevor Sie das |
Beispiele
nodeadm uninstall
nodeadm uninstall --skip node-validation,pod-validation
nodeadm debug
Der nodeadm debug-Befehl kann zur Fehlerbehebung bei fehlerhaften oder falsch konfigurierten Hybridknoten verwendet werden. Es bestätigt, dass die folgenden Anforderungen erfüllt sind.
-
Der Knoten verfügt über Netzwerkzugriff auf die erforderlichen AWS-APIs zum Abrufen von Anmeldedaten,
-
Der Knoten kann AWS-Anmeldeinformationen für die konfigurierte IAM-Rolle für Hybridknoten abrufen,
-
Der Knoten verfügt über Netzwerkzugriff auf den EKS-Kubernetes-API-Endpunkt und die Gültigkeit des EKS-Kubernetes-API-Endpunktzertifikats,
-
Der Knoten kann sich beim EKS-Cluster authentifizieren, seine Identität im Cluster ist gültig und der Knoten hat Zugriff auf den EKS-Cluster über die für den EKS-Cluster konfigurierte VPC.
Wenn Fehler gefunden werden, werden in der Ausgabe des Befehls Schritte zur Fehlerbehebung vorgeschlagen. Bestimmte Validierungsschritte zeigen untergeordnete Prozesse an. Wenn diese fehlschlagen, wird die Ausgabe in einem stderr-Abschnitt unter dem Validierungsfehler angezeigt.
Usage
nodeadm debug [flags]
Flags
| Name | Erforderlich | Beschreibung |
|---|---|---|
|
|
TRUE |
Quelle der |
|
|
FALSE |
Deaktiviert die Farbausgabe. Nützlich für die Automatisierung. |
|
|
FALSE |
Zeigt eine Hilfemeldung mit verfügbaren Flag-, Unterbefehls- und Positionswertparametern an. |
Beispiele
nodeadm debug -c file://nodeConfig.yaml
Speicherorte für Nodeadm-Dateien
nodeadm-Installation
Bei der Ausführung von nodeadm install werden die folgenden Dateien und Dateispeicherorte konfiguriert.
| Artefakt | Pfad |
|---|---|
|
CLI für IAM Roles Anywhere |
/usr/local/bin/aws_signing_helper |
|
Kubelet-Binärdateien |
/usr/bin/kubelet |
|
Kubectl-Binärdatei |
usr/local/bin/kubectl |
|
ECR-Anmeldeinformationsanbieter |
/etc/eks/image-credential-provider/ecr-credential-provider |
|
AWS IAM Authenticator |
/usr/local/bin/aws-iam-authenticator |
|
CLI für SSM-Einrichtung |
/opt/ssm/ssm-setup-cli |
|
SSM-Agent |
Auf Ubuntu – /snap/amazon-ssm-agent/current/amazon-ssm-agent Auf RHEL und AL2023 – /usr/bin/amazon-ssm-agent |
|
Containerd |
Auf Ubuntu und AL2023 – /usr/bin/containerd Auf RHEL – /bin/containerd |
|
Iptables |
Auf Ubuntu und AL2023 – /usr/sbin/iptables Auf RHEL – /sbin/iptables |
|
CNI-Plugins |
/opt/cni/bin |
|
Nachverfolgung installierter Artefakte |
/opt/nodeadm/tracker |
nodeadm init
Bei der Ausführung von nodeadm init werden die folgenden Dateien und Dateispeicherorte konfiguriert.
| Name | Pfad |
|---|---|
|
Kubelet kubeconfig |
/var/lib/kubelet/kubeconfig |
|
Kubelet-Konfiguration |
/etc/kubernetes/kubelet/config.json |
|
Kubelet-systemd-Einheit |
/etc/systemd/system/kubelet.service |
|
Konfiguration des Image-Anmeldeinformationsanbieters |
/etc/eks/image-credential-provider/config.json |
|
Kubelet-env-Datei |
/etc/eks/kubelet/environment |
|
Kubelet Certs |
/etc/kubernetes/pki/ca.crt |
|
Containerd-Konfiguration |
/etc/containerd/config.toml |
|
Konfiguration der Containerd-Kernelmodule |
/etc/modules-load.d/contianerd.conf |
|
AWS-Konfigurationsdatei |
/etc/aws/hybrid/config |
|
AWS-Anmeldeinformationsdatei (wenn Anmeldeinformationsdatei aktiviert ist) |
/eks-hybrid/.aws/credentials |
|
AWS-Signierhilfe-Systemeinheit |
/etc/systemd/system/aws_signing_helper_update.service |
|
Sysctl-Konfigurationsdatei |
/etc/sysctl.d/99-nodeadm.conf |
|
Ca-certificates |
/etc/ssl/certs/ca-certificates.crt |
|
GPG-Schlüsseldatei |
/etc/apt/keyrings/docker.asc |
|
Docker-Repo-Quelldatei |
/etc/apt/sources.list.d/docker.list |
Knotenkonfiguration für SSM-Hybridaktivierungen
Nachfolgend sehen Sie ein Beispiel nodeConfig.yaml für die Verwendung von AWS-SSM-Hybridaktivierungen für Anmeldeinformationen von Hybridknoten.
apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id
Knotenkonfiguration für IAM Roles Anywhere
Nachfolgend sehen Sie einen Beispiel nodeConfig.yaml für AWS IAM Roles Anywhere für Anmeldeinformationen von Hybridknoten.
Wenn Sie AWS IAM Roles Anywhere als Ihren On-Premises-Anmeldeinformationsanbieter verwenden, muss der in Ihrer nodeadm-Konfiguration verwendete nodeName mit den Berechtigungen übereinstimmen, die Sie für Ihre IAM-Rolle für Hybridknoten festgelegt haben. Wenn Ihre Berechtigungen für die IAM-Rolle für Hybridknoten beispielsweise nur zulassen, dass AWS IAM Roles Anywhere die Rolle übernimmt, wenn der Name der Rollensitzung mit dem CN des Host-Zertifikats übereinstimmt, muss der nodeName in Ihrer nodeadm-Konfiguration mit dem CN Ihrer Zertifikate übereinstimmen. Der von Ihnen verwendete nodeName kann nicht länger als 64 Zeichen sein. Weitere Informationen finden Sie unter Vorbereitung der Anmeldeinformationen für Hybridknoten.
apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides hybrid: iamRolesAnywhere: nodeName: # Name of the node trustAnchorArn: # ARN of the IAM Roles Anywhere trust anchor profileArn: # ARN of the IAM Roles Anywhere profile roleArn: # ARN of the Hybrid Nodes IAM role certificatePath: # Path to the certificate file to authenticate with the IAM Roles Anywhere trust anchor privateKeyPath: # Path to the private key file for the certificate
Knotenkonfiguration zur Anpassung von kubelet (optional)
Sie können die kubelet-Konfiguration und Flags in Ihrer nodeadm-Konfiguration übergeben. Im folgenden Beispiel erfahren Sie, wie Sie eine zusätzliche Knotenbezeichnung abc.amazonaws.com/test-label und Konfiguration hinzufügen, um shutdownGracePeriod auf 30 Sekunden festzulegen.
apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides kubelet: config: # Map of kubelet config and values shutdownGracePeriod: 30s flags: # List of kubelet flags - --node-labels=abc.company.com/test-label=true hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id
Knotenkonfiguration zur Anpassung von containerd (optional)
Sie können eine benutzerdefinierte containerd-Konfiguration in Ihrer nodeadm-Konfiguration übergeben. Die containerd-Konfiguration für nodeadm akzeptiert Inline-TOML. Im folgenden Beispiel erfahren Sie, wie Sie containerd konfigurieren, um das Löschen entpackter Image-Ebenen im containerd-Inhaltsspeicher zu deaktivieren.
apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides containerd: config: | # Inline TOML containerd additional configuration [plugins."io.containerd.grpc.v1.cri".containerd] discard_unpacked_layers = false hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id
Sie können die containerd-Konfiguration auch verwenden, um den SELinux-Support zu aktivieren. Stellen Sie bei aktiviertem SELinux auf Containerd sicher, dass für die auf dem Knoten geplanten Pods der richtige SecurityContext und die richtigen seLinuxOptions aktiviert sind. Weitere Informationen für die Konfiguration eines Sicherheitskontexts finden Sie in der Kubernetes-Dokumentation
Anmerkung
Bei Red Hat Enterprise Linux (RHEL) 8 und RHEL 9 ist SELinux standardmäßig aktiviert und auf dem Host auf „strikt“ eingestellt. Bei Amazon Linux 2023 ist SELinux standardmäßig aktiviert und auf den permissiven Modus eingestellt. Wenn SELinux auf dem Host auf den permissiven Modus eingestellt ist, werden durch die Aktivierung in containerd keine Anfragen blockiert, sondern entsprechend der SELinux-Konfiguration auf dem Host protokolliert.
apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides containerd: config: | # Inline TOML containerd additional configuration [plugins."io.containerd.grpc.v1.cri"] enable_selinux = true hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id