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.

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.

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:
- Staat de gebruiker toe om CloudFormation te gebruiken
- Maak EC2-instanties aan en bekijk CloudWatch-logs
- Configureer elastic load balancers.

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

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

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.

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).

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.

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

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.

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.

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

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

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).

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.

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.

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.

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

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.

3. Voer de onderstaande aws
opdracht uit om uw CLI-versie te controleren.
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).

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
.

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.
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.

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.

7. Voer de onderstaande opdracht aws --version
opnieuw uit om te controleren of de bijgewerkte AWS CLI correct is geïnstalleerd.
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.

8. Voer vervolgens de opdracht aws configure
uit om uw instantie te configureren met de nieuwe AWS CLI-tools.
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.

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
)
3. Tenslotte, voer de onderstaande opdracht uit om te bevestigen dat je eksctl
succesvol hebt geïnstalleerd.
De onderstaande uitvoer bevestigt dat je eksctl succesvol hebt geïnstalleerd.

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.

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 alst3.micro
en regio alsus-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 genaamdstandard-workers
. - Maak een nodegroep met de naam
standard-workers
en selecteer een machinetype voor de nodegroepstandard-workers
.

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.

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.

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

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).

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.

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.

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.

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
).

4. Voer vervolgens het kubectl get service
-commando uit om de status van uw NGINX-service te controleren.
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.

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

6. Voer de volgende kubectl get
commando’s uit om de status van uw NGINX deployment
en uw NGINX pod
te controleren.
Zoals u kunt zien in de onderstaande uitvoer, zijn er drie pods van uw deployment, en ze draaien allemaal.

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

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).
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.

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.

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.

2. Voer vervolgens het volgende commando uit om de status van de worker node te controleren.
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.

3. Voer nu het commando kubectl get pod
uit om de functie voor hoog beschikbare Kubernetes-besturing te testen.
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.

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

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?