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