Kubernetes kOps
Die Cloud und Kubernetes – das gehört doch zusammen, oder? Mehr oder weniger … Obwohl containerisierte Anwendungen bei Cloud-Anbietern schnell ein Zuhause finden, ist es aus unerfindlichen Gründen nicht so einfach, eine Kubernetes-Umgebung in der Cloud einzurichten. Es sei denn, man verwendet kOps, das Tool, das genau für diesen Zweck geschrieben wurde. So funktioniert es.
Einleitung
Kubernetes ist eine Open-Source-Container-Orchestrierungsplattform, die die Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen automatisiert. Sie bietet ein Framework für die Erstellung und Bereitstellung von Cloud-Native-Anwendungen und ist damit ideal für Unternehmen, die ihre Anwendungsinfrastruktur modernisieren möchten.
Amazon Web Services (AWS) ist einer der führenden Cloudanbieter und stellt eine Reihe von Services bereit, die in Kombination mit Kubernetes genutzt werden können. Dieser Artikel beschreibt, wie man mit Kubernetes auf AWS loslegt, einschließlich der Schritte zum Einrichten eines Kubernetes-Clusters und zum Bereitstellen von Anwendungen.
Voraussetzungen
Bevor wir uns mit der Einrichtung von Kubernetes auf AWS beschäftigen, gibt es einige Voraussetzungen zu beachten:
1. Vertrautheit mit AWS: In diesem Leitfaden wird davon ausgegangen, dass User ein grundlegendes Verständnis von AWS-Diensten wie EC2, S3 und VPCs haben.
2. Vertrautheit mit Kubernetes: Dieser Artikel behandelt zwar die Grundlagen der Einrichtung eines Kubernetes-Clusters auf AWS, es wird jedoch empfohlen, dass User bereits über einige Erfahrung mit Kubernetes verfügen.
3. Zugang zu einem AWS-Konto: Um diesem Leitfaden folgen zu können, benötigen User Zugang zu einem AWS-Konto.
Wie stellt kOps die Infrastruktur bereit?
kOps stellt die Infrastruktur mit einer Kombination aus APIs von Cloudanbietern und Terraform-Modulen bereit. Bei der Bereitstelunug eines Kubernetes-Cluster mit kOps muss die Infrastruktur, auf der der Cluster läuft, zuerst bereitgestellt werden. Wie genau stellt kOps die Infrastruktur bereit?
kOps nutzt APIs, die Cloudanbieter wie AWS, GCP und Azure bereitstellen, um die erforderlichen Infrastrukturkomponenten wie VPCs, Subnets, Sicherheitsgruppen und Load Balancers zu erstellen. kOps stellt auch Terraform-Module bereit, die für das Deployment der Infrastrukturkomponenten, die für den Betrieb eines Kubernetes-Clusters erforderlich sind, verwendet werden können. Sobald die Infrastrukturkomponenten bereitgestellt sind, ermöglicht kOps die weitere Anpassung des Kubernetes-Clusters durch die Bereitstellung einer Reihe von Konfigurationsoptionen. Mit diesen Optionen ist es möglich, die Kubernetes Master und Worker Nodes sowie alle anderen Ressourcen, die für den Betrieb des Clusters erforderlich sind, zu konfigurieren. Nachdem die Infrastrukturkomponenten und Kubernetes-Konfigurationsoptionen ausgewählt wurden, stellt kOps den Kubernetes Cluster bereit. Dazu gehören die Einrichtung der Kubernetes Master und Worker Nodes, die Installation aller erforderlichen Softwarepakete und Tools sowie die Konfiguration von dem Kubernetes API Server, etcd und anderen Komponenten. kOps validiert den Kubernetes Cluster, indem es eine Reihe von Tests durchführt, um sicherzustellen, dass der Cluster wie erwartet funktioniert.
Einrichten eines Kubernetes Cluster auf AWS
Kubernetes hat sich zu einer beliebten Lösung für die Containerorchestrierung entwickelt und bietet eine skalierbare und zuverlässige Plattform für die Verwaltung von containerisierten Anwendungen. Die Bereitstellung eines Kubernetes Cluster auf AWS kann eine komplexe Aufgabe sein, aber es gibt mehrere Tools, die diesen Prozess vereinfachen.
Eines davon ist eksctl, ein einfaches CLI Tool, das speziell für das Bootstrapping und die Verwaltung von Clustern auf EKS, Amazons verwaltetem Kubernetes-Service für EC2, gedacht ist. Mit EKS übernimmt Amazon die Verantwortung für die Verwaltung der Kubernetes Master Nodes (gegen eine zusätzliche Gebühr).
In diesem Artikel konzentrieren wir uns jedoch auf kOps, ein Open-Source Tool, das die Erstellung, Verwaltung und Skalierung von Kubernetes Clusters auf AWS automatisiert. kOps hilft Usern nicht nur beim Erstellen, Vernichten, Aktualisieren und Warten von produktionsreifen, hochverfügbaren Kubernetes Clusters, sondern auch bei der Bereitstellung der erforderlichen Cloud-Infrastruktur.
Bevor wir mit kOps beginnen, gibt es ein paar Voraussetzungen:
0. AWS-Konto mit eigener Domain erstellen
1. kops installieren
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
2. Sicherstellen, dass kubectl
auf dem Rechner installiert ist
3. S3 Bucket erstellen: kOps benötigt ein S3 Bucket, um Cluster-Statusinformationen zu speichern. Nach dem Erstellen des S3 Bucket im AWS-Konto sollte man sich den Bucket-Namen notieren.
4. IAM User erstellen: kOps benötigt einen IAM User mit den entsprechenden Berechtigungen zum Erstellen und Verwalten von Ressourcen im AWS-Konto. Nach dem Erstellen des IAM User mit den erforderlichen Berechtigungen sollte man sich auch hier den Zugriffsschlüssel und den geheimen Schlüssel notieren.
kops IAM User benötigen die folgenden Rechte:
AmazonEC2FullAccess
AmazonRoute53FullAccess
AmazonS3FullAccess
IAMFullAccess
AmazonVPCFullAccess
AmazonSQSFullAccess
AmazonEventBridgeFullAccess
5. Mit der Erstellung des Kubernetes Cluster fortfahren
a) Deklarativer Ansatz: Mit kOps lässt sich eine Clusterkonfigurationsdatei erstellen, in der die gewünschten Merkmale des Clusters angegeben sind, z.B. die Anzahl der Nodes, der Instance-Typ und die AWS-Region. Hier ein Beispiel für eine Konfigurationsdatei:
Diese Kofigurationsdatei speichert man als example-cluster.yaml.
Um den Cluster zu erstellen, führt man mit kOps den folgenden Befehl aus:
kops create -f example-cluster.yaml
Dadurch werden die erforderlichen Ressourcen im AWS-Konto erstellt, z. B. EC2-Instanzen und ein Elastic Load Balancer.
Um den Cluster zu validieren, führt man mit kOps den folgenden Befehl aus:
kops validate cluster atix.example.com
… und wartet zehn Minuten. Dadurch wird sichergestellt, dass der Cluster läuft und dass alle Nodes miteinander kommunizieren.
b) Imperativer Ansatz: Verwendung des Befehls kOps imperative, wenn man auf die Konfigurationsdatei verzichten will.
-
Cluster in einer einzigen AWS-Verfügbarkeitszone:
kops create cluster --name=k8s-cluster.example.com \
--state=s3://my-state-store \
--zones=eu-central-1a,eu-central-1b \
--node-count=2
-
Cluster mit hochverfügbaren Mastern mit privatem Netzwerk und Bastion Host:
export KOPS_STATE_STORE="s3://atix-kops-test"
export MASTER_SIZE="t3.medium"
export NODE_SIZE="t3.small"
export ZONES="eu-central-1a"
kops create cluster kops-test.atix-training.de \
--node-count 3 \
--zones $ZONES \
--node-size $NODE_SIZE \
--master-size $MASTER_SIZE \
--master-zones $ZONES \
--networking cilium \
--topology private \
--bastion="true" \
--yes
Dieser Befehl erstellt einen Kubernetes-Cluster mit zwei Nodes in den Verfügbarkeitszonen eu-central-1a und eu-central-1b. Die Nodes sind m5.large-Instanzen und der Master ist c5.large.
Um zu überprüfen, ob die Konfigurationsdatei korrekt ist, können wir sie ausführen:
kops edit cluster --name=kubernetes.example.com --state=s3://your-s3-bucket
Dieser Befehl aktualisiert die im S3 Bucket gespeicherte Konfiguration und erstellt anschließend den Kubernetes Cluster. Mit der Option –yes bestätigt man, dass man mit dem Vorgang fortfahren möchten.
Um unsere erstellte Konfiguration anzuwenden, können wir Folgendes ausführen:
kops update cluster --name kops-test.atix-training.de --yes --admin --state=s3://atix-kops-test
So validieren wir den Cluster:
kops validate cluster --wait 10m --state=s3://atix-kops-test
Man sollte beachten, dass es bis zu zehn Minuten dauern kann, bis kOps alles bereitgestellt und konfiguriert hat, was für den ordnungsgemäßen Betrieb des Clusters erforderlich ist.
Zuerst wird der Master Node konfiguriert und gleich danach die Worker Nodes.
6. Viel Spaß mit dem Cluster!
Fazit
Die Entscheidung zwischen kOps und anderen Cluster-Management-Lösungen hängt von den Anforderungen, Präferenzen und dem Fachwissen ab. kOps ist aufgrund seiner Einfachheit und Robustheit beliebt, insbesondere bei der Verwaltung von Clustern auf AWS. Es bietet fein abgestufte Kontroll- und Anpassungsoptionen, mit denen User verschiedene Aspekte des Clusters konfigurieren können.
Es gibt alternative Cluster-Management-Lösungen, die zusätzliche Funktionen und Nutzungsfreundlichkeit bieten. Tools wie kOps eignen sich oft besser für erfahrenere Kubernetes Administrators und Teams, die eine umfassende Kontrolle und Anpassung benötigen.
Darüber hinaus gibt es weitere Open-Source-Lösungen für die Clusterverwaltung, wie Rancher, Kubeadm usw. Diese Tools bieten unterschiedliche Automatisierungs- und Flexibilitätsgrade und eignen sich für verschiedene Anwendungsfälle und Anforderungen.
Letztendlich können wir also sagen, dass die Wahl zwischen kOps und anderen Cluster-Management-Lösungen von Faktoren wie dem gewünschten Grad der Kontrolle, dem Fachwissen, den Infrastrukturpräferenzen und den verfügbaren Ressourcen abhängt. Alternative Lösungen wie verwaltete Kubernetes Services oder andere Open-Source Tools sind jedoch möglicherweise besser geeignet für User, die eine vereinfachte Bereitstellung, eine automatisierte Verwaltung oder eine nutzungsfreundlichere Erfahrung suchen.
Verweise
https://github.com/kubernetes/kops
https://eksctl.io/
https://kubernetes.io/
https://docs.aws.amazon.com/
https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html
Amir Zahirovic
Neueste Artikel von Amir Zahirovic (alle ansehen)
- Kubernetes kOps - 13. Juli 2023