El Directorio de servicios para Google Kubernetes Engine (GKE) proporciona una sola vista de todos los servicios en todas tus implementaciones de GKE y más allá. Puedes agregar varios tipos de servicios de GKE, anotarlos y, luego, verlos en el Directorio de servicios.
Directorio de servicios para GKE ofrece las siguientes funciones:
- Te permite descubrir servicios a través de gRPC y HTTP, y resolver servicios a través de DNS con las zonas de DNS del Directorio de servicios. La integración del Directorio de servicios y Cloud DNS te permite configurar una zona DNS del Directorio de servicios.
- El Directorio de servicios registra servicios fuera de GKE, lo que permite que los servicios de GKE y de terceros se descubran fácilmente entre sí.
- Directorio de servicios aplica los permisos de IAM y las verificaciones de los Controles del servicio de VPC para garantizar la seguridad y la privacidad adecuadas de los datos del cliente.
- Puedes configurar Directorio de servicios para GKE con clústeres de GKE Autopilot o clústeres de GKE Standard. Para obtener información sobre los dos modos, consulta Elige un modo de operación de GKE.
Si deseas obtener información para configurar Directorio de servicios de modo que registre automáticamente tus servicios de GKE en Directorio de servicios, consulta Configura Service Directory para GKE.
Asignación de servicios
Cuando registras un servicio en Directorio de servicios, se crea un servicio en el proyecto de la Google Cloud flota con el nombre del espacio de nombres de Kubernetes y la región del clúster de GKE. En la siguiente tabla, se describe cómo se asignan las propiedades del servicio de GKE a las propiedades del servicio creado en Directorio de servicios para todos los tipos de servicios de GKE.
Propiedades de nivel superior
| Propiedad Directorio de servicios | Propiedad de GKE |
| Proyecto | Proyecto de flota |
| Región | Región del clúster |
| Espacio de nombres | Espacio de nombres de Kubernetes |
Tipo de servicio LoadBalancer
En el siguiente ejemplo, se muestra cómo se asigna un servicio LoadBalancer de GKE a Directorio de servicios. El servicio de Service Directory existe en un espacio de nombres con el mismo nombre que el espacio de nombres de Kubernetes en el proyecto de la flota y la región del clúster de GKE.
| Propiedad Directorio de servicios | Propiedad de GKE |
| Nombre del servicio | Nombre del servicio |
| Nombre del extremo | Generado automáticamente por el controlador de Service Directory |
| Dirección IP del extremo | Entrada de LoadBalancer |
| Puerto del extremo | Puerto de servicio de LoadBalancer |
| Red de extremos | Red de VPC del clúster |
A continuación, se muestra un ejemplo de un servicio LoadBalancer de GKE:
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
A continuación, se muestra un ejemplo de un servicio de Directorio de servicios:
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
Tipo de servicio NodePort
En el siguiente ejemplo, se muestra cómo se asigna un servicio NodePort de GKE a Directorio de servicios. El servicio de Service Directory existe en un espacio de nombres con el mismo nombre que el espacio de nombres de Kubernetes en el proyecto del hub y la región del clúster de GKE.
| Propiedad Directorio de servicios | Propiedad de GKE |
| Nombre del servicio | Nombre del servicio |
| Nombre del extremo | Generado automáticamente por el controlador de Service Directory |
| Dirección IP del extremo | Dirección IP interna del nodo para cada nodo que ejecuta un pod para el servicio |
| Puerto del extremo | Puerto del nodo estático |
| Red de extremos | Red de VPC del clúster |
A continuación, se muestra un ejemplo de un servicio NodePort de GKE:
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
A continuación, se muestra un ejemplo de nodos de GKE:
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
A continuación, se muestra un ejemplo de un servicio de Directorio de servicios:
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
Servicio ClusterIP
En el siguiente ejemplo, se muestra cómo se asigna un servicio ClusterIP de GKE a Directorio de servicios. El servicio de Service Directory existe en un espacio de nombres con el mismo nombre que el espacio de nombres de Kubernetes en el proyecto de la flota y la región del clúster de GKE.
| Propiedad Directorio de servicios | Propiedad de GKE |
| Nombre del servicio | Nombre del servicio |
| Nombre del extremo | Generado automáticamente por el controlador de Service Directory |
| Dirección IP del extremo | ClusterIP |
| Puerto del extremo | Puerto de servicio |
| Red de extremos | Red de VPC del clúster |
A continuación, se muestra un ejemplo de un servicio ClusterIP de GKE:
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
A continuación, se muestra un ejemplo de un servicio de Directorio de servicios:
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
¿Qué sigue?
- Para obtener una descripción general del Directorio de servicios, consulta la Descripción general del Directorio de servicios.
- Para encontrar soluciones a problemas habituales que podrías tener cuando usas Directorio de servicios, consulta Solución de problemas.