Service Directory für GKE – Übersicht

Service Directory für Google Kubernetes Engine (GKE) bietet eine einheitliche Ansicht aller Dienste in allen Ihren GKE-Deployments und darüber hinaus. Sie können verschiedene Arten von GKE-Diensten hinzufügen, mit Anmerkungen versehen und dann in Service Directory aufrufen.

Service Directory für GKE bietet die folgenden Funktionen:

  • Damit können Sie Dienste über gRPC und HTTP ermitteln und Dienste über DNS mit Service Directory-DNS-Zonen auflösen. Durch die Integration von Service Directory und Cloud DNS können Sie eine Service Directory-DNS-Zone konfigurieren.
  • Service Directory registriert Dienste außerhalb von GKE, sodass GKE- und Nicht-GKE-Dienste sich gegenseitig leicht erkennen können.
  • Service Directory erzwingt IAM-Berechtigungen und VPC Service Controls-Prüfungen, um für angemessene Sicherheit und Datenschutz von Kundendaten zu sorgen.
  • Sie können Service Directory für GKE mit Autopilot-GKE-Clustern oder Standard-GKE-Clustern konfigurieren. Informationen zu den beiden Modi finden Sie unter GKE-Betriebsmodus auswählen.

Informationen zum Konfigurieren von Service Directory, damit Ihre GKE-Dienste automatisch bei Service Directory registriert werden, finden Sie unter Service Directory für GKE konfigurieren.

Dienstzuordnung

Wenn Sie einen Dienst bei Service Directory registrieren, wird im Projekt Google Cloud fleet ein Dienst mit dem Namen des Kubernetes-Namespace und der Region des GKE-Cluster erstellt. In der folgenden Tabelle wird beschrieben, wie die Properties des GKE-Dienstes den Properties des erstellten Dienstes im Service Directory für alle GKE-Diensttypen zugeordnet werden.

Attribute der obersten Ebene

Service Directory-Eigenschaft GKE-Property
Projekt Flottenprojekt
Region Region des Clusters
Namespace Kubernetes-Namespace

LoadBalancer Diensttyp

Das folgende Beispiel zeigt, wie ein GKE-LoadBalancer-Dienst Service Directory zugeordnet wird. Der Service Directory-Dienst ist in einem Namespace mit demselben Namen wie der Kubernetes-Namespace im Flottenprojekt und in der Region des GKE-Cluster vorhanden.

Service Directory-Eigenschaft GKE-Property
Dienstname Dienstname
Endpunktname Automatisch vom Service Directory-Controller generiert
Endpunkt-IP-Adresse LoadBalancer-Eingang
Endpunktport LoadBalancer-Dienstport
Endpunktnetzwerk VPC-Netzwerk des Clusters

Das folgende Beispiel zeigt einen GKE-Dienst vom Typ LoadBalancer:

apiVersion: v1
kind: Service
metadata:
  name: hello-app
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
  labels:
    app: hello-app
    sd-import: "true"
spec:
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
  selector:
    app: hello-app
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: 10.140.0.5

Das folgende Beispiel zeigt einen Service Directory-Dienst:

service:
  endpoints:
  - address: 10.140.0.5
    metadata:
       cloud.google.com/load-balancer-type: "Internal"
    name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-12345
    port: 80
    network: projects/my-project/locations/global/networks/default
  name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app

NodePort Diensttyp

Das folgende Beispiel zeigt, wie ein GKE NodePort-Dienst Service Directory zugeordnet wird. Der Service Directory-Dienst ist in einem Namespace mit demselben Namen wie der Kubernetes-Namespace im Projekt des Hubs und der Region des GKE-Cluster vorhanden.

Service Directory-Eigenschaft GKE-Property
Dienstname Dienstname
Endpunktname Automatisch vom Service Directory-Controller generiert
Endpunkt-IP-Adresse Interne Knoten-IP-Adresse für jeden Knoten, auf dem ein Pod für den Dienst ausgeführt wird
Endpunktport Statischer Knotenport
Endpunktnetzwerk VPC-Netzwerk des Clusters

Das folgende Beispiel zeigt einen GKE-Dienst vom Typ NodePort:

apiVersion: v1
kind: Service
metadata:
  name: hello-app
  annotations:
    key1: "value1"
spec:
  ports:
  - nodePort: 30007
    port: 80
    targetPort: 8080
    protocol: TCP
  selector:
    app: hello-app
  type: NodePort
  

Das folgende Beispiel zeigt GKE-Knoten:

apiVersion: v1
items:
- apiVersion: v1
  kind: Node
  metadata:
    name: gke-hello-cluster-default-pool-a40cbab6-d2rr
  status:
    addresses:
    - address: 10.142.0.27
      type: InternalIP
    - address: 34.73.248.170
- apiVersion: v1
  kind: Node
  metadata:
    name: gke-hello-cluster-default-pool-a40cbab6-kb38
  status:
    addresses:
    - address: 10.142.0.29
      type: InternalIP
    - address: 35.196.219.215
      type: ExternalIP
- apiVersion: v1
  kind: Node
  metadata:
    name: gke-hello-cluster-default-pool-a40cbab6-x34q
  status:
    addresses:
    - address: 10.142.0.28
      type: InternalIP
    - address: 34.75.202.26
      type: ExternalIP
    

Das folgende Beispiel zeigt einen Service Directory-Dienst:

service:
  endpoints:
  - address: 10.142.0.27
    metadata:
      key1: value1
    name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-12345
    port: 30007
    network: projects/my-project/locations/global/networks/default
  - address: 10.142.0.28
    metadata:
      key1: value1
    name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-23456
    port: 30007
    network: projects/my-project/locations/global/networks/default
  - address: 10.142.0.29
    metadata:
      key1: value1
    name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-34567
    port: 30007
    network: projects/my-project/locations/global/networks/default
  name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app
  

Dienst ClusterIP

Das folgende Beispiel zeigt, wie ein GKE-ClusterIP-Dienst Service Directory zugeordnet wird. Der Service Directory-Dienst ist in einem Namespace mit demselben Namen wie der Kubernetes-Namespace im Flottenprojekt und in der Region des GKE-Cluster vorhanden.

Service Directory-Eigenschaft GKE-Property
Dienstname Dienstname
Endpunktname Automatisch vom Service Directory-Controller generiert
Endpunkt-IP-Adresse ClusterIP
Endpunktport Dienstport
Endpunktnetzwerk VPC-Netzwerk des Clusters

Das Folgende ist ein Beispiel für einen GKE-ClusterIP-Dienst:

apiVersion: v1
kind: Service
metadata:
  name: hello-app
  annotations:
    key1: "value1"
  labels:
    app: hello-app
    sd-import: "true"
spec:
  clusterIP: 10.15.254.17
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
  selector:
    app: hello-app
  type: ClusterIP
  

Das folgende Beispiel zeigt einen Service Directory-Dienst:

service:
  endpoints:
  - address: 10.15.254.17
    metadata:
      key1: value1
    name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-12345
    port: 80
    network: projects/my-project/locations/global/networks/default
  name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app
  

Nächste Schritte

  • Eine Übersicht über Service Directory finden Sie in der Übersicht zu Service Directory.
  • Informationen zu Lösungen für häufige Probleme, die bei der Verwendung von Service Directory auftreten können, finden Sie unter Fehlerbehebung.