Helfen Sie mit, diese Seite zu verbessern
Möchten Sie zu diesem Benutzerhandbuch beitragen? Scrollen Sie zum Ende dieser Seite und wählen Sie Diese Seite bearbeiten am aus GitHub. Ihre Beiträge werden dazu beitragen, unser Benutzerhandbuch für alle zu verbessern.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Bereitstellen einer Beispielanwendung
In diesem Thema stellen Sie eine Beispielanwendung in Ihrem Cluster bereit.
Voraussetzungen
-
Ein vorhandener Kubernetes-Cluster mit mindestens einem Knoten. Wenn Sie noch keinen Amazon-EKS-Cluster haben, können Sie einen mit einem der Erste Schritte mit Amazon EKS-Leitfäden bereitstellen. Wenn Sie eine Windows-Anwendung bereitstellen, müssen Sie Windows-Support für Ihren Cluster und mindestens einen Amazon-EC2-Windows-Knoten aktiviert haben.
-
Kubectl
auf Ihrem Computer installiert. Weitere Informationen finden Sie unter Installieren oder Aktualisieren von kubectl. -
Kubectl
für die Kommunikation mit Ihrem Cluster konfiguriert. Weitere Informationen finden Sie unter Erstellen oder Aktualisieren einer kubeconfig-Datei für einen Amazon-EKS-Cluster. -
Wenn Sie vorhaben, Ihre Beispiel-Workload in Fargate bereitzustellen, müssen Sie über ein vorhandenes Fargate-Profil verfügen, das denselben in diesem Tutorial erstellten Namespace enthält, nämlich
eks-sample-app
, es sei denn, Sie ändern den Namen. Wenn Sie einen der Erste-Schritte-Leitfäden benutzt haben, um Ihren Cluster zu erstellen, müssen Sie ein neues Profil erstellen oder den Namespace zu Ihrem vorhandenen Profil hinzufügen, da das in den Erste-Schritte-Leitfäden erstellte Profil den in diesem Tutorial verwendeten Namespace nicht angibt. Ihre VPC muss auch über mindestens ein privates Subnetz verfügen.
Bereitstellen einer Beispielanwendung
Obwohl viele Variablen in den folgenden Schritten veränderbar sind, empfehlen wir, Variablenwerte nur zu ändern, wo angegeben. Sobald Sie Kubernetes-Pods, Bereitstellungen und Services besser verstanden haben, können Sie mit dem Ändern anderer Werte experimentieren.
-
Erstellen Sie einen -Namespace. Ein Namespace ermöglicht es Ihnen, Ressourcen in Kubernetes zu gruppieren. Weitere Informationen finden Sie unter Namespaces
in der Kubernetes-Dokumentation. Wenn Sie die Beispielanwendung für AWS Fargate bereitstellen möchten, stellen Sie sicher, dass der Wert für namespace
in Ihrem AWS Fargate Profileks-sample-app
ist.kubectl create namespace eks-sample-app
-
Erstellen einer Kubernetes-Bereitstellung. Diese Beispielbereitstellung ruft ein Container-Image aus einem öffentlichen Repository ab und stellt drei Replikate (individuelle Pods) davon in Ihrem Cluster bereit. Weitere Informationen finden Sie unter Bereitstellungen
in der Kubernetes-Dokumentation. Sie können die Anwendung an Linux- oder Windows-Knoten bereitstellen. Wenn Sie an Fargate bereitstellen, können Sie nur eine Linux-Anwendung bereitstellen. -
Speichern Sie die folgenden Inhalte in einer Datei namens
eks-sample-deployment.yaml
. Die Container in der Beispielanwendung verwenden keinen Netzwerkspeicher, aber möglicherweise haben Sie Anwendungen, die dies benötigen. Weitere Informationen finden Sie unter Speicher. -
Wenden Sie das Bereitstellungs-Manifest auf Ihren Cluster an.
kubectl apply -f eks-sample-deployment.yaml
-
-
Erstellen Sie einen Service. Mit einem Service können Sie über eine einzige IP-Adresse oder einen einzigen Namen auf alle Replikate zugreifen. Weitere Informationen finden Sie unter Service
in der Kubernetes-Dokumentation. Obwohl nicht in der Beispielanwendung implementiert, empfehlen wir Ihnen, für Anwendungen, die mit anderen AWS Diensten interagieren müssen, Kubernetes Dienstkonten für Ihre Pods Dienste zu erstellen und diese mit AWS IAM-Konten zu verknüpfen. Durch die Angabe von Servicekonten verfügen Ihre Pods nur über die Mindestberechtigungen, die Sie für die Interaktion mit anderen Services angeben. Weitere Informationen finden Sie unter IAM-Rollen für Servicekonten. -
Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen
eks-sample-service.yaml
aus. Kubernetes weist dem Dienst eine eigene IP-Adresse zu, auf die nur innerhalb des Clusters zugegriffen werden kann. Um von außerhalb des Clusters auf den Service zuzugreifen, stellen Sie den AWS Load Balancer Controller als Load Balancer für den Anwendungs- oder den Netzwerk-Datenverkehr bereit. -
Wenden Sie das Service-Manifest auf Ihren Cluster an.
kubectl apply -f eks-sample-service.yaml
-
-
Zeigen Sie alle im
eks-sample-app
-Namespace vorhandenen Ressourcen an.kubectl get all -n eks-sample-app
Eine Beispielausgabe sieht wie folgt aus.
Wenn Sie Windows-Ressourcen bereitgestellt haben, sind alle Instances von
in der folgenden Ausgabelinux
windows
. Die anderenBeispielwerte
können von Ihrer Ausgabe abweichen.NAME READY STATUS RESTARTS AGE pod/eks-sample-
linux
-deployment-65b7669776-m6qxz
1/1 Running 0 27m pod/eks-sample-linux
-deployment-65b7669776-mmxvd
1/1 Running 0 27m pod/eks-sample-linux
-deployment-65b7669776-qzn22
1/1 Running 0 27m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/eks-sample-linux
-service ClusterIP10.100.74.8
<none> 80/TCP 32m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/eks-sample-linux
-deployment 3/3 3 3 27m NAME DESIRED CURRENT READY AGE replicaset.apps/eks-sample-linux
-deployment-776d8f8fd8
3 3 3 27mIn der Ausgabe sehen Sie den Service und die Bereitstellung, die in den Beispielmanifesten, der vorherigen Schritte, angegeben wurden. Sie sehen auch drei Pods. Dies liegt daran, dass
3
replicas
im Beispielmanifest angegeben wurden. Weitere Informationen zu Pods finden Sie unter Podsin der Kubernetes-Dokumentation. Kubernetes erstellt automatisch die replicaset
-Ressource, obwohl sie in den Beispielmanifesten nicht angegeben ist. Weitere Informationen zuReplicaSets
finden Sie ReplicaSetin der Kubernetes Dokumentation. Anmerkung
Kubernetes behält die Anzahl der Replikate bei, die im Manifest angegeben sind. Wenn es sich um eine Produktionsbereitstellung handelt und Sie möchten, dass Kubernetes die Anzahl der Replikate horizontal skaliert oder die Rechenressourcen für die Pods vertikal skaliert, verwenden Sie dazu das Horizontal Pod Autoscaler und das Vertical Pod Autoscaler.
-
Zeigen Sie die Details des bereitgestellten Services an. Wenn Sie einen Windows-Service bereitgestellt haben, ersetzen Sie
mitlinux
windows
.kubectl -n eks-sample-app describe service eks-sample-
linux
-serviceEine Beispielausgabe sieht wie folgt aus.
Wenn Sie Windows-Ressourcen bereitgestellt haben, sind alle Instances von
in der folgenden Ausgabelinux
windows
. Die anderenBeispielwerte
können von Ihrer Ausgabe abweichen.Name: eks-sample-
linux
-service Namespace: eks-sample-app Labels: app=eks-sample-linux
-app Annotations: <none> Selector: app=eks-sample-linux
-app Type: ClusterIP IP Families: <none> IP:10.100.74.8
IPs:10.100.74.8
Port: <unset> 80/TCP TargetPort: 80/TCP Endpoints:192.168.24.212
:80,192.168.50.185
:80,192.168.63.93
:80 Session Affinity: None Events: <none>In der vorherigen Ausgabe ist der Wert für
IP:
eine eindeutige IP-Adresse, die von jedem Knoten oder Pod innerhalb des Clusters aus erreicht werden kann, jedoch nicht von außerhalb des Clusters. Die Werte fürEndpoints
sind IP-Adressen, die innerhalb Ihrer VPC den Pods zugewiesen werden, die Teil des Services sind. -
Zeigen Sie die Details eines der in der Ausgabe aufgeführten Pods an, wenn Sie in einem vorherigen Schritt den Namespace angezeigt haben. Wenn Sie eine Windows-App bereitgestellt haben, ersetzen Sie
mitlinux
windows
und
mit dem Wert, der für einen Ihrer Pods zurückgegeben wird.776d8f8fd8-78w66
kubectl -n eks-sample-app describe pod eks-sample-
linux
-deployment-65b7669776-m6qxz
Gekürzte Ausgabe
Wenn Sie Windows-Ressourcen bereitgestellt haben, sind alle Instances von
in der folgenden Ausgabelinux
windows
. Die anderen
können von Ihrer Ausgabe abweichen.example values
Name: eks-sample-
linux
-deployment-65b7669776-m6qxz
Namespace: eks-sample-app Priority: 0 Node: ip-192-168-45-132
.us-west-2
.compute.internal/192.168.45.132
[...] IP:192.168.63.93
IPs: IP:192.168.63.93
Controlled By: ReplicaSet/eks-sample-linux
-deployment-65b7669776
[...] Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 3m20s default-scheduler Successfully assigned eks-sample-app/eks-sample-linux
-deployment-65b7669776-m6qxz
to ip-192-168-45-132
.us-west-2
.compute.internal [...]In der vorherigen Ausgabe ist der Wert für
IP:
eine eindeutige IP-Adresse, die dem Pod aus dem CIDR-Block zugewiesen wird, der dem Subnetz zugewiesen ist, in dem sich der Knoten befindet. Wenn Sie es vorziehen, Pods IP-Adressen aus verschiedenen CIDR-Blöcken zuzuweisen, können Sie das Standardverhalten ändern. Weitere Informationen finden Sie unter Benutzerdefinierte Netzwerke für Pods. Sie können auch sehen, dass der Kubernetes-Scheduler den Pod auf demNode
mit der IP-Adresse
geplant hat.192.168.45.132
Tipp
Anstatt die Befehlszeile zu verwenden, können Sie viele Details zu Pods, Services, Bereitstellungen und anderen Kubernetes-Ressourcen in der AWS Management Console anzeigen. Weitere Informationen finden Sie unter Anzeigen der Kubernetes-Ressourcen.
-
Führen Sie eine Shell auf dem Pod aus, die Sie im vorherigen Schritt beschrieben haben, und ersetzen Sie
mit der ID eines Ihrer Pods.65b7669776-m6qxz
-
Zeigen Sie in der Pod-Shell die Ausgabe des Webservers an, der in einem vorherigen Schritt mit Ihrer Bereitstellung installiert wurde. Sie müssen nur den Servicenamen angeben. Er wird von CoreDNS, das mit einem Amazon-EKS-Cluster bereitgestellt wird, standardmäßig als IP-Adresse des Services aufgelöst.
-
Zeigen Sie in der Pod-Shell den DNS-Server für den Pod an.
-
Trennen Sie die Verbindung mit dem Pod, indem Sie
exit
eingeben. -
Wenn Sie die Beispielanwendung nicht mehr benötigen, können Sie den Beispiel-Namespace, den Service und die Bereitstellung mit dem folgenden Befehl entfernen.
kubectl delete namespace eks-sample-app
Nächste Schritte
Nachdem Sie die Beispielanwendung bereitgestellt haben, möchten Sie vielleicht einige der folgenden Übungen ausprobieren: