Wie man einen Kubernetes-Cluster mit der AWS EKS CLI erstellt

Wenn Sie ein Entwickler sind, möchten Sie normalerweise containerisierte Anwendungen auf Kubernetes bereitstellen. Aber die Frage ist, wie? Warum nicht das AWS EKS CLI ausprobieren?

In diesem Tutorial erfahren Sie, wie Sie das AWS EKS CLI einrichten, um einen Kubernetes-Cluster zu erstellen, damit Sie sich auf Ihren Code konzentrieren können anstatt auf die Verwaltung der Infrastruktur.

Lesen Sie weiter und beginnen Sie noch heute mit der Erstellung Ihres Clusters!

Voraussetzung

In diesem Tutorial wird eine praktische Demonstration durchgeführt. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie einen PC und ein AWS-Konto haben. Wenn Sie kein AWS-Konto haben, steht ein kostenloses Kontingent zur Verfügung.

Erstellen eines Administratorbenutzers

Vor der Erstellung eines Kubernetes-Clusters erstellen Sie einen Administratorbenutzer. Ein Administratorbenutzer ermöglicht Ihnen das Anmelden bei der AWS-Konsole, um Ihren Cluster zu konfigurieren. Starten Sie dieses Tutorial, indem Sie über die AWS-Konsole einen Benutzer mit Administratorberechtigungen erstellen.

1. Melden Sie sich bei Ihrer AWS-Konsole an und navigieren Sie zu Ihrer IAM-Dashboard.

Klicken Sie auf Benutzer (linke Seitenleiste) -> Benutzer hinzufügen (oben rechts) wie unten gezeigt, um das Hinzufügen von Benutzern zu initialisieren.

Initializing User Creation

2. Geben Sie einen Benutzernamen im Feld Benutzername an. Hier wird K8-Admin verwendet. Wählen Sie die Option Zugriffsschlüssel – programmatischer Zugriff aus und klicken Sie auf Weiter: Berechtigungen.

Sie wählen die Option Zugriffsschlüssel – programmatischer Zugriff, da sie programmgesteuerten Zugriff ermöglicht. Dadurch kann eine Anwendung direkt mit AWS kommunizieren und Aktionen ausführen.

Configuring User Details

3. Wählen Sie die Option Vorhandene Richtlinien direkt anhängen aus, aktivieren Sie die Richtlinie AdministratorAccess und klicken Sie auf Weiter: Tags.

Die Richtlinie AdministratorAccess gewährt dem Benutzer (K8-Admin) uneingeschränkten Zugriff auf AWS und ermöglicht Folgendes:

Setting up AdministratorAccess policies

4. Klicken Sie auf Weiter: Überprüfen, um das Hinzufügen von Tags zu überspringen.

Skipping the tags screen

5. Überprüfen Sie abschließend die Benutzerdetails und klicken Sie auf Benutzer erstellen, um die Erstellung des Administrator-Benutzers abzuschließen.

Creating the admin user

Nach Abschluss der Erstellung des Administrator-Benutzers erhalten Sie eine Erfolgsmeldung oben auf dem Bildschirm, ähnlich der folgenden. Notieren Sie sich den Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel, da Sie diese Schlüssel später zum Anmelden verwenden werden.

Previewing the admin user keys

Starten einer EC2-Instanz

Jetzt, da Sie den K8-Admin erstellt haben, können Sie Ihre erste EC2-Instanz erstellen. Sie werden diese Instanz als Ihren Master-Knoten verwenden, auf dem Sie Ihre Befehle zur Erstellung des Clusters ausführen.

1. Navigieren Sie zu Ihrem EC2-Dashboard, klicken Sie auf EC2, dann auf Instanzen starten am rechten Rand der Seite. Dadurch wird Ihr Browser auf eine Seite umgeleitet, auf der Sie ein Amazon Machine Image (AMI) auswählen können (Schritt zwei).

Launching an EC2 Instance

2. Klicken Sie anschließend auf Auswählen neben (ganz rechts) der Amazon Linux 2 AMI (HVM) in der Liste, wie unten gezeigt.

Amazon Linux 2 AMI (HVM) bietet einen für die optimale Leistung der neuesten Hardwaregeneration abgestimmten Linux-Kernel 5.10. Diese AMI enthält auch viele Funktionen, die für Kubernetes-Cluster auf Produktionsebene erforderlich sind.

Selecting Amazon Linux 2 AMI (HVM)

3. Behalten Sie den Standardwert (t2.micro) für den Instanztyp bei und klicken Sie auf Weiter: Instanzdetails konfigurieren, um die Instanz zu konfigurieren.

Previewing the instance type

4. Aktivieren Sie die Option Automatisch öffentliche IP-Adresse zuweisen und klicken Sie auf Weiter: Speicher hinzufügen. Diese Option stellt sicher, dass jeder Ihrer Container auf die öffentliche IP-Adresse Ihres Kubernetes-Master-Knotens und Ihrer EC2-Instanzen zugreifen kann.

Configuring instance details

5. Behalten Sie den Standard (Root) auf der Seite „Speicher hinzufügen“ bei und klicken Sie auf Weiter: Tags hinzufügen. Das Root-Volume ist erforderlich, um Daten innerhalb der Instanz zu lesen und zu schreiben.

Configuring the storage

6. Überspringen Sie das Hinzufügen von Tags und klicken Sie auf Weiter: Sicherheitsgruppe konfigurieren.

Previewing the tags

7. Behalten Sie die Standardeinstellungen für die Sicherheitsgruppe wie unten gezeigt bei und klicken Sie auf Überprüfen und starten.

Previewing the Security Group

8. Überprüfen Sie die Startdetails der Instanz und klicken Sie auf Starten, um die Instanz zu starten. Es wird ein Pop-up-Fenster angezeigt, in dem Sie auswählen können, ob Sie einen vorhandenen Schlüsselpaar auswählen oder ein neues erstellen möchten (Schritt neun).

Launching an instance

9. Konfigurieren Sie im Dialogfeld-Popup das Schlüsselpaar wie folgt:

  • Wählen Sie im Dropdown-Menü Ein neues Schlüsselpaar erstellen aus.
  • Wählen Sie RSA als Schlüsselpaar-Typ.
  • Geben Sie den gewünschten Schlüsselpaar-Namen ein. Für dieses Tutorial ist der Schlüsselpaar-Name jedoch auf mein-nvkp festgelegt.
  • Klicken Sie auf Schlüsselpaar herunterladen und dann auf Instanzen starten.
Creating a new key pair

Ihre Instanz benötigt möglicherweise eine Minute oder zwei, um vollständig zu starten. Sobald Ihre Instanz ausgeführt wird, wird sie in Ihrem EC2-Dashboard wie unten gezeigt aufgelistet.

Previewing the newly-created instance

Konfigurieren des AWS CLI-Tools

Jetzt, da Ihre Instanz läuft, ist es an der Zeit, die Befehlszeilen-Tools (CLI) zu konfigurieren. Die Verwendung der CLI-Tools in Verbindung mit Ihrem AWS-Konto ist entscheidend für die Erstellung Ihres Kubernetes-Clusters.

1. Wählen Sie auf Ihrem EC2-Dashboard das Kontrollkästchen aus, um die Instanz auszuwählen, wie unten gezeigt. Klicken Sie auf Verbinden, um die Verbindung zur Instanz zu initialisieren.

Connecting to the Ec2 instance.

2. Klicken Sie anschließend auf die Schaltfläche Verbinden, um mit der zuvor ausgewählten Instanz aus Schritt eins eine Verbindung herzustellen.

Connecting to the instance

Nachdem Sie eine Verbindung zu Ihrer EC2-Instanz hergestellt haben, wird Ihr Browser zur unten angezeigten interaktiven Eingabeaufforderung weitergeleitet und stellt eine vorübergehende SSH-Sitzung mit Ihrer EC2-Instanz her.

Die interaktive Eingabeaufforderung ermöglicht es Ihnen, sich mit der Befehlszeile zu verbinden und administrative Befehle für Ihre neue Instanz auszuführen.

Previewing the interactive terminal

3. Führen Sie den untenstehenden aws-Befehl aus, um Ihre CLI-Version zu überprüfen.

aws --version

Wie Sie aus der untenstehenden Ausgabe sehen können, verwenden Sie die Version 1.18.147 auf Ihrer Amazon Linux 2-Instanz, die veraltet ist. Sie müssen AWS CLI Version 2+ herunterladen und installieren, um sicherzustellen, dass Sie auf alle Kubernetes-Funktionen zugreifen können (Schritt drei).

Checking the AWS CLI version

4. Führen Sie nun den untenstehenden curl-Befehl aus, um das CLI-Tool v2+ herunterzuladen und in einer Zip-Datei mit dem Namen awscliv2.zip zu speichern.

 curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" 
Downloading the CLI tool v2+

5. Führen Sie die folgenden Befehle aus, um die heruntergeladene Datei zu entpacken und den Installationsort der veralteten AWS CLI zu ermitteln.

unzip awscliv2.zip
which aws

Wie Sie aus der untenstehenden Ausgabe sehen können, ist die veraltete AWS CLI unter /usr/bin/aws installiert. Sie müssen diesen Pfad mit der aktualisierten Version aktualisieren.

Updating outdated AWS CLI

6. Führen Sie den folgenden Befehl aus, um Folgendes durchzuführen und den Installationspfad der AWS CLI auf Ihrer Instanz zu aktualisieren:

  • Installieren Sie die aktualisierten AWS CLI-Tools auf Ihrer Amazon Linux 2-Instanz (sudo ./aws/install).
  • Legen Sie das Verzeichnis (--install-dir /usr/bin/aws-cli) fest, in dem die CLI-Tools installiert werden sollen. Dadurch können Sie die aktualisierte AWS CLI auf anderen Instanzen übertragen, ohne die CLI-Tools erneut installieren zu müssen.
  • Aktualisieren Sie (--update) Ihre aktuelle Shell-Umgebung mit dem neuen Pfad für die AWS CLI-Tools, falls einer in Ihrer aktuellen Umgebung vorhanden ist.
sudo ./aws/install --bin-dir /usr/bin --install-dir /usr/bin/aws-cli --update
Installing the CLI tool v2

7. Führen Sie den folgenden Befehl aws --version erneut aus, um zu überprüfen, ob die aktualisierte AWS CLI korrekt installiert ist.

aws --version

Die installierte AWS CLI-Version ist 2.4.7, wie unten gezeigt. Dies ist die neueste AWS CLI-Version, die zum Zeitpunkt des Schreibens verfügbar ist.

Checking the AWS CLI updated version

8. Führen Sie anschließend den Befehl aws configure aus, um Ihre Instanz mit den neuen AWS CLI-Tools zu konfigurieren.

aws configure

Geben Sie die entsprechenden Werte in den Eingabeaufforderungen wie unten angegeben ein:

  • AWS Access Key ID [None] – Geben Sie die Access Key ID ein, die Sie im vorherigen Abschnitt „Erstellen Ihres Administratorbenutzers“ notiert haben.
  • AWS Secret Access Key [None] – Geben Sie den Secret Access Key ein, den Sie im vorherigen Abschnitt „Erstellen Ihres Administratorbenutzers“ notiert haben.
  • Standard-Regionsname [None] – Wählen Sie eine unterstützte Region, wie z.B. us-east-1.
  • Standardausgabeformat [None] – Geben Sie json ein, da JSON-Format der bevorzugte Standard für die Verwendung mit Kubernetes ist.
Configuring the AWS Environment

Konfigurieren des Amazon EKS-Befehlszeilentools (eksctl)

Da Ihr Ziel darin besteht, einen Kubernetes-Cluster mit der AWS EKS CLI zu erstellen, werden Sie auch das Amazon EKS-Befehlszeilentool (eksctl) konfigurieren. Dieses Tool ermöglicht es Ihnen, Kubernetes-Cluster auf Amazon EKS zu erstellen und zu verwalten.

1. Installieren Sie die neueste Version des Kubernetes-Befehlszeilentools (kubectl) auf Ihrer EC2-Instanz. Dieses Tool ermöglicht es Ihnen, Befehle gegen Kubernetes-Cluster auszuführen.

2. Führen Sie anschließend den folgenden curl-Befehl aus, um das neueste eksctl-Release von GitHub in Ihr /tmp-Verzeichnis als .tar.gz-Datei abzurufen und den Inhalt des Archivs in das Verzeichnis /tmp zu extrahieren.

Führen Sie die folgenden Befehle aus, um Folgendes auszuführen:

  • Rufen Sie das neueste eksctl-Release von GitHub (--location) als .tar.gz-Archiv ("<https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$>(uname -s)_amd64.tar.gz") ab
  • Extrahieren Sie den Inhalt des Archivs in das Verzeichnis /tmp (tar xz -C /tmp), wobei die Option --silent die Ausgabe des Befehls unterdrückt.
  • Verschieben Sie die eksctl-Binärdatei (/tmp/eksctl) mit sudo mv in den Pfad, in dem Sie die AWS CLI installiert haben (/usr/bin)
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/bin

3. Führen Sie abschließend den folgenden Befehl aus, um zu bestätigen, dass Sie eksctl erfolgreich installiert haben.

eksctl version

Die folgende Ausgabe bestätigt, dass Sie eksctl erfolgreich installiert haben.

Checking the eksctl CLI tool version

Wenn Sie neu bei eksctl sind, können Sie den folgenden Befehl ausführen, um eine Liste aller unterstützten eksctl-Befehle und deren Verwendung zu erhalten.

eksctl --help
Previewing the eksctl help page

Bereitstellung Ihres EKS-Clusters

Jetzt, da Sie eksctl konfiguriert haben, können Sie Ihren ersten EKS-Cluster mit den eksctl-Befehlen bereitstellen.

Führen Sie den folgenden eksctl-Befehl aus, um Ihren ersten Cluster zu erstellen und Folgendes durchzuführen:

  • Erstellen Sie einen Kubernetes-Cluster mit 3 Knoten namens dev, wobei ein Knotentyp t3.micro und eine Region us-east-1 ist.
  • Definieren Sie mindestens einen Knoten (--nodes-min 1) und maximal vier Knoten (--nodes-max 4) für diese Knotengruppe, die von EKS verwaltet wird. Die Knotengruppe wird standard-workers genannt.
  • Erstellen Sie eine Knotengruppe mit dem Namen standard-workers und wählen Sie einen Maschinentyp für die Knotengruppe standard-workers aus.
eksctl create cluster --name dev --version 1.21 --region us-east-1 --nodegroup-name standard-workers --node-type t3.micro --nodes 3 --nodes-min 1 --nodes-max 4 --managed
Provisioning your EKS Cluster

2. Gehen Sie zu Ihrem CloudFormation-Dashboard, um die durch den Befehl ausgeführten Aktionen zu sehen. Der Befehl eksctl create cluster verwendet CloudFormation, um die Infrastruktur in Ihrem AWS-Konto bereitzustellen.

Wie Sie unten sehen können, wird ein CloudFormation-Stack mit dem Namen eksctl-dev-cluster erstellt. Dieser Vorgang kann 15 Minuten oder länger dauern, bis er abgeschlossen ist.

Previewing the eksctl-dev-cluster stack.

3. Navigieren Sie nun zu Ihrem EKS-Dashboard und Sie sehen einen Cluster mit dem Namen dev. Klicken Sie auf den Hyperlink dev, um auf das EKS-Cluster-Dashboard von dev zuzugreifen.

Navigating to the dev EKS Cluster dashboard.

Unten sehen Sie Details zum dev EKS-Cluster, wie den Knotennamen , den Instanztyp , die Knotengruppe und den Status .

Previewing the dev EKS Cluster dashboard.

4. Wechseln Sie zum EC2-Dashboard und Sie sehen, dass vier Knoten ausgeführt werden, davon drei mit der Rolle t3.micro in Ihrem AWS-Konto (drei Worker-Knoten und ein Master-Knoten).

Previewing the EC2 dashboard.

5. Führen Sie abschließend den folgenden Befehl aus, um Ihre kubectl-Konfiguration (update-kubeconfig) mit dem Endpunkt, dem Zertifikat und den Anmeldeinformationen Ihres Clusters zu aktualisieren.

aws eks update-kubeconfig --name dev --region us-east-1
Updating kubectl config

Bereitstellung einer Anwendung auf dem EKS-Cluster

Sie haben Ihren EKS-Cluster erstellt und bestätigt, dass er einwandfrei funktioniert. Aber im Moment steht der EKS-Cluster nur herum. Für diese Demo werden Sie den EKS-Cluster nutzen, indem Sie eine NGINX-Anwendung bereitstellen.

1. Führen Sie den folgenden yum-Befehl aus, um git zu installieren und akzeptieren Sie während der Installation automatisch alle Aufforderungen (-y).

sudo yum install -y git
Installing Git

2. Führen Sie anschließend den folgenden git clone-Befehl aus, um die Konfigurationsdateien aus dem GitHub-Repository in Ihr aktuelles Verzeichnis zu klonen. Sie werden diese Dateien verwenden, um eine NGINX-Bereitstellung auf Ihren Pods zu erstellen und einen Load Balancer (ELB) zu erstellen.

git clone https://github.com/Adam-the-Automator/aws-eks-cli.git
Cloning the configuration files

3. Führen Sie die folgenden Befehle aus, um in das Verzeichnis ata-elk zu wechseln und einen Service für NGINX (./nginx-svc.yaml) zu erstellen (kubectl apply).

# Wechseln Sie zum Verzeichnis ata-elk
cd ata-elk
# Wenden Sie die Konfiguration in ./nginx-svc.yaml auf einen Pod an
kubectl apply -f ./nginx-svc.yaml
Creating a service for NGINX

4. Führen Sie nun den Befehl kubectl get service aus, um den Status Ihres NGINX-Services zu überprüfen.

kubectl get service

Wie Sie unten sehen können, handelt es sich bei dem Servicetyp um einen Load Balancer, und Kubernetes hat einen Service (nginx-svc) erstellt, der Ihre NGINX-Bereitstellung ist. Sie können auch den externen DNS-Hostname des von EKS erstellten Load Balancers unter der Spalte EXTERNAL IP sehen.

Notieren Sie sich den externen DNS-Namen des Load Balancers, da Sie ihn später zum Testen des Load Balancers benötigen werden.

Checking the status of your NGINX

5. Führen Sie den folgenden kubectl-Befehl aus, um die NGINX-Pods bereitzustellen.

kubectl apply -f ./nginx-deployment.yaml
Deploying the NGINX pods

6. Führen Sie die folgenden kubectl get-Befehle aus, um den Status Ihrer NGINX deployment und Ihres NGINX pod zu überprüfen.

kubectl get deployment
kubectl get pod

Wie Sie im unten stehenden Output sehen können, gibt es drei Pods Ihres Deployments und alle sind aktiv.

Checking the status of the NGINX deployment and pods

7. Führen Sie als nächstes den Befehl kubectl get node aus, um den Status Ihrer Worker-Nodes zu überprüfen.

kubectl get node
Check the status of your worker nodes

8. Führen Sie nun den folgenden curl-Befehl aus, um Ihren Load Balancer zu testen. Ersetzen Sie <LOAD_BALANCER_DNS_HOSTNAME> durch den zuvor notierten DNS-Namen (Schritt fünf).

curl "<LOAD_BALANCER_DNS_HOSTNAME>"

Sie sehen die Willkommensseite von NGINX, die durch den von EKS erstellten NGINX-Service erstellt wurde, wie unten gezeigt. Der unten stehende Output bestätigt, dass Ihr Load Balancer korrekt funktioniert und dass Sie auf Ihre NGINX-Pods zugreifen können.

Checking your load balancer

9. Kopieren Sie abschließend zur Überprüfung den DNS-Namen des Load Balancers und fügen Sie ihn in einem neuen Browser-Tab ein.

Sie erhalten ebenfalls eine Willkommensseite von NGINX, was darauf hinweist, dass Ihre Anwendung funktioniert.

Checking your load balancer with a browser

Testen der hochverfügbaren Kubernetes-Steuerung

Jetzt, da Sie einen laufenden Cluster haben, testen Sie, ob die Kubernetes-Steuerungsebene hochverfügbar ist. Die Verfügbarkeit Ihrer Anwendung hängt von dieser Funktion ab. Wenn die Steuerungsebene nicht funktioniert, sind Ihre Anwendungen nicht verfügbar und können Benutzern nicht dienen.

Mit der hochverfügbaren Kubernetes-Steuerungsfunktion erhöhen Sie die Verfügbarkeit Ihrer Anwendung. Sie werden diese Funktion testen, indem Sie Ihre EKS-Worker-Nodes stoppen und sehen, ob Kubernetes neue Nodes hochfährt, um die ausgefallenen zu ersetzen.

1. Stoppen Sie in Ihrem EC2-Dashboard alle EKS-Worker-Node-Instanzen, wie unten gezeigt.

Stopping all of your EKS worker node instances

2. Führen Sie als Nächstes den folgenden Befehl aus, um den Status des Worker-Knotens zu überprüfen.

kubectl get node

Sie erhalten eine Mischung von Statusmeldungen wie Ausstehend, In Betrieb und Beendet. Warum? Weil, wenn Sie versuchen, alle Worker-Knoten zu stoppen, erkennt Kubernetes den Ausfall und startet schnell einen anderen Knoten.

Checking the status of the worker node

3. Führen Sie nun den Befehl kubectl get pod aus, um die hochverfügbare Kubernetes-Steuerungsfunktion zu testen.

kubectl get pod

Sie können in der Ausgabe sehen, dass es drei neue Pods (durch ihr Alter identifiziert) im Zustand In Betrieb gibt. Diese neuen Pods zeigen an, dass die hochverfügbare Kubernetes-Steuerungsfunktion wie beabsichtigt funktioniert.

Checking the status of the pods

4. Führen Sie den unten stehenden Befehl kubectl get service aus, um alle verfügbaren Dienste aufzulisten.

Sie können unten sehen, dass Kubernetes einen neuen Dienst erstellt hat und der DNS-Name des Lastenausgleichers jetzt unterschiedlich ist. kubectl get service

kubectl get service
Kubernetes has created a new service

5. Kopieren Sie schließlich den DNS-Namen des Lastenausgleichers und fügen Sie ihn in Ihren Browser ein. Sie erhalten die Willkommensseite von NGINX, wie Sie es im letzten Schritt des Abschnitts „Bereitstellen einer Anwendung auf dem EKS-Cluster“ getan haben.

Fazit

In diesem Tutorial haben Sie gelernt, wie Sie einen EKS-Cluster erstellen, einen NGINX-Dienst aus Ihrem Container bereitstellen und die hochverfügbare Steuerungsfunktion testen können.

Zu diesem Zeitpunkt sollten Sie ein gutes Verständnis dafür haben, wie Sie EKS-Cluster in Ihrer AWS-Umgebung erstellen können.

Was kommt als nächstes für Sie? Vielleicht lernen, wie man eine NodeJS-Anwendung mit Docker und K8s auf AWS bereitstellt?

Source:
https://adamtheautomator.com/aws-eks-cli/