een Kubernetes Cluster op AWS opzetten met Kops

Kops wordt gebruikt om het Kubernetes cluster op de gemakkelijkst mogelijke manier op te brengen. Het is een command-line gereedschap dat gebruikt wordt om Kubernetes Clusters te maken. Kops ondersteunt officieel AWS, waar GCP, DigitalOcean, en OpenStack in Beta zijn. Kops kan ook Terraform bestanden genereren voor de vereiste cluster configuratie. Men kan met Kops niet alleen gemakkelijk een cluster aanmaken, maar ook de Kubernetes versie in het cluster wijzigen, verwijderen en upgraden.

In dit artikel bekijken we de stappen om een Kubernetes cluster met 1 master en 1 worker node op AWS te maken. Voor we verder gaan, wordt aangenomen dat je al bekend bent met Kubernetes

Pre-requisites

  1. AWS Account(Maak aan als je er geen hebt).
  2. EC2 Ubuntu 18.04 Instance (Klikhier om te leren hoe je een EC2 instance op AWS maakt ).
  3. S3 Bucket (Klikhier om te leren hoe je een S3 Bucket op AWS maakt).
  4. Domeinnaam (Zoek naar “Hoe koop je een Domeinnaam op AWS?” om de stappen voor het maken van een Domein op AWS te begrijpen).
  5. IAM Rol met voldoende/admin rechten(Klikhier om te leren een IAM rol op AWS te maken).

Wat zullen we doen?

  1. Log in op AWS.
  2. Bekijk de S3 Bucket, IAM Role.
  3. Koppel de IAM Rol aan de instantie.
  4. Installeer Kubectl en Kops op de EC2 instantie.
  5. Valideer Recordset regels en een hosted zone.
  6. Maak een Kubernetes Cluster met behulp van Kops.
  7. Verwijder het cluster.

Inloggen bij AWS

Klikhier om naar de login pagina te gaan waar je je credentials kunt invoeren om in het account te komen.

Inlogpagina

Zodra je met succes op je AWS account bent ingelogd, zie je de hoofd AWS Management Console als volgt.

AWS hoofdconsole

Controleer de S3 Bucket, IAM Rol

Om een cluster te maken met Kops, hebben we een S3 bucket nodig waarin Kops alle cluster configuratie zal opslaan.

Controleer de emmer die je wilt gebruiken om Kops configuraties in op te slaan.

S3 emmer

Controleer of de IAM rol die je gaat gebruiken voldoende/admin permissies heeft. Kops heeft geen admin permissies nodig, als je niet veel vertrouwd bent met AWS IAM en permissies en niet in toegangsproblemen wilt vervallen kun je admin permissie gebruiken.

IAM rol

Koppel de IAM Rol aan de instantie

Als je de rol hebt, koppel die dan aan de EC2 instantie die je gaat gebruiken om de kops commando’s uit te voeren. Ga naar EC2 –> selecteer de EC2 instance –> klik op Actions –> Security — > Modify IAM role.

Update EC2 instantie

Selecteer de IAM rol en sla de wijzigingen op.

Koppel de IAM rol aan de EC2 instantie

Installeer Kubectl en Kops op de EC2 instantie

Tot nu toe heb je een S3 emmer en een EC2 instantie met de vereiste rol eraan gekoppeld. Log nu in op de EC2 instantie die je zult gebruiken om een cluster te maken met Kops.

De volgende stap is het installeren van Kubectl op de EC2 instantie.

Voer de volgende commando’s uit om kubectl op Ubuntu Server te installeren

curl -LO “https://dl.k8s.io/release/$(curl -L -s

curl -LO “https://dl.k8s.io/$(curl -L -s

echo “$(<kubectl.sha256) kubectl” | sha256sum –check

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

mkdir -p ~/.local/bin/kubectl

mv ./kubectl ~/.local/bin/kubectl

Controleer de kubectl versie met het volgende commando.

kubectl versie –client

Installeer Kops op de EC2 instantie

Nu ben je klaar om Kops op dezelfde EC2 instantie te installeren.

Controleer of kops bestaat, zo niet installeer het dan met de volgende commando’s op Ubuntu Server.

kops

curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d ‘” -f 4)/kops-linux-amd64

chmod +x kops-linux-amd64

sudo mv kops-linux-amd64 /usr/local/bin/kops

Nu zou je kops op de server moeten hebben.

kops

Installeer Kubectl op de EC2 instantie

Valideer Recordset regels en een gehoste zone.

Kops heeft de vereiste DNS records nodig om een cluster te bouwen.

Hier heb ik een tweede gehoste zone in route53.

Creëer een gehoste zone

Ook heb ik de NS servers van mijn SUBDOMAIN naar het PARENT domein in Route53 gekopieerd.

Ga naar Route53 — > Hosted zones — > Ga naar de belangrijkste standaard Hosted zone — > Zoek de recordset op en controleer de waarden.

Maak een Record set in de belangrijkste Hosted Zone

Maak een Kubernetes Cluster met Kops

Nu zijn we helemaal klaar om een cluster te maken. Laten we, voordat we een cluster aanmaken, eens kijken wat we krijgen als we de clusters proberen op te sommen.

kops get clusters

Het bovenstaande commando zal mislukken omdat het een S3 bucket als parameter nodig heeft.

kops get clusters –state s3://kops.devopslee.com

Omdat er geen bestaande clusters zijn, zal het commando niets opnoemen.

Als je de naam van de s3 emmer niet als parameter aan het commando wilt geven, kun je de waarde ervan in de terminal exporteren naar de “KOPS_STATE_STORE” variabele.

exporteer KOPS_STATE_STORE=s3://kops.devopslee.com

Deze keer hoef je de S3 emmer niet op te geven in het commando

kops get clusters

Krijg cluster

Laten we nu proberen een cluster te maken met-

  1. 1 master node met de instantie van het type t2.medium
  2. 1 worker node met de instantie van het type t2.micro
  3. Beschikbaarheidszone als us-east-1a,us-east-1b,us-east-1c

kops create cluster –name kops.devopslee.com –state s3://kops.devopslee.com –cloud aws –master-size t2.medium –master-count 1 –master-zones us-east-1a –node-size t2.micro –node-count 1 –zones us-east-1a,us-east-1b,us-east-1c

Het bovenstaande commando geeft fouten omdat we geen ssh sleutel hebben opgegeven.

Controleer of je een sleutel-paar in je instantie hebt.

ls -l ~/.ssh/

Als je geen sleutel-paar hebt, kun je het aanmaken met het volgende commando.

ssh-keygen

Genereer ssh sleutels

Als je dit keer het create commando opnieuw uitvoert, zal het mislukken omdat de S3 door het vorige commando met cluster configuratie werd bijgewerkt, ook al mislukte het door de afwezigheid van de ssh sleutel.

kops create cluster –name kops.devopslee.com –state s3://kops.devopslee.com –cloud aws –master-size t2.medium –master-count 1 –master-zones us-east-1a –node-size t2.micro –node-count 1 –zones us-east-1a,us-east-1b,us-east-1c –ssh-public-key ~/.ssh/id_rsa.pub

Laten we dus de cluster configuratie verwijderen en het cluster opnieuw aanmaken met ssh sleutel.

kops delete cluster –name kops.devopslee.com –state s3://kops.devopslee.com –yes

Recreatie mislukt, verwijder de cluster configuratie

Deze keer geven we de ssh publieke sleutel door tijdens het aanmaken van het cluster.

kops create cluster –name kops.devopslee.com –state s3://kops.devopslee.com –cloud aws –master-size t2.medium –master-count 1 –master-zones us-east-1a –node-size t2.micro –node-count 1 –zones us-east-1a,us-east-1b,us-east-1c –ssh-public-key ~/.ssh/id_rsa.pub

Maak een cluster configuratie met een private sleutel

Eerst wordt de cluster configuratie aangemaakt.

Cluster creaties details

Nu hebben we de cluster configuratie. Als we nog veranderingen in de configuratie willen aanbrengen kunnen we dat doen, anders kunnen we verder met het aanmaken van het cluster. Je kunt naar de S3 emmer gaan en daarin een cluster configuratie zien.

Configuratie bijgewerkt in de S3 Bucket

Ditmaal krijg je te zien dat het cluster beschikbaar is.

kops get cluster

Maar de middelen zijn nog niet aangemaakt.

Om de middelen meteen aan te maken, moeten we het cluster updaten met –yes als optie bij het commando.

kops update cluster –name kops.devopslee.com –yes

Werk het cluster bij om cloud hulpbronnen te maken

Het aanmaken van de cluster zal enige tijd duren. Je kunt de toestand van het cluster valideren met het volgende “validate” commando.

kops validate cluster –wait 10m

Valideer het cluster, het kan 10 min duren voor het actief wordt

Zodra alle cluster resources zijn aangemaakt, is het cluster klaar voor gebruik.

Cluster in Gereed toestand

Zodra de EC2 instances klaar zijn, werkt kops de Hosted zone bij met A records die IP’s van de master bevatten.

Records worden bijgewerkt met het IP van het hoofdknooppunt

Je bent nu klaar om het cluster te gebruiken. Om bestaande pods in de standaard namespace te controleren voer je het volgende commando uit.

kubectl get pods

Je kunt zelfs pods uit alle namespaces controleren

kubectl get pods -A

Controleer knooppunten in het cluster.

kubectl get nodes

Om meer details van de nodes op te halen, gebruik je -o wide in het commando.

kubectl get nodes -o wide

Controleer de systeempods in het cluster

Verwijder het cluster

Als je het cluster niet meer nodig hebt, kun je het eenvoudig verwijderen met Kops.

kops get cluster

Je hoeft maar een enkel commando uit te voeren.

kops delete cluster –name kops.devopslee.com –state s3://kops.devopslee.com –yes

Verwijder het cluster

Kops zal alle bronnen verwijderen die het voor het cluster heeft aangemaakt om het volledig functioneel te maken

Cluster verwijderen gelukt

Conclusie

In dit artikel zagen we alle stappen om een Kubernetes cluster te maken met Kops. We zagen dat Kops een domein nodig heeft om een volledig functioneel cluster te maken. We zagen hoe eenvoudig het is om een cluster te maken en te verwijderen met Kops.