Erstellen Sie eine Knotenklasse für Amazon EKS - Amazon EKS

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:

  1. Erstellen Sie eine YAML-Datei (z. B.nodeclass.yaml) mit Ihrer Node-Class-Konfiguration

  2. Wenden Sie die Konfiguration auf Ihren Cluster an mit kubectl

  3. 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 istNodeClass, 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 die AmazonEKSAutoNodePolicy 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 einen NodeClass Anrufer enthält, der automatisch bereitgestellt wird, wenn Sie mindestens einen integrierten NodePool Modus aktivieren. Informationen zur Aktivierung der integrierten Funktion finden Sie NodePools unterIntegriert aktivieren oder deaktivieren NodePools.

  • subnetSelectorTermsVerhalten mit mehreren Subnetzen — Wenn es mehrere Subnetze gibt, die den subnetSelectorTerms 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 KnotensubnetSelectorTerms, 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 werdenpodSubnetSelectorTerms, 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 die securityGroupSelectorTerms 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.