Auf dieser Seite wird beschrieben, wie Sie einen L4-Load-Balancer mit einem AWS Elastic Load Balancer (ELB) oder einem Endpunkt des Netzwerk-Load-Balancers (NLB) einrichten.
Weitere Informationen zu den anderen Load-Balancer-Typen, die Sie mit GKE on AWS verwenden können, finden Sie unter Load Balancer – Übersicht.
Diese Seite richtet sich an Netzwerkexperten, die Netzwerkgeräte installieren, konfigurieren und unterstützen möchten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Google Cloud -Inhalten verweisen, finden Sie unter Häufig verwendete GKE Enterprise-Nutzerrollen und -Aufgaben.
Hinweise
- Erstellen Sie einen Cluster und konfigurieren Sie
kubectl
, um eine Verbindung zu ihm herzustellen. - Taggen Sie Ihre Subnetze für den Dienst-Load-Balancer. Dies ist für die automatische Subnetzerkennung erforderlich.
- Legen Sie fest, ob Sie einen Classic oder Network ELB benötigen.
- Entscheiden Sie, ob Sie einen Internet- oder internen Load-Balancer benötigen.
Load-Balancer-Typ auswählen
GKE on AWS erstellt einen Service-Load Balancer als AWS Classic Elastic Load Balancer (Classic ELB) oder NLB. Standardmäßig erstellt GKE on AWS einen klassischen ELB. Zum Erstellen eines NLB legen Sie die Annotation service.beta.kubernetes.io/aws-load-balancer-type
auf nlb
fest.
Weitere Informationen zu den Unterschieden zwischen den Load Balancer-Typen finden Sie in der AWS-Dokumentation unter Load Balancer-Typen.
Internet- oder internen Load-Balancer auswählen
Dienst-Load-Balancer können entweder mit dem Internet verbunden sein (mit einem öffentlich aufgelösten DNS-Namen) oder intern (nur innerhalb Ihrer VPC zugänglich).
Standardmäßig sind neue Load-Balancer mit dem Internet verbunden. Zum Erstellen eines internen Load-Balancers legen Sie für die Annotation service.beta.kubernetes.io/aws-load-balancer-internal
in Ihrem Manifest den Wert "true"
fest.
Sie können die Annotation aws-load-balancer-internal
nicht auf einen vorhandenen Service anwenden. Wenn Sie zwischen Internet- und internen Konfigurationen wechseln möchten, müssen Sie den vorhandenen LoadBalancer löschen und neu erstellen.
Subnetze auswählen
Beim Erstellen von Load-Balancern muss AWS wissen, in welchen Subnetzen sie platziert werden sollen. Standardmäßig werden diese Subnetze automatisch aus den Subnetzen in der VPC ermittelt. Dies erfordert, dass Subnetze bestimmte Tags haben. Weitere Informationen zur automatischen Erkennung und Tag-Kennzeichnung von Subnetzen finden Sie unter Load-Balancer-Subnetze.
Alternativ können Sie Load-Balancer-Subnetze mit einer Annotation angeben. Dazu fügen Sie dem Dienst die Annotation service.beta.kubernetes.io/aws-load-balancer-subnets
hinzu. Der Wert für diese Annotation ist eine durch Kommas getrennte Liste von Subnetz-IDs oder Subnetznamen, z. B. subnet-012345678abcdef,subnet-abcdef123456789,subnet-123456789abcdef
.
Beispiel-Load-Balancer erstellen
Sie erstellen einen Dienst vom Typ LoadBalancer, indem Sie ein Deployment erstellen und dieses mit einem Dienst verfügbar machen. Im folgenden Beispiel erstellen Sie einen Beispiel-Load-Balancer.
Erstellen Sie Ihr Deployment. Container in diesem Deployment überwachen Port 50001. Speichern Sie den folgenden YAML-Code in einer Datei mit dem Namen
my-deployment-50001.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment-50001 spec: selector: matchLabels: app: products department: sales replicas: 3 template: metadata: labels: app: products department: sales spec: containers: - name: hello image: "gcr.io/google-samples/hello-app:2.0" env: - name: "PORT" value: "50001"
Erstellen Sie das Deployment mit
kubectl apply
:kubectl apply -f my-deployment-50001.yaml
Achten Sie darauf, dass drei Pods ausgeführt werden:
kubectl get pods --selector=app=products
Erstellen Sie einen Service vom Typ
LoadBalancer
für Ihr Deployment.Entscheiden Sie, welche Art von Load-Balancer Sie benötigen:
- Ein mit dem Internet verbundenes Classic ELB
- Ein Internet-Load-Balancing
- Ein interner Classic ELB
- Ein interner NLB
Wählen Sie den Tab aus, der Ihren Anforderungen entspricht, und kopieren Sie das darin enthaltene Manifest in eine Datei mit dem Namen
my-lb-service.yaml
.Mit dem Internet verbundenes Classic
apiVersion: v1 kind: Service metadata: name: my-lb-service spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
Mit dem Internet verbundenes NLB
Sie erstellen einen NLB, indem Sie die Annotation
service.beta.kubernetes.io/aws-load-balancer-type
aufnlb
setzen. Der folgende YAML-Code enthält diese Annotation.apiVersion: v1 kind: Service metadata: name: my-lb-service annotations: service.beta.kubernetes.io/aws-load-balancer-type: nlb spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
Internes Classic
Sie erstellen einen internen LoadBalancer, indem Sie die Annotation
service.beta.kubernetes.io/aws-load-balancer-internal
auf"true"
setzen. Der folgende YAML-Code enthält diese Annotation.apiVersion: v1 kind: Service metadata: name: my-lb-service annotations: service.beta.kubernetes.io/aws-load-balancer-internal: "true" spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
Internes NLB
Sie erstellen ein internes NLB, indem Sie die Annotationen festlegen:
service.beta.kubernetes.io/aws-load-balancer-internal
nach"true"
service.beta.kubernetes.io/aws-load-balancer-type
aufnlb
gesetzt
Der folgende YAML-Code enthält beide Annotationen.
apiVersion: v1 kind: Service metadata: name: my-lb-service annotations: service.beta.kubernetes.io/aws-load-balancer-internal: "true" service.beta.kubernetes.io/aws-load-balancer-type: nlb spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
Erstellen Sie den Service mit
kubectl apply
:kubectl apply -f my-lb-service.yaml
Sehen Sie sich den Hostnamen des Service mit
kubectl get service
an.kubectl get service my-lb-service
Die Ausgabe enthält die Spalte
EXTERNAL-IP
mit einer Adresse des Load-Balancers (entweder öffentlich oder privat, je nachdem, wie der Load-Balancer erstellt wurde).Wenn Sie einen Load-Balancer für das Internet erstellt haben, können Sie mit dem folgenden Befehl eine Verbindung zum Load-Balancer mit
curl
herstellen:curl http://EXTERNAL_IP:60000
Ersetzen Sie
EXTERNAL_IP
durch die Adresse aus der Spalte EXTERNAL-IP im vorherigen Schritt.
Die Ausgabe sollte so aussehen:
```none
Hello, world!
Version: 2.0.0
Hostname: my-deployment-50001-84b6dc5555-zmk7q
```
Bereinigen
Entfernen Sie den Dienst und das Deployment mit dem Befehl kubectl delete
:
kubectl delete -f my-lb-service.yaml
kubectl delete -f my-deployment-50001.yaml
Weitere Informationen
Weitere Informationen zu GKE finden Sie in der Google Cloud Dokumentation unter Anwendungen über Dienste verfügbar machen.
Eine vollständige Liste der unterstützten Annotationen finden Sie hier.