Google Distributed Cloud (GDC) aislado te permite administrar tus clústeres de Kubernetes después de crearlos con GKE en GDC. Este servicio te permite adaptarte a los requisitos cambiantes de la carga de trabajo de los contenedores y mantener los nodos de clúster existentes con los siguientes flujos de trabajo:
Adjunta y desconecta clústeres compartidos a proyectos: Adjunta y desconecta tu clúster compartido a varios proyectos después de crearlo para cambiar el alcance de las cargas de trabajo de tu clúster compartido.
Visualiza los clústeres de tu organización: Enumera los clústeres de tu organización para hacer un seguimiento de lo que está disponible para tus cargas de trabajo de contenedores.
Enumera las versiones de Kubernetes: Consulta la versión de Kubernetes de tu clúster para conocer sus capacidades correspondientes a las versiones más recientes de Kubernetes.
Visualiza las propiedades del clúster que se pueden actualizar: Visualiza las propiedades disponibles para cambiar dentro de la definición del recurso personalizado
Cluster.
Este documento está dirigido a los administradores de TI del grupo de administradores de la plataforma que administran las cargas de trabajo de contenedores alojadas en clústeres que abarcan varios proyectos y a los desarrolladores del grupo de operadores de aplicaciones que son responsables de crear cargas de trabajo de aplicaciones en un solo proyecto. Para obtener más información, consulta Públicos de la documentación de GDC aislado.
Antes de comenzar
Para completar las tareas de este documento, debes solicitar los permisos necesarios y preparar tu entorno.
Solicita roles de IAM
Debes tener roles específicos para obtener los permisos que necesitas para mantener tu clúster de Kubernetes. Los roles que necesitas dependen de si trabajas en un clúster compartido con alcance de organización o en un clúster estándar con alcance de proyecto. Para obtener más información, consulta Configuraciones de clústeres de Kubernetes.
Roles de clúster compartidos
Para ver y mantener tu clúster de Kubernetes compartido y sus recursos, pídele al administrador de la organización de IAM que te otorgue los siguientes roles según la tarea que realizarás:
Creador de proyectos (
project-creator): Crea o visualiza recursos del proyecto. Este rol es obligatorio para adjuntar un clúster compartido a un proyecto.Editor del proyecto (
project-editor): Borra, actualiza o visualiza recursos del proyecto. Este rol es necesario para desconectar un clúster compartido de un proyecto.Visualizador de clústeres de usuario (
user-cluster-viewer): Visualiza el clúster compartido y sus recursos. Este rol proporciona acceso a las APIs del plano de administración para el clúster compartido alojado en el servidor de la API de administración.
Estos roles no están vinculados a un espacio de nombres del proyecto.
Roles de clúster estándar
Para ver tu clúster de Kubernetes estándar y sus recursos, pídele al administrador de proyectos de IAM que te otorgue el rol de Visualizador de clústeres estándar (standard-cluster-viewer). Este rol proporciona acceso a las APIs del plano de administración para el clúster estándar
alojado en el servidor de la API de administración.
Este rol está vinculado al espacio de nombres de tu proyecto.
Prepara el entorno
Para ejecutar comandos en un clúster de Kubernetes con la API, asegúrate de tener los siguientes recursos:
Busca el nombre del clúster de Kubernetes o pregúntale a un miembro del grupo de administradores de la plataforma cuál es el nombre del clúster.
Usa el nombre del clúster de Kubernetes para reemplazar
CLUSTER_NAMEen estas instrucciones.Accede y genera el archivo kubeconfig para el servidor de la API de administración.
Usa la ruta de acceso de kubeconfig del servidor de la API de administración para reemplazar
MANAGEMENT_API_SERVERen estas instrucciones.
Mueve clústeres en la jerarquía de proyectos
Los proyectos proporcionan una agrupación lógica de las instancias de servicio. Puedes agregar y quitar clústeres de Kubernetes compartidos de la jerarquía de proyectos de GDC para agrupar tus servicios de forma adecuada. No puedes mover clústeres estándar en la jerarquía del proyecto, ya que solo se limitan a un proyecto.
Adjunta el proyecto a un clúster compartido
Cuando creas un clúster compartido desde la consola de GDC, debes adjuntar al menos un proyecto antes de poder implementar cargas de trabajo de contenedores en él de forma correcta. Si debes agregar proyectos adicionales a un clúster existente, completa los siguientes pasos:
Console
- En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
- En la lista de clústeres, haz clic en el nombre del clúster para abrir la página Detalles del clúster.
- Selecciona Adjuntar proyecto.
- En la lista de proyectos disponibles, haz clic en el nombre del proyecto que deseas conectar al clúster.
- Haz clic en Guardar.
API
Crea un recurso personalizado de
ProjectBindingnuevo para tu clúster:kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: resourcemanager.gdc.goog/v1 kind: ProjectBinding metadata: name: CLUSTER_NAME-PROJECT_NAME namespace: platform labels: resourcemanager.gdc.goog/projectbinding-for-user-project: "true" spec: clusterRef: name: CLUSTER_NAME selector: nameSelector: matchNames: - PROJECT_NAME EOFReemplaza lo siguiente:
MANAGEMENT_API_SERVER: Es la ruta de acceso de kubeconfig del servidor de la API zonal.CLUSTER_NAME: el nombre del clústerPROJECT_NAME: Es el nombre del proyecto al que se vinculará el clúster. Cada recursoProjectBindingsolo se puede asignar a un clúster. Si un proyecto requiere acceso a varios clústeres, se debe crear unProjectBindingúnico para cada clúster.
Terraform
En un archivo de configuración de Terraform, inserta el siguiente fragmento de código para crear el recurso personalizado
ProjectBinding:provider "kubernetes" { config_path = "MANAGEMENT_API_SERVER" } resource "kubernetes_manifest" "PROJECT_BINDING_RESOURCE_NAME" { manifest = { "apiVersion" = "resourcemanager.gdc.goog/v1" "kind" = "ProjectBinding" "metadata" = { "name" = "CLUSTER_NAME-PROJECT_NAME" "namespace" = "platform" "labels" = { "resourcemanager.gdc.goog/projectbinding-for-user-project" = "true" } } "spec" = { "clusterRef" = { "name" = "CLUSTER_NAME" } "selector" = { "nameSelector" = { "matchNames" = [ "PROJECT_NAME", ] } } } } }Reemplaza lo siguiente:
MANAGEMENT_API_SERVER: Es la ruta de acceso de kubeconfig del servidor de la API zonal.PROJECT_BINDING_RESOURCE_NAME: Es el nombre del recurso de Terraform de la vinculación del proyecto, comoCLUSTER_NAME-PROJECT_NAME-binding. Terraform usa este nombre para identificar la vinculación de tu proyecto, y GDC no lo usa.CLUSTER_NAME: el nombre del clúster Cada recursoProjectBindingsolo se puede asignar a un clúster. Si un proyecto requiere acceso a varios clústeres, se debe crear unProjectBindingúnico para cada clúster.PROJECT_NAME: Es el nombre del proyecto al que se vinculará. Cada recursoProjectBindingsolo se puede asignar a un clúster. Si un proyecto requiere acceso a varios clústeres, se debe crear unProjectBindingúnico para cada clúster.
Aplica la vinculación del proyecto nuevo:
terraform apply
Desconecta un proyecto de un clúster compartido
Desvincular un proyecto de un clúster compartido puede generar cambios significativos, como borrar las cargas de trabajo que se ejecutan en el clúster. Asegúrate de comprender las consecuencias antes de desconectar un proyecto de un clúster compartido.
Para desconectar un proyecto de un clúster compartido existente, completa los siguientes pasos:
Console
- En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
- Haz clic en el clúster de la lista de clústeres para abrir la página Detalles del clúster.
- Haz clic en delete Desvincular para que el proyecto se desvincule del clúster.
API
Borra el recurso
ProjectBindingque vincula el proyecto y el clúster:kubectl --kubeconfig MANAGEMENT_API_SERVER delete projectbinding \ CLUSTER_NAME-PROJECT_NAME -n platformReemplaza lo siguiente:
MANAGEMENT_API_SERVER: Es la ruta de acceso de kubeconfig del servidor de la API zonal.CLUSTER_NAME: el nombre del clústerPROJECT_NAME: Es el nombre del proyecto que se desconectará del clúster.
Terraform
Borra el recurso de vinculación del proyecto:
terraform destroy -target kubernetes_manifest.PROJECT_BINDING_RESOURCE_NAMEReemplaza
PROJECT_BINDING_RESOURCE_NAMEpor el nombre del recurso de Terraform de la vinculación del proyecto que deseas borrar, comoCLUSTER_NAME-PROJECT_NAME-binding. Terraform usa este nombre para identificar la vinculación de tu proyecto, y GDC no lo usa.
Visualiza todos los clústeres de un proyecto o una organización
Puedes ver todos los clústeres de Kubernetes disponibles en un proyecto o una organización, incluidos sus estados, versiones de Kubernetes y otros detalles.
Como los clústeres de Kubernetes son un recurso zonal, solo puedes enumerar los clústeres por zona.
Console
En el selector de proyectos, elige tu proyecto u organización.
Los clústeres estándar tienen alcance de proyecto y los clústeres compartidos tienen alcance de organización. Selecciona el permiso correcto para ver el tipo de clúster de Kubernetes adecuado.
En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
Se muestran todos los clústeres compartidos disponibles en la organización con sus estados y otra información:

gdcloud
Enumera los clústeres de Kubernetes disponibles en la zona:
gdcloud clusters listEl resultado es similar a lo siguiente:
CLUSTERREF.NAME READINESS.STATE TYPE CURRENTVERSION.USERCLUSTERVERSION CURRENTVERSION.SUPPORT.STATUS user-vm-1 Ready user 1.15.0-gdch.394225-1.28.15-gke.1200 In Support user-vm-2 Ready user 1.15.0-gdch.394225-1.29.12-gke.800 In Support
API
Enumera los clústeres de Kubernetes disponibles en la zona:
kubectl get clusters.cluster.gdc.goog -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVERReemplaza lo siguiente:
MANAGEMENT_API_SERVER: la ruta de acceso de kubeconfig del servidor de la API zonal.KUBERNETES_CLUSTER_NAMESPACE: Es el espacio de nombres del clúster. Para los clústeres compartidos, usa el espacio de nombresplatform. Para los clústeres estándar, usa el espacio de nombres del proyecto del clúster.
El resultado es similar a lo siguiente:
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
Enumera las versiones de Kubernetes disponibles para un clúster
Puedes enumerar las versiones de Kubernetes disponibles en tu zona de GDC para verificar las funciones de Kubernetes a las que puedes acceder en el clúster.
Enumera las versiones de Kubernetes disponibles en tu zona:
kubectl get userclustermetadata.upgrade.private.gdc.goog \ -o=custom-columns=K8S-VERSION:.spec.kubernetesVersion \ --kubeconfig MANAGEMENT_API_SERVERReemplaza
MANAGEMENT_API_SERVERpor el archivo kubeconfig del servidor de la API zonal de tu clúster.El resultado es similar al siguiente:
K8S-VERSION 1.25.10-gke.2100 1.26.5-gke.2100 1.27.4-gke.500
Cómo ver las propiedades actualizables
Para cada clúster de Kubernetes, hay un conjunto de propiedades disponibles que se pueden cambiar después de
crearlo. Solo puedes cambiar las propiedades mutables que se encuentran en el spec del
recurso personalizado Cluster. No todas las propiedades de spec se pueden actualizar después de que se aprovisiona el clúster. Para ver estas propiedades actualizables,
completa los siguientes pasos:
Console
En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
En la lista de clústeres de Kubernetes, haz clic en el nombre de un clúster para ver sus propiedades.
Las propiedades editables tienen un ícono de edit Editar.
API
Consulta la lista de propiedades de la especificación
Clustery los valores válidos correspondientes a cada propiedad:kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig MANAGEMENT_API_SERVERReemplaza
MANAGEMENT_API_SERVERpor la ruta de acceso de kubeconfig del servidor de la API zonal.El resultado es similar a lo siguiente:
KIND: Cluster VERSION: cluster.gdc.goog/v1 RESOURCE: spec <Object> DESCRIPTION: <empty> FIELDS: clusterNetwork <Object> The cluster network configuration. If unset, the default configurations with pod and service CIDR sizes are used. Optional. Mutable. initialVersion <Object> The GDC air-gapped version information of the user cluster during cluster creation. Optional. Default to use the latest applicable version. Immutable. loadBalancer <Object> The load balancer configuration. If unset, the default configuration with the ingress service IP address size is used. Optional. Mutable. nodePools <[]Object> The list of node pools for the cluster worker nodes. Optional. Mutable. releaseChannel <Object> The release channel a cluster is subscribed to. When a cluster is subscribed to a release channel, GDC maintains the cluster versions for users. Optional. Mutable.Actualiza estos parámetros de configuración con la consola de GDC o la CLI de kubectl. Por ejemplo, puedes cambiar el tamaño de un grupo de nodos.
¿Qué sigue?
- Descripción general del clúster de Kubernetes
- Alta disponibilidad para tus apps
- Parámetros de configuración de clústeres de Kubernetes