Hoe maak je een Kubernetes-cluster met de AWS EKS CLI

Als je een ontwikkelaar bent, wil je waarschijnlijk containerized applicaties implementeren op Kubernetes. Maar de vraag is, hoe? Waarom probeer je niet de AWS EKS CLI?

In deze handleiding leer je hoe je de AWS EKS CLI instelt om een Kubernetes-cluster te maken, zodat je je kunt concentreren op je code in plaats van het beheren van infrastructuur.

Lees verder en begin vandaag nog met het maken van je cluster!

Vereiste

Deze tutorial zal een praktische demonstratie zijn. Als je wilt volgen, zorg er dan voor dat je een pc en een AWS-account hebt. Als je geen AWS-account hebt, is een gratis laag beschikbaar.

Creëer een beheerdersgebruiker

Voordat je een Kubernetes-cluster maakt, maak je een beheerdersgebruiker aan. Een beheerdersgebruiker stelt je in staat om in te loggen op de AWS-console om je cluster te configureren. Start deze tutorial door een gebruiker met beheerdersrechten aan te maken via de AWS-console.

1. Log in op je AWS-console en ga naar je IAM-dashboard.

Klik op Gebruikers (linkerpaneel) —> Gebruikers toevoegen (rechtsboven) zoals hieronder weergegeven om gebruikers toe te voegen.

Initializing User Creation

2. Vul vervolgens een gebruikersnaam in het veld Gebruikersnaam, hier wordt K8-Admin gebruikt, vink de optie Toegangssleutel – Programatische toegang aan en klik op Volgende: Machtigingen.

U kiest de optie Toegangssleutel – Programatische toegang omdat deze programmeerbaar toegankelijk is. Hierdoor kunt u een applicatie gebruiken om direct met AWS te communiceren over welke acties moeten worden uitgevoerd.

Configuring User Details

3. Klik op de optie Bestaande beleidsregels rechtstreeks koppelen, vink het beleid AdministratorAccess aan en klik op Volgende: Tags.

Het beleid AdministratorAccess geeft de gebruiker (K8-Admin) volledige toegang tot AWS, en meer zoals hieronder weergegeven:

Setting up AdministratorAccess policies

4. Klik op Volgende: Review om tags toevoegen over te slaan.

Skipping the tags screen

5. Controleer tot slot de gebruikersgegevens en klik op Gebruiker maken om het maken van de beheerdersgebruiker te voltooien.

Creating the admin user

Zodra het maken van de beheerdersgebruiker is voltooid, ontvangt u een Succes-bericht bovenaan het scherm, zoals hieronder. Noteer de Toegangssleutel-ID en Geheime toegangssleutel omdat u deze sleutels later zult gebruiken om in te loggen.

Previewing the admin user keys

Het starten van een EC2-instantie

Nu je de K8-Admin hebt aangemaakt, kun je nu je eerste EC2-instantie maken. Je zult deze instantie gebruiken als je masterknooppunt, waar je je opdrachten uitvoert om de cluster te maken.

1. Ga naar je EC2-dashboard, klik op EC2, en vervolgens op Instanties starten aan de meest rechtse kant van de pagina. Hierdoor wordt je browser doorgestuurd naar een pagina waar je een Amazon Machine Image (AMI) kunt kiezen (stap twee).

Launching an EC2 Instance

2. Klik vervolgens op Selecteren naast (meest rechts) de Amazon Linux 2 AMI (HVM) in de lijst, zoals hieronder weergegeven.

Amazon Linux 2 AMI (HVM) biedt Linux-kernel 5.10 afgestemd op optimale prestaties van de nieuwste generatie hardware. Deze AMI heeft ook veel functies die vereist zijn voor Kubernetes-clusters op productieniveau.

Selecting Amazon Linux 2 AMI (HVM)

3. Houd de standaard (t2.micro) voor het instantietype en klik op Volgende: Instantieconfiguratie om de instantie te configureren.

Previewing the instance type

4. Schakel de optie Automatisch toewijzen van openbaar IP-adres in en klik op Volgende: Opslag toevoegen. Deze optie zorgt ervoor dat elk van je containers toegang heeft tot het openbare IP-adres van je Kubernetes-masterknooppunt en je EC2-instanties.

Configuring instance details

5. Houd de standaard (Root) op de pagina Opslag toevoegen en klik op Volgende: Tags toevoegen. Het Root-volume is vereist om gegevens te lezen en te schrijven vanuit de instantie.

Configuring the storage

6. Sla het toevoegen van tags over en klik op Volgende: Beveiligingsgroep configureren.

Previewing the tags

7. Behoud de standaardinstellingen voor de beveiligingsgroep, zoals hieronder weergegeven, en klik op Beoordelen en starten.

Previewing the Security Group

8. Controleer de details van het instantie-starten en klik op Starten om de instantie te starten. Er verschijnt een pop-up waarin u kunt kiezen om een bestaand key pair te selecteren of een nieuw key pair te maken (stap negen).

Launching an instance

9. Configureer in de dialoogpop-up het key pair als volgt:

  • Selecteer Maak een nieuw key pair in het vervolgkeuzemenu.
  • Kies RSA als het Type key pair.
  • Geef uw voorkeursnaam voor het Key pair op. Maar voor deze handleiding is de key pair-naam ingesteld op my-nvkp.
  • Klik op Key Pair Downloaden, vervolgens op Instanties starten.
Creating a new key pair

Uw instantie kan een minuut of twee nodig hebben om volledig te starten. Zodra uw instantie actief is, ziet u deze vermeld in uw EC2-dashboard, zoals hieronder weergegeven.

Previewing the newly-created instance

Configureren van de AWS CLI-tool

Nu uw instantie actief is, is het tijd om de opdrachtregel (CLI) gereedschappen te configureren. Het gebruik van de CLI gereedschappen in combinatie met uw AWS-account is essentieel bij het maken van uw Kubernetes-cluster.

1. Ga naar uw EC2-dashboard, vink het vakje aan om de instantie te selecteren, zoals hieronder weergegeven. Klik op Verbinden om verbinding te maken met de instantie.

Connecting to the Ec2 instance.

2. Klik vervolgens op de knop Verbinden om verbinding te maken met de instantie die u eerder in stap één hebt geselecteerd.

Connecting to the instance

Zodra u verbinding hebt gemaakt met uw EC2-instantie, wordt uw browser omgeleid naar de interactieve terminal hieronder weergegeven als uw tijdelijke SSH-sessie met uw EC2-instantie.

De interactieve terminal stelt u in staat om verbinding te maken met de opdrachtregel en beheeropdrachten uit te voeren voor uw nieuwe instantie.

Previewing the interactive terminal

3. Voer de onderstaande aws opdracht uit om uw CLI-versie te controleren.

aws --version

Zoals u kunt zien aan de output hieronder, draait u versie 1.18.147 op uw Amazon Linux 2 instantie, wat verouderd is. U moet AWS CLI versie 2+ downloaden en installeren om ervoor te zorgen dat u toegang hebt tot alle Kubernetes-functies (stap drie).

Checking the AWS CLI version

4. Voer nu de curl opdracht hieronder uit om het CLI-gereedschap v2+ te downloaden en op te slaan in een zipbestand met de naam awscliv2.zip.

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

5. Voer de volgende commando’s uit om het gedownloade bestand uit te pakken en te bepalen waar de verouderde AWS CLI is geïnstalleerd.

unzip awscliv2.zip
which aws

Zoals u kunt zien aan de output hieronder, is de verouderde AWS CLI geïnstalleerd op /usr/bin/aws. U moet dit pad bijwerken met de bijgewerkte versie.

Updating outdated AWS CLI

6. Voer de onderstaande opdracht uit om het volgende uit te voeren en de installatiepad van de AWS CLI op uw instantie bij te werken:

  • Installeer de bijgewerkte AWS CLI-tools op uw Amazon Linux 2-instantie (sudo ./aws/install).
  • Stel de map in (--install-dir /usr/bin/aws-cli) waar de CLI-tools moeten worden geïnstalleerd. Op deze manier kunt u de bijgewerkte AWS CLI overbrengen naar andere instanties zonder de CLI-tools opnieuw te hoeven installeren.
  • Werk uw huidige shell-omgeving bij (--update) met het nieuwe pad voor AWS CLI-tools als er een in uw huidige omgeving staat.
sudo ./aws/install --bin-dir /usr/bin --install-dir /usr/bin/aws-cli --update
Installing the CLI tool v2

7. Voer de onderstaande opdracht aws --version opnieuw uit om te controleren of de bijgewerkte AWS CLI correct is geïnstalleerd.

aws --version

De geïnstalleerde AWS CLI-versie is 2.4.7, zoals hieronder weergegeven, wat de nieuwste AWS CLI-versie is 2.4.7 op het moment van schrijven.

Checking the AWS CLI updated version

8. Voer vervolgens de opdracht aws configure uit om uw instantie te configureren met de nieuwe AWS CLI-tools.

aws configure

Voer de juiste waarden in de prompts in zoals hieronder aangegeven:

  • AWS Access Key ID [None] – Voer de toegangssleutel-ID in die u hebt genoteerd in de vorige sectie “Uw beheerdersgebruiker maken”.
  • AWS Secret Access Key [None] – Voer de geheime toegangssleutel in die u hebt genoteerd in de vorige sectie “Uw beheerdersgebruiker maken”.
  • Standaardregio [Geen] – Selecteer een ondersteunde regio, zoals us-east-1.
  • Standaard uitvoerformaat [Geen] – Voer json in, aangezien het JSON-formaat de voorkeursstandaard is voor gebruik met Kubernetes.
Configuring the AWS Environment

Configuratie van Amazon EKS Command-Line Tool (eksctl)

Aangezien uw doel is om een Kubernetes-cluster te creëren met AWS EKS CLI, zult u ook de Amazon EKS (eksctl) command-line tool configureren. Met deze tool kunt u Kubernetes-clusters op Amazon EKS maken en beheren.

1. Installeer de nieuwste versie van de Kubernetes-command-line tool (kubectl) op uw EC2-instantie. Deze tool stelt u in staat om commando’s uit te voeren tegen Kubernetes-clusters.

2. Voer vervolgens het curl-commando hieronder uit om de nieuwste eksctl-release van GitHub op te halen naar uw /tmp-directory als een .tar.gz-bestand en pak vervolgens de inhoud van het archief uit naar de /tmp-directory.

Voer de onderstaande commando’s uit om het volgende uit te voeren:

  • Haal de nieuwste eksctl-release op van GitHub (--location) als .tar.gz-archief ("<https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$>(uname -s)_amd64.tar.gz")
  • Pak de inhoud van het archief uit naar de /tmp-directory (tar xz -C /tmp), terwijl de --silent-vlag de uitvoer van het commando onderdrukt.
  • Verplaats (sudo mv) de eksctl-binair (/tmp/eksctl) naar het pad waar u de AWS CLI heeft geïnstalleerd (/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. Tenslotte, voer de onderstaande opdracht uit om te bevestigen dat je eksctl succesvol hebt geïnstalleerd.

eksctl version

De onderstaande uitvoer bevestigt dat je eksctl succesvol hebt geïnstalleerd.

Checking the eksctl CLI tool version

Als je nieuw bent bij eksctl, kun je de onderstaande opdracht uitvoeren om een lijst te krijgen van alle ondersteunde eksctl opdrachten en hun gebruik.

eksctl --help
Previewing the eksctl help page

Het voorzien van je EKS-cluster

Nu je eksctl hebt geconfigureerd, kun je nu je eerste EKS-cluster voorzien met eksctl opdrachten.

Voer de onderstaande eksctl opdracht uit om je eerste cluster te maken en voer het volgende uit:

  • Maak een Kubernetes-cluster met 3 nodes genaamd dev met één nodetype als t3.micro en regio als us-east-1.
  • Definieer minimaal één node (--nodes-min 1) en maximaal vier nodes (--nodes-max 4) voor deze nodegroep beheerd door EKS. De nodegroep is genaamd standard-workers.
  • Maak een nodegroep met de naam standard-workers en selecteer een machinetype voor de nodegroep standard-workers.
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. Ga naar je CloudFormation dashboard om de acties te zien die zijn uitgevoerd door de opdracht. De eksctl create cluster opdracht maakt gebruik van CloudFormation om de infrastructuur te voorzien in je AWS-account.

Zoals je hieronder kunt zien, wordt een CloudFormation-stack met de naam eksctl-dev-cluster gemaakt. Dit proces kan 15 minuten of langer duren om te voltooien.

Previewing the eksctl-dev-cluster stack.

3. Ga nu naar je EKS-dashboard, en je ziet een cluster met de naam dev voorzien. Klik op de hyperlink dev om toegang te krijgen tot het dashboard van het EKS-cluster van dev.

Navigating to the dev EKS Cluster dashboard.

Hieronder zie je de details van het EKS-cluster van dev, zoals Node-naam, Instantietype, Node-groep en Status.

Previewing the dev EKS Cluster dashboard.

4. Schakel over naar je EC2-dashboard, en je ziet vier nodes draaien, waarvan drie de rol t3.micro hebben in je AWS-account (drie worker nodes en één master node).

Previewing the EC2 dashboard.

5. Voer tot slot de onderstaande opdracht uit om je kubectl-configuratie (update-kubeconfig) bij te werken met het eindpunt, certificaat en referenties van je cluster.

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

Applicatie implementeren op EKS-cluster

Je hebt je EKS-cluster gemaakt en bevestigd dat het perfect werkt. Maar op dit moment staat het EKS-cluster gewoon in een hoekje. Voor deze demo ga je het EKS-cluster gebruiken door een NGINX-applicatie te implementeren.

1. Voer het yum-commando hieronder uit om git te installeren terwijl u automatisch alle prompts accepteert (-y) tijdens de installatie.

sudo yum install -y git
Installing Git

2. Voer vervolgens het git clone-commando hieronder uit om de configuratiebestanden van de GitHub-opslagplaats naar uw huidige directory te klonen. U zult deze bestanden gebruiken om een NGINX-implementatie op uw pods te maken en een load balancer (ELB) te maken.

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

3. Voer de volgende commando’s uit om naar de ata-elk-directory te gaan en een service voor NGINX te maken (kubectl apply) (./nginx-svc.yaml).

# Verander directory naar ata-elk
cd ata-elk
# Pas de configuratie in ./nginx-svc.yaml toe op een pod
kubectl apply -f ./nginx-svc.yaml
Creating a service for NGINX

4. Voer vervolgens het kubectl get service-commando uit om de status van uw NGINX-service te controleren.

kubectl get service

Zoals u hieronder ziet, is het servicetype een load balancer, en Kubernetes heeft een service aangemaakt (nginx-svc), wat uw NGINX-implementatie is. U kunt ook de externe DNS-hostnaam van de load balancer die door EKS is aangemaakt, zien onder de EXTERN IP-kolom.

Noteer de externe DNS-hostnaam van de load balancer omdat u deze later nodig zult hebben om de load balancer te testen.

Checking the status of your NGINX

5. Voer het kubectl-commando hieronder uit om de NGINX-pods te implementeren.

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

6. Voer de volgende kubectl get commando’s uit om de status van uw NGINX deployment en uw NGINX pod te controleren.

kubectl get deployment
kubectl get pod

Zoals u kunt zien in de onderstaande uitvoer, zijn er drie pods van uw deployment, en ze draaien allemaal.

Checking the status of the NGINX deployment and pods

7. Voer vervolgens het kubectl get node commando uit om de status van uw worker nodes te controleren.

kubectl get node
Check the status of your worker nodes

8. Voer nu het curl commando hieronder uit om uw load balancer te testen. Vervang <LOAD_BALANCER_DNS_HOSTNAME> door de eerder genoteerde DNS-naam (stap vijf).

curl "<LOAD_BALANCER_DNS_HOSTNAME>"

U zult de welkomstpagina van NGINX zien van de NGINX-service gemaakt door EKS, zoals hieronder getoond. De onderstaande uitvoer bevestigt dat uw load balancer correct werkt en dat u toegang heeft tot uw NGINX-pods.

Checking your load balancer

9. Kopieer ten slotte voor dubbele controle de DNS-naam van de load balancer en plak deze in een nieuw browsertabblad.

U zult ook een welkomstpagina van NGINX krijgen, wat aangeeft dat uw toepassing werkt.

Checking your load balancer with a browser

Het testen van de zeer beschikbare Kubernetes-besturing

Nu u een cluster actief heeft, zult u testen of het Kubernetes-besturingsvlak zeer beschikbaar is. De uptime van uw toepassing is afhankelijk van deze functie. Als het besturingsvlak niet werkt, zullen uw toepassingen uitgeschakeld zijn en kunnen ze geen gebruikers bedienen.

Met de zeer beschikbare Kubernetes-besturingsfunctie verhoogt u de beschikbaarheid van uw toepassing. U zult deze functie testen door uw EKS worker nodes te stoppen en te zien of Kubernetes nieuwe nodes opstart om de defecte te vervangen.

1. Stop in uw EC2-dashboard alle instanties van uw EKS worker nodes, zoals hieronder weergegeven.

Stopping all of your EKS worker node instances

2. Voer vervolgens het volgende commando uit om de status van de worker node te controleren.

kubectl get node

Je krijgt een mix van statussen, zoals In afwachting, Bezig met uitvoeren, en Beëindigen. Waarom? Omdat terwijl je probeert alle worker nodes te stoppen, Kubernetes het falen detecteert en snel een andere node opstart.

Checking the status of the worker node

3. Voer nu het commando kubectl get pod uit om de functie voor hoog beschikbare Kubernetes-besturing te testen.

kubectl get pod

Je kunt in de output zien dat er drie nieuwe pods (geïdentificeerd op leeftijd) zijn in de Bezig met uitvoeren toestand. Deze nieuwe pods geven aan dat de functie voor hoog beschikbare Kubernetes-besturing werkt zoals bedoeld.

Checking the status of the pods

4. Voer het commando kubectl get service hieronder uit om alle beschikbare services op te lijsten.

Je kunt hieronder zien dat Kubernetes een nieuwe service heeft aangemaakt, en de DNS-naam van de load balancer is nu anders. kubectl get service

kubectl get service
Kubernetes has created a new service

5. Kopieer tot slot de DNS-naam van de load balancer en plak deze in je browser. Je krijgt de welkomstpagina van NGINX te zien zoals je deed in de laatste stap van de sectie “Een applicatie implementeren op EKS-cluster”.

Conclusie

Gedurende deze tutorial heb je geleerd hoe je een EKS-cluster kunt maken, een NGINX-service kunt implementeren vanuit je container, en de functionaliteit van het hoog-beschikbare controlepaneel kunt testen.

Op dit punt zou je een goed begrip moeten hebben van hoe je EKS-clusters kunt maken in je AWS-omgeving.

Wat is uw volgende stap? Misschien leren hoe u een NodeJS-app kunt inzetten met behulp van Docker en K8s op AWS?

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