So erstellen Sie einen Kubernetes-Cluster mit Kops

In diesem Artikel verwenden wir kops, um einen Kubernetes-Cluster in Produktionsqualität auf Amazon Web Services zu installieren. Für diese Anleitung gehen wir davon aus, dass Sie über ein AWS-Konto verfügen. Außerdem müssen Sie kubectl installiert haben, wahrscheinlich haben Sie es bereits, wenn Sie einen unserer vorherigen Kubernetes-Artikel gelesen haben. Wenn nicht, werden wir hier den Installationsschritt zusammen mit anderen Abhängigkeiten wie awscli bereitstellen.

kubectl-, kops- und awscli-Binärdateien installieren

Beginnen wir das Spiel, indem wir das kubectl . holen

curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl 

sudo mv kubectl /usr/local/bin/

Als nächstes bekommen wir kops binär

wget https://github.com/kubernetes/kops/releases/download/1.7.0/kops-linux-amd64

chmod +x kops-linux-amd64

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

Als nächstes müssen wir pip verwenden, den Paketmanager von Python, um awscli zu installieren. Python muss natürlich installiert sein.

sudo pip install awscli

AWScli . konfigurieren

Sie benötigen Zugriffsschlüssel Ihres AWS-Kontos, um awscli verwenden zu können. Sie können nachlesen, wie es geht Root-AWS-Zugriffsschlüssel erstellen Dokumentation.

Sobald Sie dies getan haben, können wir zum Konfigurationsteil übergehen

aws configure

Dann bearbeiten Sie die Eingabeaufforderung wie folgt

AWS Access Key ID [None]: youraccesskeyID
AWS Secret Access Key [None]: yourSecretAccessKey

Default region name [None]: us-west-2
Default output format [None]:

Wir werden diese Schlüssel später auch brauchen, also müssen Sie sie in env-Variablen ausgeben.

export AWS_ACCESS_KEY_ID=youraccesskeyID
export AWS_SECRET_ACCESS_KEY=yourSecretAccessKey

Sie können diese Zeilen auch zu ~/.bashrc hinzufügen und den Befehl source ~/.bashrc ausführen, damit er über Neustarts hinweg erhalten bleibt. Beachten Sie jedoch, dass jeder, der Ihren Computer verwendet, diese Schlüssel erhalten kann.

Als nächstes erstellen wir Gruppen- und Benutzer-Kops und erteilen ihm die erforderlichen Berechtigungen, damit Kops ohne Schluckauf arbeiten kann.

aws iam create-group --group-name kops

aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess --group-name kops

aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonRoute53FullAccess --group-name kops

aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess --group-name kops

aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/IAMFullAccess --group-name kops

aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonVPCFullAccess --group-name kops

aws iam create-user --user-name kops

aws iam add-user-to-group --user-name kops --group-name kops

Und endlich erstellen wir einen Zugangsschlüssel für den kops-Benutzer

aws iam create-access-key --user-name kops

Sie können IAM-Benutzer jederzeit mit dem folgenden Befehl überprüfen

aws iam list-users

Cluster erstellen

Zum Erstellen von Clustern müssen wir weitere Umgebungsvariablen hinzufügen. NAME ist der Name des Clusters, da wir keine DNS-Einstellungen vornehmen, verwenden wir klatschbasiertes DNS und für diesen Clusternamen muss der Name mit k8s.local enden und davor können Sie fast alles eingeben.

export NAME=cluster.k8s.local

Als nächstes müssen wir einen AWS-Bucket für den Cluster erstellen und eine Variable erstellen, die kops für den Zustandsspeicher verwendet.

aws s3api create-bucket --bucket ${NAME}-state

export KOPS_STATE_STORE=s3://cluster.k8s.local-state

Als nächstes werden wir tatsächlich einen Cluster erstellen. Wir werden t2.micro-Instanzen verwenden, da sie für das kostenlose Kontingent qualifiziert sind. Andernfalls kostet AWS etwas Geld.

kops create cluster 
 --name=${NAME} 
 --zones=us-west-2a 
 --master-size="t2.micro" 
 --node-size="t2.micro" 
 --node-count="3" 
 --ssh-public-key="~/.ssh/id_rsa.pub"

Danach erhalten Sie Konfigurationsdateien für den neuen Cluster.

Sie können es mit diesem Befehl bearbeiten. Es wird Ihren Standardeditor verwenden, den Sie ändern können, indem Sie die Variable $EDITOR ändern.

kops edit cluster ${NAME}

Nachdem Sie die yaml-Datei überprüft haben, können Sie sich mit diesem Befehl zum Erstellen des Clusters verpflichten:

kops update cluster ${NAME} --yes

Danach müssen Sie etwas warten

Der folgende Befehl kann Ihnen anzeigen, wann der Cluster bereit ist.

kops validate cluster

Sie müssen dies wahrscheinlich einige Male tun, bis die Knoten initialisiert sind. So sieht mein Cluster aus, wenn er fertig ist.

Einige Apps bereitstellen

Für den Anfang können wir das Dashboard installieren.

kubectl create -f https://git.io/kube-dashboard

Wir können das Dashboard mit dem folgenden Befehl verwenden:

kubectl proxy

Als nächstes werden wir die gute alte Sock Shop Microservices-Demo installieren.

kubectl apply -n sock-shop -f "https://github.com/microservices-demo/microservices-demo/blob/master/deploy/kubernetes/complete-demo.yaml?raw=true"

kubectl -n sock-shop get svc front-end

Sie erhalten so etwas ähnliches

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
 front-end 100.66.88.111 <nodes> 80:30001/TCP 35m

Gesucht wird in diesem Fall Port 30001. Wir müssen diesen Port mit der IP des Masterservers abgleichen. Es ist erforderlich, um eingehenden Datenverkehr zu diesem Port in AWS-Sicherheitsgruppen zuzulassen.

Als nächstes, wenn wir die URL aus IP und Port bilden, sollten wir die Sock-Shop-Site erhalten.

Wenn Sie mit der Verwendung des Clusters fertig sind, können Sie das Löschen mit diesem Befehl in der Vorschau anzeigen:

kops delete cluster --name ${NAME}

Und lösche es tatsächlich mit diesem:

kops delete cluster --name ${NAME} --yes

Ich werde es noch nicht löschen, da wir im nächsten Artikel kube-prompt für diesen Cluster verwenden werden. Damit beenden wir diesen Artikel nach erfolgreicher Erstellung eines Kubernetes-Clusters in Produktionsqualität mit Kops. Kops steht für Kubernetes Operations und macht den Betrieb sicher, solange Sie auf AWS bereitstellen. Wenn du Google brauchst Cloud Engine, Bare Metal oder privates OpenStack Cloud, dann ist Kubespray auf Ansible-Basis genau das Richtige für Sie und wir werden es in einigen der nächsten Artikel vorstellen.

Lesen Sie auch:

  • Kostenloses E-Book Kubernetes Essentials – Ein Tutorial für Anfänger