Netzwerk-Load-Balancer erstellen

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

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.

  1. 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"
    
  2. Erstellen Sie das Deployment mit kubectl apply:

    kubectl apply -f my-deployment-50001.yaml
    
  3. Achten Sie darauf, dass drei Pods ausgeführt werden:

    kubectl get pods --selector=app=products
    
  4. Erstellen Sie einen Service vom Typ LoadBalancer für Ihr Deployment.

  5. 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 auf nlb 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 auf nlb 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
    
  6. Erstellen Sie den Service mit kubectl apply:

    kubectl apply -f my-lb-service.yaml
    
  7. 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).

  8. 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