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.
El 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 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í.
- El 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 el 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.
Para obtener información sobre cómo configurar el Directorio de servicios para registrar automáticamente tus servicios de GKE en el Directorio de servicios, consulta Configura el Directorio de servicios para GKE.
Asignación de servicios
Cuando registras un servicio en el Directorio de servicios, se crea un servicio en el Google Cloud proyecto de 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 el Directorio de servicios para todos los tipos de servicios de GKE.
Propiedades de nivel superior
| Propiedad del 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 al Directorio de servicios. El servicio del Directorio de servicios existe en un espacio de nombres con el mismo nombre que el espacio de nombres de Kubernetes en el proyecto de flota y la región del clúster de GKE.
| Propiedad del Directorio de servicios | Propiedad de GKE |
| Nombre del servicio | Nombre del servicio |
| Nombre del extremo | Generado automáticamente por el controlador del Directorio de servicios |
| Dirección IP del extremo | Ingreso de LoadBalancer |
| Puerto del extremo | Puerto de servicio de LoadBalancer |
| Red del extremo | Red de VPC del clúster |
El siguiente es 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
El siguiente es un ejemplo de un servicio del 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 al Directorio de servicios. El servicio del Directorio de servicios 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 del Directorio de servicios | Propiedad de GKE |
| Nombre del servicio | Nombre del servicio |
| Nombre del extremo | Generado automáticamente por el controlador del Directorio de servicios |
| 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 de nodo estático |
| Red del extremo | Red de VPC del clúster |
El siguiente es 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
El siguiente es 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
El siguiente es un ejemplo de un servicio del 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 al Directorio de servicios. El servicio del Directorio de servicios existe en un espacio de nombres con el mismo nombre que el espacio de nombres de Kubernetes en el proyecto de flota y la región del clúster de GKE.
| Propiedad del Directorio de servicios | Propiedad de GKE |
| Nombre del servicio | Nombre del servicio |
| Nombre del extremo | Generado automáticamente por el controlador del Directorio de servicios |
| Dirección IP del extremo | ClusterIP |
| Puerto del extremo | Puerto de servicio |
| Red del extremo | Red de VPC del clúster |
El siguiente es 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
El siguiente es un ejemplo de un servicio del 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 el Directorio de servicios, consulta Solución de problemas.