Direkt zum Inhalt

Wie verwende ich benutzerdefinierte Benutzerdaten mit AL2023 Amazon EKS-Knoten?

Lesedauer: 3 Minute
0

Ich verwende benutzerdefinierte Skripts, selbstverwaltete Knoten oder benutzerdefinierte Startvorlagen in Amazon Linux 2023 (AL2023) Amazon Machine Images (AMIs) in Amazon Elastic Kubernetes Service (Amazon EKS). Ich möchte benutzerdefinierte Benutzerdaten bereitstellen.

Kurzbeschreibung

AL2023 verwendet den Initialisierungsprozess für den nodeadm-Knoten, der ein YAML-Konfigurationsschema verwendet. Für selbstverwaltete Knotengruppen oder verwaltete Knotengruppen mit einer benutzerdefinierten Startvorlage musst du zusätzliche Cluster-Metadaten angeben, wenn du eine neue Knotengruppe erstellst. Die Mindestanforderungen an Metadaten, die du in das YAML-Konfigurationsschema aufnehmen musst, sind der Clustername, der API-Serverendpunkt, die Zertifizierungsstelle und das Service-CIDR.

Beispielkonfiguration mit den erforderlichen Mindestparametern:

---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: EKS-CLUSTER-NAME
    apiServerEndpoint: API-SERVER-ENDPOINT
    certificateAuthority: CERTIFICATE-AUTHORITY
    cidr: SERVICE-IPv4-RANGE

Weitere Informationen findest du im Abschnitt Vor dem Upgrade auf AL2023 in den Amazon EKS-optimierten Amazon Linux 2023-AMIs, die jetzt verfügbar sind

Lösung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Du musst ein Amazon EKS-AMI verwenden, das auf AL2023 ausgeführt wird. Führe den folgenden AWS-CLI-Befehl get-parameter aus, um die AMI-ID anzuzeigen:

aws ssm get-parameter --name /aws/service/eks/optimized-ami/kubernetes-version/ami-type/recommended/image_id \
    --region region-code --query "Parameter.Value" --output text

Hinweis: Ersetze kubernetes-version durch eine unterstützte Amazon EKS-Version und region-code durch deine AWS-Region. Ersetze außerdem ami-type durch amazon-linux-2023/x86_64/standard für x86-basierte Instances oder amazon-linux-2023/arm64/standard für ARM-Instances.

Füge den Benutzerdaten die erforderlichen Mindestparameter im folgenden Format hinzu:

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="BOUNDARY"

--BOUNDARY
Content-Type: application/node.eks.aws

---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec: ...

--BOUNDARY--

Hinweis: Du kannst die Parameter auch in ein mehrteiliges MIME-Dokument einbetten. Weitere Informationen findest du unter Mime multi-part archive (Mehrteiliges MIME-Archiv) auf der Cloud-init-Website.

Verwende die DescribeCluster-API, um die ClusterDetails zu finden und die erforderlichen Mindestparameter anzuzeigen. Wenn du beispielsweise NodeConfigSpec verwendest, kannst du die config- und Flag-Kubelet-Optionen an Kubelet übergeben. Weitere Informationen findest du unter CredentialProviderConfig und kubelet auf der Kubernetes-Website.

Beispiel für eine Benutzerdatenkonfiguration:

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="BOUNDARY"

--BOUNDARY
Content-Type: application/node.eks.aws

---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    apiServerEndpoint: API_SERVER_ENDPOINT
    certificateAuthority: CERTIFICATE
    cidr: SERVICE_IPv4_RANGE
    name: CLUSTER_NAME
  kubelet:
    config:
      maxPods: 17
    flags:
    - "--node-labels=key=value"

--BOUNDARY
Content-Type: text/x-shellscript;

#!/bin/bash
  set -o xtrace
  yum install htop -y

--BOUNDARY--

Hinweis: Wenn du Benutzerdaten in die Startvorlage eingibst, achte darauf, dass der Code keine zusätzlichen Leerzeichen oder Einrückungen enthält. Knoten können dem Cluster nicht beitreten, wenn ein Abstandsproblem auftritt, da nodeadm nicht gestartet werden kann.