Hilf mit, diese Seite 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.
Wenn Sie zu diesem Benutzerhandbuch beitragen möchten, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.
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.
Erstellen Sie eine Knotenklasse für Amazon EKS
Amazon EKS Node Classes sind Vorlagen, die eine detaillierte Kontrolle über die Konfiguration Ihrer von EKS Auto Mode verwalteten Knoten bieten. Eine Node-Klasse definiert Einstellungen auf Infrastrukturebene, die für Knotengruppen in Ihrem EKS-Cluster gelten, einschließlich Netzwerkkonfiguration, Speichereinstellungen und Ressourcen-Tagging. In diesem Thema wird erklärt, wie Sie eine Knotenklasse erstellen und konfigurieren, die Ihren spezifischen Betriebsanforderungen entspricht.
Wenn Sie anpassen müssen, wie EKS Auto Mode EC2 Instanzen über die Standardeinstellungen hinaus bereitstellt und konfiguriert, bietet Ihnen die Erstellung einer Node-Klasse eine präzise Kontrolle über kritische Infrastrukturparameter. Sie können beispielsweise die Platzierung eines privaten Subnetzes für mehr Sicherheit angeben, kurzlebigen Instanzspeicher für leistungsabhängige Workloads konfigurieren oder benutzerdefinierte Markierungen für die Kostenzuweisung anwenden.
Erstellen Sie eine Knotenklasse
Gehen Sie folgendermaßen vorNodeClass
, um eine zu erstellen:
-
Erstellen Sie eine YAML-Datei (z. B.
nodeclass.yaml
) mit Ihrer Node-Class-Konfiguration -
Wenden Sie die Konfiguration auf Ihren Cluster an mit
kubectl
-
Verweisen Sie in Ihrer Node Pool-Konfiguration auf die Node-Klasse. Weitere Informationen finden Sie unter Erstellen Sie einen Knotenpool für den automatischen Modus von EKS.
Sie müssen kubectl
installiert und konfiguriert sein. Weitere Informationen finden Sie unter Für die Verwendung von Amazon EKS einrichten.
Grundlegendes Beispiel für eine Knotenklasse
Hier ist ein Beispiel für eine Knotenklasse:
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: private-compute spec: ephemeralStorage: size: "160Gi"
Dies NodeClass erhöht die Menge an flüchtigem Speicher auf dem Knoten.
Wenden Sie diese Konfiguration an, indem Sie:
kubectl apply -f nodeclass.yaml
Verweisen Sie als Nächstes auf die Node Class in Ihrer Node Pool-Konfiguration. Weitere Informationen finden Sie unter Erstellen Sie einen Knotenpool für den automatischen Modus von EKS.
Erstellen Sie einen Eintrag zum Zugriff auf die Knotenklasse
Wenn Sie eine benutzerdefinierte Knotenklasse erstellen, müssen Sie einen EKS-Zugriffseintrag erstellen, damit die Knoten dem Cluster beitreten können. EKS erstellt automatisch Zugriffseinträge, wenn Sie die integrierte Knotenklasse und die Knotenpools verwenden.
Informationen zur Funktionsweise von Access Entries finden Sie unterGewähren Sie IAM-Benutzern Zugriff auf Kubernetes mit EKS-Zugriffseinträgen.
Beim Erstellen von Zugriffseinträgen für EKS Auto Mode-Knotenklassen müssen Sie den EC2
Zugriffseintragstyp verwenden.
Zugriffseintrag mit CLI erstellen
Um einen Zugriffseintrag für EC2 Knoten zu erstellen und die EKS Auto Node Policy zuzuordnen:
Aktualisieren Sie die folgenden CLI-Befehle mit Ihrem Clusternamen und dem ARN für die Knotenrolle. Die Knotenrolle ARN ist in der Knotenklasse YAML spezifiziert.
# Create the access entry for EC2 nodes aws eks create-access-entry \ --cluster-name <cluster-name> \ --principal-arn <node-role-arn> \ --type EC2 # Associate the auto node policy aws eks associate-access-policy \ --cluster-name <cluster-name> \ --principal-arn <node-role-arn> \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSAutoNodePolicy \ --access-scope type=cluster
Erstellen Sie einen Zugangseintrag mit CloudFormation
Um einen Zugriffseintrag für EC2 Knoten zu erstellen und die EKS Auto Node Policy zuzuordnen:
Aktualisieren Sie Folgendes CloudFormation mit Ihrem Clusternamen und dem ARN für die Knotenrolle. Die Knotenrolle ARN ist in der Knotenklasse YAML spezifiziert.
EKSAutoNodeRoleAccessEntry: Type: AWS::EKS::AccessEntry Properties: ClusterName: <cluster-name> PrincipalArn: <node-role-arn> Type: "EC2" AccessPolicies: - AccessScope: Type: cluster PolicyArn: arn:aws:eks::aws:cluster-access-policy/AmazonEKSAutoNodePolicy DependsOn: [ <cluster-name> ] # previously defined in CloudFormation
Informationen zum Bereitstellen von CloudFormation Stacks finden Sie unter Erste Schritte mit CloudFormation
Spezifikation der Knotenklasse
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: my-node-class spec: # Required fields role: MyNodeRole # IAM role for EC2 instances subnetSelectorTerms: - tags: Name: "private-subnet" kubernetes.io/role/internal-elb: "1" # Alternative using direct subnet ID # - id: "subnet-0123456789abcdef0" securityGroupSelectorTerms: - tags: Name: "eks-cluster-sg" # Alternative approaches: # - id: "sg-0123456789abcdef0" # - name: "eks-cluster-security-group" # Optional: Pod subnet selector for advanced networking podSubnetSelectorTerms: - tags: Name: "pod-subnet" kubernetes.io/role/pod: "1" # Alternative using direct subnet ID # - id: "subnet-0987654321fedcba0" # Optional fields snatPolicy: Random # or Disabled networkPolicy: DefaultAllow # or DefaultDeny networkPolicyEventLogs: Disabled # or Enabled ephemeralStorage: size: "80Gi" # Range: 1-59000Gi or 1-64000G or 1-58Ti or 1-64T iops: 3000 # Range: 3000-16000 throughput: 125 # Range: 125-1000 # Optional KMS key for encryption kmsKeyID: "arn:aws:kms:region:account:key/key-id" # Accepted formats: # KMS Key ID # KMS Key ARN # Key Alias Name # Key Alias ARN # Optional: Forward proxy, commonly requires certificateBundles as well #for EC2, see https://repost.aws/knowledge-center/eks-http-proxy-containerd-automation advancedNetworking: httpsProxy: http://192.0.2.4:3128 #commonly port 3128 (Squid) or 8080 (NGINX) #Max 255 characters #httpsProxy: http://[2001:db8::4]:3128 # IPv6 address with port, use [] noProxy: #Max 50 entries - localhost #Max 255 characters each - 127.0.0.1 #- ::1 # IPv6 localhost #- 0:0:0:0:0:0:0:1 # IPv6 localhost - 169.254.169.254 # EC2 Instance Metadata Service #- [fd00:ec2::254] # IPv6 EC2 Instance Metadata Service # Domains to exclude, put all VPC endpoints here - .internal - .eks.amazonaws.com # Optional: Custom certificate bundles. certificateBundles: - name: "custom-cert" data: "base64-encoded-cert-data" # Optional: Additional EC2 tags (with restrictions) tags: Environment: "production" Team: "platform" # Note: Cannot use restricted tags like: # - kubernetes.io/cluster/* # - karpenter.sh/provisioner-name # - karpenter.sh/nodepool # - karpenter.sh/nodeclaim # - karpenter.sh/managed-by # - eks.amazonaws.com/nodeclass
Überlegungen
-
Die Node-IAM-Rolle ersetzen — Wenn Sie die Node-IAM-Rolle ändern, die mit einem verknüpft ist
NodeClass
, müssen Sie einen neuen Access-Eintrag erstellen. EKS erstellt bei der Clustererstellung automatisch einen Zugriffseintrag für die Knoten-IAM-Rolle. Für die Knoten-IAM-Rolle ist dieAmazonEKSAutoNodePolicy
EKS-Zugriffsrichtlinie erforderlich. Weitere Informationen finden Sie unter Gewähren Sie IAM-Benutzern Zugriff auf Kubernetes mit EKS-Zugriffseinträgen. -
maximale Pod-Dichte — EKS begrenzt die maximale Anzahl von Pods auf einem Knoten auf 110. Dieses Limit wird nach der Berechnung der vorhandenen maximalen Anzahl an Pods angewendet. Weitere Informationen finden Sie unter Wählen Sie einen optimalen EC2 Amazon-Node-Instance-Typ.
-
Tags — Wenn Sie Tags von Kubernetes an weitergeben möchten EC2, müssen Sie zusätzliche IAM-Berechtigungen konfigurieren. Weitere Informationen finden Sie unter Erfahren Sie mehr über Identität und Zugriff im EKS Auto Mode.
-
Standard-Knotenklasse — Benennen Sie Ihre benutzerdefinierte Knotenklasse nicht.
default
Dies liegt daran,default
dass der automatische EKS-Modus einenNodeClass
Anrufer enthält, der automatisch bereitgestellt wird, wenn Sie mindestens einen integriertenNodePool
Modus aktivieren. Informationen zur Aktivierung der integrierten Funktion finden SieNodePools
unterIntegriert aktivieren oder deaktivieren NodePools. -
subnetSelectorTerms
Verhalten mit mehreren Subnetzen — Wenn es mehrere Subnetze gibt, die densubnetSelectorTerms
Bedingungen entsprechen oder die Sie anhand der ID angeben, erstellt der automatische Modus von EKS Knoten, die über die Subnetze verteilt sind.-
Wenn sich die Subnetze in unterschiedlichen Availability Zones (AZ) befinden, können Sie Kubernetes-Funktionen wie Spread-Beschränkungen für die Pod-Topologie und Topology
Aware Routing verwenden, um Pods bzw. Traffic über die Zonen zu verteilen. -
Wenn es in derselben AZ mehrere Subnetze gibt, die den entsprechen, erstellt der automatische Modus von EKS Pods auf jedem Knoten
subnetSelectorTerms
, die über die Subnetze in dieser AZ verteilt sind. Der EKS-Automatikmodus erstellt sekundäre Netzwerkschnittstellen auf jedem Knoten in den anderen Subnetzen in derselben AZ. Es wählt anhand der Anzahl der verfügbaren IP-Adressen in jedem Subnetz aus, um die Subnetze effizienter zu nutzen. Sie können jedoch nicht angeben, welches Subnetz EKS Auto Mode für jeden Pod verwendet. Wenn Pods in bestimmten Subnetzen ausgeführt werden sollen, verwenden Sie stattdessen. Subnetzauswahl für Pods
-
Subnetzauswahl für Pods
Die podSecurityGroupSelectorTerms
Felder podSubnetSelectorTerms
und ermöglichen erweiterte Netzwerkkonfigurationen, da Pods in anderen Subnetzen als ihren Knoten ausgeführt werden können. Diese Trennung ermöglicht eine verbesserte Kontrolle über das Routing des Netzwerkverkehrs und die Sicherheitsrichtlinien. Beachten Sie, dass diese zusammen mit dem erforderlich podSecurityGroupSelectorTerms
sindpodSubnetSelectorTerms
.
Anwendungsfälle
Verwenden Sie podSubnetSelectorTerms
es, wenn Sie:
-
Trennen Sie den Infrastrukturverkehr (node-to-node Kommunikation) vom Anwendungsverkehr (pod-to-pod Kommunikation)
-
Wenden Sie auf Knoten-Subnetze andere Netzwerkkonfigurationen als auf Pod-Subnetze an.
-
Implementieren Sie unterschiedliche Sicherheitsrichtlinien oder Routing-Regeln für Knoten und Pods.
-
Konfigurieren Sie Reverse-Proxys oder Netzwerkfilterung speziell für den Knotenverkehr, ohne den Pod-Verkehr zu beeinträchtigen. Verwenden Sie
advancedNetworking
undcertificateBundles
, um Ihren Reverse-Proxy und alle selbstsignierten oder privaten Zertifikate für den Proxy zu definieren.
Beispielkonfiguration
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: advanced-networking spec: role: MyNodeRole # Subnets for EC2 instances (nodes) subnetSelectorTerms: - tags: Name: "node-subnet" kubernetes.io/role/internal-elb: "1" securityGroupSelectorTerms: - tags: Name: "eks-cluster-sg" # Separate subnets for pods podSubnetSelectorTerms: - tags: Name: "pod-subnet" kubernetes.io/role/pod: "1" podSecurityGroupSelectorTerms: - tags: Name: "eks-pod-sg"
Überlegungen zu Subnetz-Selektoren für Pods
-
Reduzierte Pod-Dichte: Bei der Verwendung können weniger Pods auf jedem Knoten ausgeführt werden
podSubnetSelectorTerms
, da sich die primäre Netzwerkschnittstelle des Nodes im Knoten-Subnetz befindet und nicht für Pods im Pod-Subnetz verwendet werden kann. -
Einschränkungen bei der Subnetzauswahl: Der Standard
subnetSelectorTerms
und diesecurityGroupSelectorTerms
Konfigurationen gelten nicht für die Auswahl des Pod-Subnetzes. -
Netzwerkplanung: Sorgen Sie für ausreichend IP-Adressraum sowohl in den Knoten- als auch in den Pod-Subnetzen, um Ihre Workload-Anforderungen zu erfüllen.
-
Routing-Konfiguration: Stellen Sie sicher, dass die Routing-Tabelle und die Netzwerk-Zugriffskontrollliste (ACL) der Pod-Subnetze ordnungsgemäß für die Kommunikation zwischen Knoten- und Pod-Subnetzen konfiguriert sind.