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.