Google Distributed Cloud (GDC) air-gapped te permite gestionar tus clústeres de Kubernetes después de crearlos con GKE en GDC. Este servicio te permite adaptarte a los requisitos cambiantes de tus cargas de trabajo de contenedores y mantener los nodos de clúster con los siguientes flujos de trabajo:
Asociar y desasociar clústeres compartidos a proyectos: asocia y desasocia tu clúster compartido a varios proyectos después de crear el clúster para cambiar el ámbito de las cargas de trabajo del clúster compartido.
Ver 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.
Lista de versiones de Kubernetes: consulta la versión de Kubernetes de tu clúster para conocer las funciones del clúster correspondientes a las versiones más recientes de Kubernetes.
Ver las propiedades de clúster que se pueden actualizar: consulta las propiedades que se pueden cambiar en la definición de recursos personalizados
Cluster.
Este documento está dirigido a los administradores de TI del grupo de administradores de la plataforma que gestionan cargas de trabajo de contenedores alojadas en clústeres que abarcan varios proyectos, así como a los desarrolladores del grupo de operadores de aplicaciones que se encargan de crear cargas de trabajo de aplicaciones en un solo proyecto. Para obtener más información, consulta Audiencias de la documentación aislada de GDC.
Antes de empezar
Para completar las tareas de este documento, debes solicitar los permisos necesarios y preparar tu entorno.
Solicitar roles de gestión de identidades y accesos
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 ámbito de organización o en un clúster estándar con ámbito de proyecto. Para obtener más información, consulta las configuraciones de clústeres de Kubernetes.
Roles de clúster compartidos
Para ver y mantener tu clúster de Kubernetes compartido y sus recursos, pide al administrador de gestión de identidades y accesos de tu organización que te asigne los siguientes roles en función de la tarea que quieras realizar:
Creador de proyectos (
project-creator): crea o consulta recursos de proyectos. Este rol es necesario para asociar un clúster compartido a un proyecto.Editor de proyectos (
project-editor): elimina, actualiza o consulta recursos de proyectos. Este rol es necesario para desvincular un clúster compartido de un proyecto.Lector de clústeres de usuario (
user-cluster-viewer): consulta el clúster compartido y sus recursos. Este rol proporciona acceso a las APIs del plano de gestión del clúster compartido alojado en el servidor de la API de gestión.
Estos roles no están vinculados a un espacio de nombres de proyecto.
Roles de clúster estándar
Para ver tu clúster de Kubernetes estándar y sus recursos, pide al administrador de gestión de identidades y accesos de tu proyecto que te conceda el rol Lector de clúster estándar (standard-cluster-viewer). Este rol proporciona acceso a las APIs del plano de gestión del clúster estándar alojado en el servidor de la API de gestión.
Este rol está vinculado al espacio de nombres de tu proyecto.
Prepara tu entorno
Para ejecutar comandos en un clúster de Kubernetes mediante la API, asegúrate de tener los siguientes recursos:
Busca el nombre del clúster de Kubernetes o pregunta 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 sustituir
CLUSTER_NAMEen estas instrucciones.Inicia sesión y genera el archivo kubeconfig del servidor de la API de gestión.
Usa la ruta kubeconfig del servidor de la API de gestión para sustituir
MANAGEMENT_API_SERVERen estas instrucciones.
Mover clústeres en la jerarquía de proyectos
Los proyectos proporcionan una agrupación lógica de las instancias de servicio. Puedes añadir 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 de proyectos, ya que solo se aplican a un proyecto.
Adjuntar un proyecto a un clúster compartido
Cuando creas un clúster compartido desde la consola de GDC, debes adjuntar al menos un proyecto para poder desplegar cargas de trabajo de contenedores en él. Si tienes que añadir más proyectos a un clúster, sigue estos pasos:
Consola
- 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, haga clic en el nombre del proyecto al que quiera adjuntar el clúster.
- Haz clic en Guardar.
API
Crea un recurso personalizado
ProjectBindingpara 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 EOFHaz los cambios siguientes:
MANAGEMENT_API_SERVER: la ruta de kubeconfig del servidor de la API zonal.CLUSTER_NAME: el nombre del clúster.PROJECT_NAME: el nombre del proyecto al que se va a 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", ] } } } } }Haz los cambios siguientes:
MANAGEMENT_API_SERVER: la ruta de kubeconfig del servidor de la API zonal.PROJECT_BINDING_RESOURCE_NAME: el nombre de 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, pero 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: el nombre del proyecto al que se va a 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 nueva vinculación de proyecto:
terraform apply
Desvincular un proyecto de un clúster compartido
Si separas un proyecto de un clúster compartido, se pueden producir cambios significativos, como la eliminación de cargas de trabajo que se estén ejecutando en el clúster. Asegúrate de que entiendes las consecuencias antes de separar un proyecto de un clúster compartido.
Para desvincular un proyecto de un clúster compartido, sigue estos pasos:
Consola
- En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
- En la lista de clústeres, haz clic en el que quieras para abrir la página Detalles del clúster.
- Haz clic en delete Desasociar para que el proyecto se desasocie del clúster.
API
Elimina el recurso
ProjectBindingque vincula el proyecto y el clúster:kubectl --kubeconfig MANAGEMENT_API_SERVER delete projectbinding \ CLUSTER_NAME-PROJECT_NAME -n platformHaz los cambios siguientes:
MANAGEMENT_API_SERVER: la ruta de kubeconfig del servidor de la API zonal.CLUSTER_NAME: el nombre del clúster.PROJECT_NAME: el nombre del proyecto que se va a desvincular del clúster.
Terraform
Elimina el recurso de vinculación del proyecto:
terraform destroy -target kubernetes_manifest.PROJECT_BINDING_RESOURCE_NAMESustituye
PROJECT_BINDING_RESOURCE_NAMEpor el nombre del recurso de Terraform del enlace del proyecto que quieras eliminar, comoCLUSTER_NAME-PROJECT_NAME-binding. Terraform usa este nombre para identificar la vinculación de tu proyecto, pero GDC no lo usa.
Ver todos los clústeres de un proyecto o una organización
Puede 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 de zona, solo puedes enumerar los clústeres por zona.
Consola
En el selector de proyectos, selecciona tu proyecto u organización.
Los clústeres estándar tienen el ámbito de un proyecto y los clústeres compartidos tienen el ámbito de una organización. Selecciona el ámbito 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, junto con sus estados y otra información:

gdcloud
Lista los clústeres de Kubernetes disponibles en la zona:
gdcloud clusters listEl resultado debería ser similar al 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
Lista los clústeres de Kubernetes disponibles en la zona:
kubectl get clusters.cluster.gdc.goog -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVERHaz los cambios siguientes:
MANAGEMENT_API_SERVER: la ruta de kubeconfig del servidor de la API zonal.KUBERNETES_CLUSTER_NAMESPACE: el espacio de nombres del clúster. En el caso de los clústeres compartidos, usa el espacio de nombresplatform. En el caso de los clústeres estándar, usa el espacio de nombres del proyecto del clúster.
El resultado debería ser similar al siguiente:
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
Mostrar 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.
Lista de 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_SERVERSustituye
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
Ver propiedades actualizables
En cada clúster de Kubernetes, hay un conjunto de propiedades que se pueden cambiar después de crearlo. Solo puede 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 aprovisionar el clúster. Para ver estas propiedades actualizables, sigue estos pasos:
Consola
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 el icono 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_SERVERSustituye
MANAGEMENT_API_SERVERpor la ruta de kubeconfig del servidor de la API zonal.El resultado debería ser similar al 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.Para actualizar estos ajustes, usa la consola de GDC o la CLI de kubectl. Por ejemplo, puedes cambiar el tamaño de un grupo de nodos.
Siguientes pasos
- Descripción general de los clústeres de Kubernetes
- Alta disponibilidad para tus aplicaciones
- Configuraciones de clúster de Kubernetes