O Google Distributed Cloud (GDC) air-gapped permite-lhe gerir os seus clusters do Kubernetes após a criação através do GKE no GDC. Este serviço permite-lhe adaptar-se aos requisitos em evolução das cargas de trabalho de contentores e manter os nós de cluster existentes com os seguintes fluxos de trabalho:
Anexe e desanexe clusters partilhados a projetos: Anexe e desanexe o cluster partilhado a vários projetos após a criação do cluster para alterar o âmbito das cargas de trabalho do cluster partilhado.
Veja os clusters na sua organização: liste os clusters na sua organização para acompanhar o que está disponível para as cargas de trabalho de contentores.
Liste as versões do Kubernetes: veja a versão do Kubernetes do cluster para ter conhecimento das capacidades do cluster correspondentes aos lançamentos mais recentes do Kubernetes.
Veja as propriedades do cluster que podem ser atualizadas: veja as propriedades disponíveis para alteração na definição de recurso personalizado
Cluster.
Este documento destina-se a administradores de TI no grupo de administradores da plataforma que gerem cargas de trabalho de contentores alojadas em clusters que abrangem vários projetos, e a programadores no grupo de operadores de aplicações responsáveis pela criação de cargas de trabalho de aplicações num único projeto. Para mais informações, consulte Públicos-alvo para a documentação do GDC air-gapped.
Antes de começar
Para concluir as tarefas neste documento, tem de pedir as autorizações necessárias e preparar o seu ambiente.
Peça funções de IAM
Tem de ter funções específicas para receber as autorizações necessárias para manter o cluster do Kubernetes. As funções necessárias dependem de estar a trabalhar num cluster partilhado com âmbito da organização ou num cluster padrão com âmbito do projeto. Para mais informações, consulte o artigo Configurações do cluster do Kubernetes.
Funções do cluster partilhado
Para ver e manter o cluster do Kubernetes partilhado e os respetivos recursos, peça ao administrador de IAM da organização que lhe conceda as seguintes funções com base na tarefa a realizar:
Criador de projetos (
project-creator): crie ou veja recursos do projeto. Esta função é necessária para anexar um cluster partilhado a um projeto.Editor de projetos (
project-editor): elimine, atualize ou veja recursos do projeto. Esta função é necessária para desanexar um cluster partilhado de um projeto.Visualizador de clusters do utilizador (
user-cluster-viewer): veja o cluster partilhado e os respetivos recursos. Esta função fornece acesso às APIs do plano de gestão para o cluster partilhado alojado no servidor da API de gestão.
Estas funções não estão associadas a um espaço de nomes do projeto.
Funções do cluster padrão
Para ver o cluster do Kubernetes padrão e os respetivos recursos, peça ao administrador de IAM do projeto que lhe conceda a função de Visualizador de clusters padrão (standard-cluster-viewer). Esta função fornece acesso às APIs do plano de gestão para o cluster padrão alojado no servidor da API de gestão.
Esta função está associada ao espaço de nomes do projeto.
Prepare o seu ambiente
Para executar comandos num cluster do Kubernetes através da API, certifique-se de que tem os seguintes recursos:
Localize o nome do cluster do Kubernetes ou pergunte a um membro do grupo de administradores da plataforma qual é o nome do cluster.
Use o nome do cluster do Kubernetes para substituir
CLUSTER_NAMEnestas instruções.Inicie sessão e gere o ficheiro kubeconfig para o servidor da API de gestão.
Use o caminho kubeconfig do servidor da API de gestão para substituir
MANAGEMENT_API_SERVERnestas instruções.
Mova clusters na hierarquia do projeto
Os projetos fornecem um agrupamento lógico de instâncias de serviços. Pode adicionar e remover clusters do Kubernetes partilhados da hierarquia do projeto do GDC para agrupar os serviços de forma adequada. Não pode mover clusters padrão na hierarquia do projeto, uma vez que estão limitados apenas a um único projeto.
Anexe um projeto a um cluster partilhado
Ao criar um cluster partilhado a partir da consola do GDC, tem de anexar, pelo menos, um projeto antes de poder implementar cargas de trabalho de contentores com êxito no mesmo. Se tiver de adicionar projetos adicionais a um cluster existente, conclua os seguintes passos:
Consola
- No menu de navegação, selecione Kubernetes Engine > Clusters.
- Na lista de clusters, clique no nome do cluster para abrir a página Detalhes do cluster.
- Selecione Anexar projeto.
- Na lista de projetos disponíveis, clique no nome do projeto para anexar ao cluster.
- Clique em Guardar.
API
Crie um novo recurso personalizado
ProjectBindingpara o cluster: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 EOFSubstitua o seguinte:
MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal.CLUSTER_NAME: o nome do cluster.PROJECT_NAME: o nome do projeto ao qual associar o cluster. Cada recursoProjectBindingsó pode ser mapeado para um cluster. Se um projeto precisar de acesso a vários clusters, tem de criar umProjectBindingexclusivo para cada cluster.
Terraform
Num ficheiro de configuração do Terraform, insira o seguinte fragmento de código para criar o 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", ] } } } } }Substitua o seguinte:
MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal.PROJECT_BINDING_RESOURCE_NAME: o nome do recurso do Terraform da associação do projeto, comoCLUSTER_NAME-PROJECT_NAME-binding. Este nome é usado pelo Terraform para identificar a associação do projeto e não é usado pelo GDC.CLUSTER_NAME: o nome do cluster. Cada recursoProjectBindingsó pode ser mapeado para um cluster. Se um projeto precisar de acesso a vários clusters, tem de criar umProjectBindingexclusivo para cada cluster.PROJECT_NAME: o nome do projeto ao qual associar. Cada recursoProjectBindingsó pode ser mapeado para um cluster. Se um projeto precisar de acesso a vários clusters, tem de criar umProjectBindingexclusivo para cada cluster.
Aplique a nova associação do projeto:
terraform apply
Desanexe um projeto de um cluster partilhado
A desanexação de um projeto de um cluster partilhado pode introduzir alterações significativas, como a eliminação de cargas de trabalho em execução no cluster. Certifique-se de que compreende as consequências antes de desanexar um projeto de um cluster partilhado.
Para desanexar um projeto de um cluster partilhado existente, conclua os seguintes passos:
Consola
- No menu de navegação, selecione Kubernetes Engine > Clusters.
- Clique no cluster na lista de clusters para abrir a página Detalhes do cluster.
- Clique em delete Desanexar para o projeto a desanexar do cluster.
API
Elimine o recurso
ProjectBindingque associa o projeto e o cluster:kubectl --kubeconfig MANAGEMENT_API_SERVER delete projectbinding \ CLUSTER_NAME-PROJECT_NAME -n platformSubstitua o seguinte:
MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal.CLUSTER_NAME: o nome do cluster.PROJECT_NAME: o nome do projeto a desanexar do cluster.
Terraform
Elimine o recurso de associação do projeto:
terraform destroy -target kubernetes_manifest.PROJECT_BINDING_RESOURCE_NAMESubstitua
PROJECT_BINDING_RESOURCE_NAMEpelo nome do recurso do Terraform da associação do projeto a eliminar, comoCLUSTER_NAME-PROJECT_NAME-binding. Este nome é usado pelo Terraform para identificar a associação do projeto e não é usado pelo GDC.
Veja todos os clusters num projeto ou numa organização
Pode ver todos os clusters do Kubernetes disponíveis num projeto ou numa organização, incluindo os respetivos estados, versões do Kubernetes e outros detalhes.
Uma vez que os clusters do Kubernetes são um recurso zonal, só pode listar clusters por zona.
Consola
No seletor de projetos, selecione o seu projeto ou organização.
Os clusters padrão têm âmbito do projeto e os clusters partilhados têm âmbito da organização. Selecione o âmbito correto para ver o tipo de cluster do Kubernetes adequado.
No menu de navegação, selecione Kubernetes Engine > Clusters.
São apresentados todos os clusters partilhados disponíveis na organização com os respetivos estados e outras informações:

gdcloud
Liste os clusters do Kubernetes disponíveis da zona:
gdcloud clusters listO resultado é semelhante ao seguinte:
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
Liste os clusters do Kubernetes disponíveis da zona:
kubectl get clusters.cluster.gdc.goog -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVERSubstitua o seguinte:
MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal.KUBERNETES_CLUSTER_NAMESPACE: o espaço de nomes do cluster. Para clusters partilhados, use o espaço de nomesplatform. Para clusters padrão, use o espaço de nomes do projeto do cluster.
O resultado é semelhante ao seguinte:
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
Liste as versões do Kubernetes disponíveis para um cluster
Pode listar as versões do Kubernetes disponíveis na zona do GDC para validar as funcionalidades do Kubernetes às quais pode aceder no cluster.
Liste as versões do Kubernetes disponíveis na sua zona:
kubectl get userclustermetadata.upgrade.private.gdc.goog \ -o=custom-columns=K8S-VERSION:.spec.kubernetesVersion \ --kubeconfig MANAGEMENT_API_SERVERSubstitua
MANAGEMENT_API_SERVERpelo ficheiro kubeconfig do servidor da API zonal do cluster.O resultado é semelhante ao seguinte:
K8S-VERSION 1.25.10-gke.2100 1.26.5-gke.2100 1.27.4-gke.500
Veja as propriedades que podem ser atualizadas
Para cada cluster do Kubernetes, está disponível um conjunto de propriedades para alteração após a criação. Só pode alterar as propriedades mutáveis que se encontram na spec do recurso personalizado Cluster. Nem todas as propriedades na spec são elegíveis para atualização após o aprovisionamento do cluster. Para ver estas propriedades que podem ser atualizadas, conclua os seguintes passos:
Consola
No menu de navegação, selecione Kubernetes Engine > Clusters.
Na lista de clusters do Kubernetes, clique no nome de um cluster para ver as respetivas propriedades.
As propriedades editáveis têm um edit Editar ícone.
API
Veja a lista de propriedades da `spec` do
Clustere os valores válidos correspondentes a cada propriedade:kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig MANAGEMENT_API_SERVERSubstitua
MANAGEMENT_API_SERVERpelo caminho kubeconfig do servidor da API zonal.O resultado é semelhante ao seguinte:
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.Atualize estas definições através da consola do GDC ou da CLI kubectl. Por exemplo, pode redimensionar um node pool.
O que se segue?
- Vista geral do cluster do Kubernetes
- Elevada disponibilidade para as suas apps
- Configurações do cluster do Kubernetes