So richten Sie einen Kubernetes-Cluster auf AWS mit Kops ein
Kops wird verwendet, um den Kubernetes-Cluster auf einfachste Art und Weise aufzusetzen. Es ist ein Kommandozeilen-Tool, das zum Erstellen von Kubernetes-Clustern verwendet wird. Kops unterstützt offiziell AWS, wobei GCP, DigitalOcean und OpenStack in der Beta-Phase sind. Kops kann auch Terraform-Dateien für die benötigte Clusterkonfiguration generieren. Man kann mit Kops nicht nur einfach einen Cluster erstellen, sondern auch die Kubernetes-Version im Cluster ändern, löschen und aktualisieren.
In diesem Artikel sehen wir uns die Schritte zum Erstellen eines Kubernetes-Clusters mit einem Master- und einem Worker-Knoten auf AWS an. Bevor wir fortfahren, wird vorausgesetzt, dass Sie bereits mit Kubernetes vertraut sind
Vorraussetzungen
- AWS-Konto(Erstellen Sie es, falls Sie noch keines haben).
- EC2 Ubuntu 18.04-Instanz (Klicken Sie hier, um zu erfahren, wie Sie eine EC2-Instanz auf AWS erstellen).
- S3 Bucket (Klicken Sie hier, um zu erfahren, wie Sie ein S3 Bucket auf AWS erstellen).
- Domain-Name (Suchen Sie nach „How to buy a Domain Name on AWS?“, um die Schritte zum Erstellen einer Domain auf AWS zu verstehen).
- IAM-Rolle mit ausreichenden/Admin-Berechtigungen (Klicken Sie hier, um zu erfahren, wie Sie eine IAM-Rolle auf AWS erstellen).
Was müssen wir tun?
- Melden Sie sich bei AWS an.
- Überprüfen Sie den S3 Bucket, IAM Role.
- Hängen Sie die IAM-Rolle an die Instanz an.
- Installieren Sie Kubectl und Kops auf der EC2-Instanz.
- Validieren Sie Recordset-Regeln und eine gehostete Zone.
- Erstellen Sie einen Kubernetes-Cluster mit Kops.
- Löschen Sie den Cluster.
Anmeldung bei AWS
Klicken Sie hier, um zur Anmeldeseite zu gelangen, auf der Sie Ihre Anmeldedaten eingeben können, um sich in das Konto einzuloggen.
Sobald Sie sich erfolgreich bei Ihrem AWS-Konto angemeldet haben, sehen Sie die AWS Management Console wie folgt.
Überprüfen Sie das S3-Bucket, die IAM-Rolle
Um einen Cluster mit Kops zu erstellen, benötigen wir ein S3-Bucket, in dem Kops die gesamte Clusterkonfiguration speichern wird.
Überprüfen Sie den Bucket, der für die Speicherung der Kops-Konfigurationen verwendet werden soll.
Überprüfen Sie, ob die IAM-Rolle, die Sie verwenden möchten, über ausreichende/admin-Berechtigungen verfügt. Kops benötigt keine Admin-Berechtigungen, wenn Sie sich mit AWS IAM und Berechtigungen nicht auskennen und keine Zugriffsprobleme haben wollen, können Sie die Admin-Berechtigung verwenden.
Hängen Sie die IAM-Rolle an die Instanz an
Sobald Sie die Rolle haben, hängen Sie sie an die EC2-Instanz an, die Sie zum Ausführen der kops-Befehle verwenden werden. Gehen Sie zu EC2 –> wählen Sie die EC2-Instanz aus –> klicken Sie auf Actions –> Security — > Modify IAM role.
Wählen Sie die IAM-Rolle aus und speichern Sie die Änderungen.
Installieren Sie Kubectl und Kops auf der EC2-Instanz
Bis zu diesem Punkt haben Sie einen S3-Bucket und eine EC2-Instanz mit der erforderlichen Rolle. Loggen Sie sich nun in die EC2-Instanz ein, die Sie zum Erstellen eines Clusters mit Kops verwenden werden.
Der nächste Schritt ist die Installation von Kubectl auf der EC2-Instanz.
Führen Sie die folgenden Befehle aus, um kubectl auf dem Ubuntu-Server zu installieren
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
Prüfen Sie die kubectl-Version mit dem folgenden Befehl.
kubectl version –client
Jetzt können Sie Kops auf der gleichen EC2-Instanz installieren.
Prüfen Sie, ob kops existiert, wenn nicht, installieren Sie es mit den folgenden Befehlen auf dem 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
Jetzt sollten Sie kops auf dem Server haben.
kops
Validieren Sie Recordset-Regeln und eine gehostete Zone.
Kops benötigt die erforderlichen DNS-Records, um einen Cluster zu erstellen.
Hier habe ich eine zweite gehostete Zone in route53.
Außerdem habe ich die NS-Server meiner SUBDOMAIN auf die PARENT-Domain in Route53 kopiert.
Gehen Sie zu Route53 — > Gehostete Zonen — > Gehen Sie zur Hauptstandard-Hosted-Zone — > Suchen Sie nach dem Recordset und überprüfen Sie dessen Werte.
Erstellen eines Kubernetes-Clusters mit Kops
Jetzt sind wir bereit, einen Cluster zu erstellen. Bevor wir einen Cluster erstellen, wollen wir sehen, was wir erhalten, wenn wir versuchen, die Cluster aufzulisten.
kops get clusters
Der obige Befehl wird fehlschlagen, da er einen S3-Bucket als Parameter benötigt.
kops get clusters –state s3://kops.devopslee.com
Da es keine vorhandenen Cluster gibt, listet der Befehl nichts auf.
Wenn Sie den Namen des S3-Buckets nicht als Parameter an den Befehl übergeben möchten, können Sie seinen Wert im Terminal in die Variable „KOPS_STATE_STORE“ exportieren.
export KOPS_STATE_STORE=s3://kops.devopslee.com
Dieses Mal müssen Sie den S3-Bucket nicht im Befehl angeben
kops get clusters
Versuchen wir nun, einen Cluster zu erstellen mit
- 1 Master-Knoten mit der Instanz des Typs t2.medium
- 1 Worker-Knoten mit der Instanz des Typs t2.micro
- Verfügbarkeitszone 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
Der obige Befehl gibt Fehler aus, da wir keinen ssh-Schlüssel angegeben haben.
Prüfen Sie, ob Sie ein Schlüsselpaar in Ihrer Instanz haben.
ls -l ~/.ssh/
Wenn Sie kein Schlüsselpaar haben, können Sie es mit dem folgenden Befehl erstellen.
ssh-keygen
Wenn Sie dieses Mal den create-Befehl erneut ausführen, wird er fehlschlagen, da die S3 durch den vorherigen Befehl mit der Cluster-Konfiguration aktualisiert wurde, auch wenn er aufgrund des fehlenden ssh-Schlüssels fehlgeschlagen ist.
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
Löschen wir also die Clusterkonfiguration und erstellen den Cluster mit ssh-Schlüssel neu.
kops delete cluster –name kops.devopslee.com –state s3://kops.devopslee.com –yes
Diesmal übergeben wir den öffentlichen ssh-Schlüssel beim Erstellen des Clusters.
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
Zunächst wird die Clusterkonfiguration erstellt.
Jetzt haben wir die Clusterkonfiguration. Wenn wir Änderungen an der Konfiguration vornehmen möchten, können wir das tun, ansonsten können wir mit der Erstellung des Clusters fortfahren. Sie können zum S3-Bucket gehen und darin eine Clusterkonfiguration sehen.
Diesmal wird Ihnen angezeigt, dass der Cluster verfügbar ist.
kops get cluster
Aber die Ressourcen sind noch nicht erstellt.
Um die Ressourcen sofort zu erstellen, müssen wir den Cluster mit –yes als Option für den Befehl aktualisieren.
kops update cluster –name kops.devopslee.com –yes
Die Erstellung des Clusters wird einige Zeit in Anspruch nehmen. Sie können den Zustand des Clusters mit dem folgenden „validate“-Befehl überprüfen.
kops validate cluster –wait 10m
Sobald alle Cluster-Ressourcen erstellt sind, ist der Cluster einsatzbereit.
Sobald die EC2-Instanzen bereit sind, aktualisiert kops die Hosted-Zone mit A-Einträgen, die IPs des Masters enthalten.
Sie sind nun bereit, den Cluster zu verwenden. Um vorhandene Pods im Standard-Namensraum zu überprüfen, führen Sie den folgenden Befehl aus.
kubectl get pods
Sie können auch Pods aus allen Namespaces überprüfen
kubectl get pods -A
Prüfen Sie Knoten im Cluster.
kubectl get nodes
Um weitere Details zu den Knoten zu holen, verwenden Sie -o wide im Befehl.
kubectl get nodes -o wide
Löschen des Clusters
Wenn Sie den Cluster nicht mehr benötigen, können Sie ihn einfach mit Kops löschen.
kops get cluster
Sie müssen nur einen einzigen Befehl ausführen.
kops delete cluster –name kops.devopslee.com –state s3://kops.devopslee.com –yes
Kops löscht alle Ressourcen, die es für den Cluster erstellt hat, damit dieser voll funktionsfähig ist
Fazit
In diesem Artikel haben wir alle Schritte zum Erstellen eines Kubernetes-Clusters mit Kops gesehen. Wir haben gesehen, dass Kops eine Domain benötigt, um einen voll funktionsfähigen Cluster zu erstellen. Wir haben gesehen, wie einfach es ist, einen Cluster mit Kops zu erstellen und zu löschen.