Com o isolamento físico do Google Distributed Cloud (GDC), é possível gerenciar seus clusters do Kubernetes após a criação usando o GKE no GDC. Com esse serviço, é possível se adaptar aos requisitos de carga de trabalho de contêiner em evolução e manter os nós de cluster atuais com os seguintes fluxos de trabalho:
Anexar e remover clusters compartilhados de projetos: anexe e remova seu cluster compartilhado de vários projetos após a criação do cluster para mudar o escopo das cargas de trabalho do cluster compartilhado.
Ver clusters na sua organização: liste os clusters na sua organização para acompanhar o que está disponível para suas cargas de trabalho de contêiner.
Listar versões do Kubernetes: confira a versão do Kubernetes do seu cluster para conhecer os recursos dele correspondentes às versões mais recentes do Kubernetes.
Ver propriedades atualizáveis do cluster: confira as propriedades disponíveis para mudança na definição do recurso personalizado
Cluster.
Este documento é destinado a administradores de TI no grupo de administradores de plataforma que gerenciam cargas de trabalho de contêineres hospedadas em clusters que abrangem vários projetos, e desenvolvedores no grupo de operadores de aplicativos que são responsáveis por criar cargas de trabalho de aplicativos em um único projeto. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.
Antes de começar
Para concluir as tarefas neste documento, peça as permissões necessárias e prepare seu ambiente.
Solicitar papéis do IAM
Você precisa ter papéis específicos para receber as permissões necessárias para manter seu cluster do Kubernetes. As funções necessárias dependem de você estar trabalhando em um cluster compartilhado no escopo da organização ou em um cluster padrão no escopo do projeto. Para mais informações, consulte Configurações de cluster do Kubernetes.
Funções compartilhadas do cluster
Para visualizar e manter seu cluster compartilhado do Kubernetes e os recursos dele, peça ao administrador do IAM da organização para conceder a você os seguintes papéis com base na tarefa a ser realizada:
Criador de projetos (
project-creator): crie ou veja recursos do projeto. Essa função é necessária para anexar um cluster compartilhado a um projeto.Editor do projeto (
project-editor): exclui, atualiza ou visualiza recursos do projeto. Essa função é necessária para separar um cluster compartilhado de um projeto.Leitor do cluster de usuário (
user-cluster-viewer): veja o cluster compartilhado e os recursos dele. Essa função dá acesso às APIs do plano de gerenciamento para o cluster compartilhado hospedado no servidor da API de gerenciamento.
Essas funções não estão vinculadas a um namespace do projeto.
Funções padrão do cluster
Para conferir seu cluster padrão do Kubernetes e os recursos dele, peça ao administrador do IAM do projeto para conceder a você o papel de Leitor de cluster padrão (standard-cluster-viewer). Essa função fornece acesso às APIs do plano de gerenciamento para o cluster padrão hospedado no servidor da API de gerenciamento.
Essa função está vinculada ao namespace do projeto.
Preparar o ambiente
Para executar comandos em um cluster do Kubernetes usando a API, verifique se você tem os seguintes recursos:
Localize o nome do cluster do Kubernetes ou pergunte a um membro do grupo de administradores da plataforma.
Use o nome do cluster do Kubernetes para substituir
CLUSTER_NAMEnestas instruções.Faça login e gere o arquivo kubeconfig para o servidor da API de gerenciamento.
Use o caminho kubeconfig do servidor da API de gerenciamento para substituir
MANAGEMENT_API_SERVERnestas instruções.
Mover clusters na hierarquia de projetos
Os projetos oferecem um agrupamento lógico de instâncias de serviço. É possível adicionar e remover clusters compartilhados do Kubernetes da hierarquia de projetos do GDC para agrupar seus serviços adequadamente. Não é possível mover clusters padrão na hierarquia de projetos porque eles são limitados a um único projeto.
Anexar projeto a um cluster compartilhado
Ao criar um cluster compartilhado no console do GDC, é necessário anexar pelo menos um projeto antes de implantar cargas de trabalho de contêiner nele. Se você precisar adicionar mais projetos a um cluster atual, siga estas etapas:
Console
- No menu de navegação, selecione Kubernetes Engine > Clusters.
- Na lista de clusters, clique no nome dele 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 Salvar.
API
Crie um 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:
MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal.CLUSTER_NAME: o nome do cluster.PROJECT_NAME: o nome do projeto a que o cluster será vinculado. Cada recursoProjectBindingsó pode ser mapeado para um cluster. Se um projeto precisar de acesso a vários clusters, umProjectBindingexclusivo precisará ser criado para cada um deles.
Terraform
Em um arquivo de configuração do Terraform, insira o snippet de código a seguir 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:
MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal.PROJECT_BINDING_RESOURCE_NAME: o nome do recurso do Terraform da vinculação do projeto, comoCLUSTER_NAME-PROJECT_NAME-binding. Esse nome é usado pelo Terraform para identificar a vinculaçã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, umProjectBindingexclusivo precisará ser criado para cada cluster.PROJECT_NAME: o nome do projeto a ser vinculado. Cada recursoProjectBindingsó pode ser mapeado para um cluster. Se um projeto precisar de acesso a vários clusters, umProjectBindingexclusivo precisará ser criado para cada um deles.
Aplique a nova vinculação de projeto:
terraform apply
Remover um projeto de um cluster compartilhado
Desvincular um projeto de um cluster compartilhado pode causar mudanças significativas, como a exclusão de cargas de trabalho em execução no cluster. Entenda as consequências antes de separar um projeto de um cluster compartilhado.
Para separar um projeto de um cluster compartilhado, siga estas etapas:
Console
- No menu de navegação, selecione Kubernetes Engine > Clusters.
- Clique no cluster na lista para abrir a página Detalhes do cluster.
- Clique em delete Desanexar para o projeto que você quer desanexar do cluster.
API
Exclua o recurso
ProjectBindingque vincula o projeto e o cluster:kubectl --kubeconfig MANAGEMENT_API_SERVER delete projectbinding \ CLUSTER_NAME-PROJECT_NAME -n platformSubstitua:
MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal.CLUSTER_NAME: o nome do cluster.PROJECT_NAME: o nome do projeto a ser desvinculado do cluster.
Terraform
Exclua o recurso de vinculação do projeto:
terraform destroy -target kubernetes_manifest.PROJECT_BINDING_RESOURCE_NAMESubstitua
PROJECT_BINDING_RESOURCE_NAMEpelo nome do recurso do Terraform da vinculação de projeto a ser excluída, comoCLUSTER_NAME-PROJECT_NAME-binding. Esse nome é usado pelo Terraform para identificar a vinculação do projeto e não é usado pelo GDC.
Ver todos os clusters em um projeto ou organização
É possível conferir todos os clusters do Kubernetes disponíveis em um projeto ou organização, incluindo status, versões do Kubernetes e outros detalhes.
Como os clusters do Kubernetes são um recurso zonal, só é possível listar clusters por zona.
Console
No seletor de projetos, selecione seu projeto ou organização.
Os clusters padrão são definidos no escopo do projeto, e os compartilhados são definidos no escopo da organização. Selecione o escopo correto para conferir o tipo de cluster do Kubernetes adequado.
No menu de navegação, selecione Kubernetes Engine > Clusters.
Todos os clusters compartilhados disponíveis na organização com os respectivos status e outras informações são mostrados:

gdcloud
Liste os clusters do Kubernetes disponíveis na zona:
gdcloud clusters listO resultado será o 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 na zona:
kubectl get clusters.cluster.gdc.goog -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVERSubstitua:
MANAGEMENT_API_SERVER: o caminho do kubeconfig do servidor de API zonal.KUBERNETES_CLUSTER_NAMESPACE: o namespace do cluster. Para clusters compartilhados, use o namespaceplatform. Para clusters padrão, use o namespace do projeto do cluster.
O resultado será o seguinte:
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
Listar as versões disponíveis do Kubernetes para um cluster
É possível listar as versões disponíveis do Kubernetes na sua zona do GDC para verificar os recursos do Kubernetes que podem ser acessados no cluster.
Liste as versões disponíveis do Kubernetes na sua zona:
kubectl get userclustermetadata.upgrade.private.gdc.goog \ -o=custom-columns=K8S-VERSION:.spec.kubernetesVersion \ --kubeconfig MANAGEMENT_API_SERVERSubstitua
MANAGEMENT_API_SERVERpelo arquivo kubeconfig do servidor da API zonal do cluster.A saída será assim:
K8S-VERSION 1.25.10-gke.2100 1.26.5-gke.2100 1.27.4-gke.500
Ver propriedades atualizáveis
Para cada cluster do Kubernetes, um conjunto de propriedades está disponível para mudança após a criação. Só é possível mudar as propriedades mutáveis que estão no spec do recurso personalizado Cluster. Nem todas as propriedades em spec podem ser atualizadas depois que o cluster é provisionado. Para conferir essas propriedades atualizáveis,
siga estas etapas:
Console
No menu de navegação, selecione Kubernetes Engine > Clusters.
Na lista de clusters do Kubernetes, clique no nome de um cluster para conferir as propriedades dele.
As propriedades editáveis têm um ícone edit Editar.
API
Confira a lista de propriedades da especificação
Clustere os valores válidos correspondentes a cada propriedade:kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig MANAGEMENT_API_SERVERSubstitua
MANAGEMENT_API_SERVERpelo caminho do kubeconfig do servidor de API zonal.O resultado será o 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 essas configurações usando o console do GDC ou a CLI kubectl. Por exemplo, é possível redimensionar um pool de nós.
A seguir
- Visão geral do cluster do Kubernetes
- Alta disponibilidade para seus apps
- Configurações do cluster do Kubernetes