Crie clusters básicos

Esta página é a segunda parte de um guia que explica a utilização do Google Distributed Cloud (apenas software) em hardware físico (anteriormente conhecido como Google Distributed Cloud Virtual, anteriormente conhecido como clusters do Anthos em hardware físico) para criar uma pequena instalação de prova de conceito de clusters do GKE no seu hardware físico. A primeira parte, Configure uma infraestrutura mínima, mostra-lhe como configurar o hardware, planear endereços IP e configurar a infraestruturaGoogle Cloud necessária. Este documento baseia-se na configuração e no planeamento da secção anterior e mostra-lhe como criar um cluster de administrador e um cluster de utilizador. Em seguida, pode criar um serviço e uma entrada.

Esta página destina-se a administradores, arquitetos e operadores que configuram, monitorizam e gerem o ciclo de vida da infraestrutura tecnológica subjacente. Para saber mais sobre as funções comuns e as tarefas de exemplo que referimos no Google Cloud conteúdo, consulte Funções e tarefas comuns de utilizador do GKE.

Este guia ajuda a criar uma instalação mínima do Google Distributed Cloud. Esta instalação mínima pode não ser adequada para as suas necessidades de produção reais e exemplos de utilização. Para obter informações sobre instalações de produção, consulte os guias de instalação.

Antes de começar

  1. Certifique-se de que configurou o hardware e planeou os seus endereços IP conforme descrito na parte anterior deste guia, Configure a infraestrutura mínima. Em alternativa, use o planeador de requisitos de rede na secção Pré-requisitos do fluxo Crie um cluster de administrador bare metal na Google Cloud consola.

  2. Se quiser usar o Terraform para criar o cluster de utilizadores, precisa do Terraform na sua estação de trabalho de administrador ou noutro computador.

    1. Certifique-se de que tem os componentes mais recentes da CLI do Google Cloud instalados:

      gcloud components update
      
  3. Siga estes passos para ativar e usar a API GKE On-Prem:

    1. Ative a API no seu projeto:

      gcloud services enable \
          --project PROJECT_ID \
          gkeonprem.googleapis.com
      

      Substitua PROJECT_ID pelo ID do projeto do projeto de anfitrião da sua frota.

      Se receber um erro PERMISSION_DENIED, verifique novamente o ID do projeto que introduziu. Se o ID do projeto estiver correto, execute gcloud auth login para iniciar sessão na CLI Google Cloud com a conta que tem acesso ao projeto.

    2. Se esta for a primeira vez que ativa a API GKE On-Prem no seu projeto, tem de inicializar a API. Pode fazê-lo chamando um comando da CLI gcloud que apresenta as versões disponíveis que pode usar para criar um cluster:

      gcloud container bare-metal clusters query-version-config \
          --project=PROJECT_ID \
          --location="us-central1"
      

Vista geral do procedimento

A criação de clusters básicos consiste nestes passos principais:

  1. Reúna informações usadas para especificar a configuração dos seus clusters.

  2. Crie um cluster de administrador para gerir o cluster de utilizadores.

  3. Crie um cluster de utilizadores que possa executar as suas cargas de trabalho.

1. Recolha informações

Use as informações que preparou em Configure a infraestrutura mínima ou do planeador de rede para preencher cada marcador de posição na tabela seguinte. Os marcadores de posição correspondem aos valores dos campos nos ficheiros de configuração do cluster para a instalação mínima de um cluster de administrador e um cluster de utilizador. Alguns marcadores de posição estão definidos para os valores pré-preenchidos do ficheiro de configuração do cluster gerado, mas todos os marcadores de posição são editáveis.

Informações básicas do cluster
O nome do cluster de administrador que está a criar. A localização e a nomenclatura dos artefactos do cluster na estação de trabalho do administrador baseiam-se no nome do cluster. O espaço de nomes do cluster é derivado do nome do cluster. ADMIN_CLUSTER_NAME
O nome do cluster de utilizadores que está a criar. A localização e a nomenclatura dos artefactos do cluster na estação de trabalho do administrador baseiam-se no nome do cluster. O espaço de nomes do cluster é derivado do nome do cluster. USER_CLUSTER_NAME
A versão do bmctl que transferiu na primeira parte deste guia. CLUSTER_VERSION
Informações da conta
O caminho para o ficheiro de chave privada SSH na sua estação de trabalho de administrador. Por predefinição, o caminho é
/home/USERNAME/.ssh/id_rsa.
SSH_PRIVATE_KEY_PATH
O ID do Google Cloud projeto que quer usar para associar o cluster a Google Cloud e ver registos e métricas. Este projeto também é denominado projeto anfitrião da frota. PROJECT_ID
O endereço de email associado à sua Google Cloud conta. Por exemplo: alex@example.com. GOOGLE_ACCOUNT_EMAIL
Endereços IP da máquina do nó
Um endereço IP para o nó do plano de controlo do cluster de administrador. ADMIN_CP_NODE_IP
Um endereço IP para o nó do plano de controlo do cluster de utilizadores. USER_CP_NODE_IP
Um endereço IP para o nó de trabalho do cluster de utilizadores. USER_WORKER_NODE_IP
Endereços IP virtuais
VIP para o servidor da API Kubernetes do cluster de administrador. ADMIN_CP_VIP
VIP para o servidor da API Kubernetes do cluster de utilizador. USER_CP_VIP
Um VIP para usar como endereço externo para o proxy de entrada. USER_INGRESS_VIP
Intervalo de dez endereços IP para utilização como endereços IP externos para serviços do tipo LoadBalancer. Tenha em atenção que este intervalo inclui o VIP de entrada, que é necessário para o MetalLB. Nenhum outro endereço IP pode sobrepor-se a este intervalo. START_IP-END_IP
CIDRs de pods e serviços
Intervalo de endereços IP na notação de blocos CIDR para utilização por pods no cluster de administração. O valor inicial recomendado, que é pré-preenchido no ficheiro de configuração do cluster gerado, é 192.168.0.0/16. 192.168.0.0/16
Intervalo de endereços IP na notação de blocos CIDR para utilização pelos serviços no cluster de administração. O valor inicial recomendado, que é pré-preenchido no ficheiro de configuração do cluster gerado, é 10.96.0.0/20. 10.96.0.0/20
Intervalo de endereços IP na notação de blocos CIDR para utilização por pods no cluster de utilizadores. O valor inicial recomendado, que é pré-preenchido no ficheiro de configuração do cluster gerado e é o valor predefinido na consola, é 192.168.0.0/16. 192.168.0.0/16
Intervalo de endereços IP na notação de blocos CIDR para utilização pelos serviços no cluster de utilizadores. O valor inicial recomendado, que é pré-preenchido no ficheiro de configuração do cluster gerado e é o valor predefinido na consola, é 10.96.0.0/20. 10.96.0.0/20

2. Crie um cluster de administrador

Os passos seguintes criam um cluster de administrador para uma instalação mínima de um cluster de administrador e de um cluster de utilizador. Certifique-se de que forneceu valores para cada marcador de posição na tabela na secção Recolher informações anterior antes de continuar.

Quando a API GKE On-Prem (gkeonprem.googleapis.com) está ativada para o seu projeto, os clusters criados recentemente são inscritos automaticamente na API. A inscrição ocorre mesmo quando spec.gkeOnPremAPI não está especificado no ficheiro de configuração do cluster. A inscrição com esta API alojada pela Google permite-lhe gerir o ciclo de vida do cluster através da consola ou da CLI gcloud.Google CloudGoogle Cloud

Para desativar a inscrição automática, remova o comentário da secção spec.gkeOnPremAPI no ficheiro de configuração do cluster e defina spec.gkeOnPremAPI.enabled como false antes de criar o cluster. O campo spec.gkeOnPremAPI.enabled é mutável, pelo que pode anular a inscrição do cluster em qualquer altura após a sua criação.

Para criar um cluster de administrador para a instalação mínima:

  1. Defina as credenciais predefinidas que o Google Distributed Cloud pode usar para criar o cluster com o seguinte comando:

    gcloud auth application-default login
  2. Para gerar um ficheiro de configuração do cluster, execute o seguinte comando a partir do diretório /baremetal na estação de trabalho do administrador:

    bmctl create config -c ADMIN_CLUSTER_NAME \
        --enable-apis --create-service-accounts --project-id=PROJECT_ID
  3. Valide o ficheiro de configuração do cluster de administrador:

    O ficheiro de configuração do cluster seguinte é preenchido com os valores que introduziu na tabela de planeamento na secção anterior. Além dos valores que introduziu, tenha em atenção as seguintes diferenças em relação ao ficheiro de configuração gerado:

    • Os comentários foram removidos desta amostra para melhorar a legibilidade.
    • A especificação NodePool foi removida. Não são permitidos nós de trabalho para um cluster de administrador.
    gcrKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-gcr.json
    sshPrivateKeyPath: SSH_PRIVATE_KEY_PATH
    gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-connect.json
    gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-register.json
    cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-cloud-ops.json
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-ADMIN_CLUSTER_NAME
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: ADMIN_CLUSTER_NAME
      namespace: cluster-ADMIN_CLUSTER_NAME
    spec:
      type: admin
      profile: default
      anthosBareMetalVersion: CLUSTER_VERSION
      gkeConnect:
        projectID: PROJECT_ID
      controlPlane:
        nodePoolSpec:
          nodes:
          - address: ADMIN_CP_NODE_IP
      clusterNetwork:
        pods:
          cidrBlocks:
          - 192.168.0.0/16
        services:
          cidrBlocks:
          - 10.96.0.0/20
      loadBalancer:
        mode: bundled
        ports:
          controlPlaneLBPort: 443
        vips:
          controlPlaneVIP: ADMIN_CP_VIP
      clusterOperations:
        projectID: PROJECT_ID
        location: us-central1
      storage:
        lvpNodeMounts:
          path: /mnt/localpv-disk
          storageClassName: local-disks
        lvpShare:
          path: /mnt/localpv-share
          storageClassName: local-shared
          numPVUnderSharedPath: 5
      nodeConfig:
        podDensity:
          maxPodsPerNode: 250
      # GKEOnPremAPI (Optional) Specify if you wish to explicitly enable/disable the cloud hosted gkeonprem
      # API to enable/disable cluster lifecycle management from gcloud UI and Terraform.
      # gkeOnPremAPI:
        # enabled: false
        # location is the Cloud location for the cluster resource metadata where the cluster will be enrolled.
        # location: us-central1
  4. Substitua o conteúdo do ficheiro de configuração gerado na estação de trabalho do administrador pelo conteúdo do exemplo anterior.

    Abra o ficheiro gerado bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME.yaml e substitua o respetivo conteúdo pelo conteúdo do exemplo que validou no passo anterior.

  5. Para criar o cluster de administrador, execute o seguinte comando a partir do diretório /baremetal na sua estação de trabalho de administrador:

    bmctl create cluster -c ADMIN_CLUSTER_NAME

    O comando bmctl apresenta o resultado no ecrã à medida que executa verificações prévias e cria o cluster. As informações detalhadas são escritas nos registos na pasta baremetal/bmctl-workspace/ADMIN_CLUSTER_NAME/log na estação de trabalho do administrador.

    A criação de clusters pode demorar vários minutos a ser concluída.

  6. Verifique se o cluster foi criado e está em execução:

    kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig \
        get nodes

    Se o cluster estiver em execução, a resposta tem um aspeto semelhante ao seguinte:

    NAME     STATUS  ROLES          AGE  VERSION
    node-01  Ready   control-plane  16h  v1.25.7-gke.1000
  7. Para conceder à sua conta de utilizador a função clusterrole/cluster-admin do Kubernetes no cluster, execute o seguinte comando gcloud:

    gcloud container fleet memberships generate-gateway-rbac \
        --membership=ADMIN_CLUSTER_NAME \
        --role=clusterrole/cluster-admin \
        --users=GOOGLE_ACCOUNT_EMAIL \
        --project=PROJECT_ID \
        --kubeconfig=bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig \
        --context=ADMIN_CLUSTER_NAME-admin@ADMIN_CLUSTER_NAME \
        --apply

    O resultado deste comando é semelhante ao seguinte, que é truncado para facilitar a leitura:

    Validating input arguments.
    Specified Cluster Role is: clusterrole/cluster-admin
    Generated RBAC policy is:
    --------------------------------------------
    ...
    
    Applying the generate RBAC policy to cluster with kubeconfig: /root/bmctl-workspace/<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>/<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>-kubeconfig, context: <var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>-admin@<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>
    Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
    Successfully applied the RBAC policy to cluster.
    

    Entre outras coisas, a política de RBAC permite-lhe iniciar sessão no cluster na Google Cloud consola para ver mais detalhes do cluster.

3. Crie um cluster de utilizadores

Os passos seguintes criam um cluster de utilizadores para um cluster de administrador mínimo e uma instalação de cluster de utilizadores. Certifique-se de que forneceu valores para cada marcador de posição na tabela na secção Recolher informações anterior antes de continuar.

Para criar um cluster de utilizadores para a instalação mínima:

bmctl

Quando a API GKE On-Prem (gkeonprem.googleapis.com) está ativada para o seu projeto, os clusters criados recentemente são inscritos automaticamente na API. A inscrição ocorre mesmo quando spec.gkeOnPremAPI não está especificado no ficheiro de configuração do cluster. Quando o cluster está inscrito com esta API alojada pela Google, pode usar a consola ou a CLI gcloud para gerir o ciclo de vida do cluster. Google CloudGoogle Cloud

Para desativar a inscrição automática, remova o comentário da secção spec.gkeOnPremAPI no ficheiro de configuração do cluster e defina spec.gkeOnPremAPI.enabled como false antes de criar o cluster. O campo spec.gkeOnPremAPI.enabled é mutável, pelo que pode anular a inscrição no cluster em qualquer altura após a sua criação.

  1. Gere um ficheiro de configuração do cluster:

    bmctl create config -c USER_CLUSTER_NAME \
      --project-id=PROJECT_ID
  2. Valide o ficheiro de configuração do cluster de utilizadores:

    O seguinte ficheiro de configuração do cluster é preenchido com os valores que introduziu anteriormente na tabela de planeamento. Além dos valores que introduziu, tenha em atenção as seguintes diferenças em relação ao ficheiro de configuração gerado:

    • Os comentários foram removidos desta amostra para melhorar a legibilidade.
    • O tipo de cluster, spec.type, foi definido como user.
    • O campo spec.clusterSecurity.authorization.clusterAdmin.gcpAccounts foi adicionado para conceder o clusterrole/cluster-admin à sua conta. Entre outras coisas, este campo permite-lhe iniciar sessão no cluster na Google Cloud consola para ver mais detalhes do cluster.
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-USER_CLUSTER_NAME
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: USER_CLUSTER_NAME
      namespace: cluster-USER_CLUSTER_NAME
    spec:
      type: user
      profile: default
      anthosBareMetalVersion: CLUSTER_VERSION
      gkeConnect:
        projectID: PROJECT_ID
      controlPlane:
        nodePoolSpec:
          nodes:
          - address: USER_CP_NODE_IP
      clusterNetwork:
        pods:
          cidrBlocks:
          - 192.168.0.0/16
        services:
          cidrBlocks:
          - 10.96.0.0/20
      loadBalancer:
        mode: bundled
        ports:
          controlPlaneLBPort: 443
        vips:
          controlPlaneVIP: USER_CP_VIP
          ingressVIP: USER_INGRESS_VIP
        addressPools:
        - name: pool1
          addresses:
          - START_IP-END_IP
      clusterOperations:
        projectID: PROJECT_ID
        location: us-central1
      clusterSecurity:
        authorization:
          clusterAdmin:
            gcpAccounts:
            - GOOGLE_ACCOUNT_EMAIL
      storage:
        lvpNodeMounts:
          path: /mnt/localpv-disk
          storageClassName: local-disks
        lvpShare:
          path: /mnt/localpv-share
          storageClassName: local-shared
          numPVUnderSharedPath: 5
      nodeConfig:
        podDensity:
          maxPodsPerNode: 250
      # GKEOnPremAPI (Optional) Specify if you wish to explicitly enable/disable the cloud hosted gkeonprem
      # API to enable/disable cluster lifecycle management from gcloud UI and Terraform.
      # gkeOnPremAPI:
        # enabled: false
        # location is the Cloud location for the cluster resource metadata where the cluster will be enrolled.
        # location: us-central1
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: NodePool
    metadata:
      name: node-pool-1
      namespace: cluster-USER_CLUSTER_NAME
    spec:
      clusterName: USER_CLUSTER_NAME
      nodes:
      - address: USER_WORKER_NODE_IP
    
  3. Substitua o conteúdo do ficheiro de configuração gerado na estação de trabalho do administrador pelo conteúdo do exemplo anterior.

    Abra o ficheiro gerado bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME.yaml e substitua o respetivo conteúdo pelo conteúdo do exemplo que validou no passo anterior.

  4. Crie o cluster de utilizadores:

    bmctl create cluster -c USER_CLUSTER_NAME \
    --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig

    O comando bmctl apresenta o resultado no ecrã à medida que executa verificações prévias e cria o cluster. As informações detalhadas são escritas nos registos na pasta baremetal/bmctl-workspace/USER_CLUSTER_NAME/log na estação de trabalho do administrador.

    A criação de clusters pode demorar vários minutos a ser concluída.

  5. Verifique se o cluster foi criado e está em execução:

    kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-kubeconfig \
      get nodes

    Se o cluster estiver em execução, a resposta tem um aspeto semelhante ao seguinte:

    NAME    STATUS   ROLES           AGE     VERSION
    nuc-3   Ready    control-plane   4m32s   v1.26.2-gke.1001
    nuc-4   Ready    worker          2m2s    v1.26.2-gke.1001

Consola

Siga estes passos para criar um cluster de utilizadores na consola:

  1. Na consola, aceda à página Criar um cluster bare metal.

    Aceda a Crie um cluster bare metal

  2. Certifique-se de que a Google Cloud lista de projetos tem PROJECT_ID selecionado.

  3. Clique em Criar cluster.

  4. Na caixa de diálogo, clique em No local.

  5. Junto a Bare metal, clique em Configurar. A página Pré-requisitos é apresentada.

  6. Em Escolha o tipo de cluster, selecione Criar um cluster de utilizadores para um cluster de administrador existente

  7. Clicar em Seguinte.

Noções básicas sobre clusters

  1. Introduza USER_CLUSTER_NAME como o nome do cluster de utilizadores ou use o valor predefinido.

  2. Certifique-se de que o cluster de administrador recém-criado está selecionado.

  3. Em Localização da API GCP, selecione us-central1.

  4. Em Versão do Google Distributed Cloud, selecione CLUSTER_VERSION ou use a predefinição. Pode usar as predefinições para as restantes definições nesta página.

  5. Clique em Rede na barra de navegação do lado esquerdo.

Redes

  1. Na secção Plano de controlo, introduza o seguinte no campo IP do nó do plano de controlo 1:

    USER_CP_NODE_IP
    
  2. Na secção Balanceador de carga, use o balanceador de carga predefinido, Incluído no MetalLB.

  3. Aceda à secção Novo conjunto de endereços. Introduza o intervalo de endereços IP no campo Intervalo de endereços IP 1:

    10.200.0.51-10.200.0.70
    
  4. Clique em Concluído.

  5. Na secção IPs virtuais, introduza o endereço IP do VIP do plano de controlo:

    USER_CP_VIP
    
  6. Introduza o endereço IP do VIP de entrada:

    USER_INGRESS_VIP
    
  7. Na secção CIDRs de serviços e pods, se não alterou os CIDRs de serviços e pods no planeador, pode usar os predefinidos.

    Se alterou os CIDRs, introduza os CIDRs que quer usar:

    • CIDR de serviço:
    10.96.0.0/20
    
    • CIDR do pod:
    192.168.0.0/16
    
  8. Clique em conjunto predefinido na barra de navegação do lado esquerdo.

Crie um node pool

O cluster tem de ter, pelo menos, um conjunto de nós para nós de trabalho. Um conjunto de nós é um modelo para os grupos de nós de trabalho criados neste cluster.

Introduza o endereço IP do nó de trabalho do cluster de utilizadores no campo Nodes address 1:

USER_WORKER_NODE_IP

Crie o cluster

  1. Clique em Validar e criar para criar o cluster de utilizadores.

    A criação do cluster de utilizadores demora 15 minutos ou mais. A consola apresenta mensagens de estado à medida que valida as definições e cria o cluster.

    Se houver um problema com a configuração, a consola apresenta uma mensagem de erro que deve ser suficientemente clara para corrigir o problema de configuração e tentar novamente criar o cluster.

    Para ver informações adicionais sobre o processo de criação, clique em Mostrar detalhes para apresentar um painel lateral. Clique em para fechar o painel de detalhes.

    Quando o cluster é criado, é apresentado o Estado do cluster: em execução.

  2. Depois de criar o cluster, clique em Clusters para voltar à página Clusters.

CLI gcloud

Esta secção mostra como criar um cluster de utilizadores e um conjunto de nós através da CLI gcloud.

  1. Execute o seguinte comando para criar um cluster de utilizadores:

    gcloud container bare-metal clusters create USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=us-central1 \
      --admin-cluster-membership=ADMIN_CLUSTER_NAME \
      --admin-cluster-membership-project=PROJECT_ID \
      --admin-cluster-membership-location=global \
      --version=CLUSTER_VERSION \
      --admin-users=GOOGLE_ACCOUNT_EMAIL \
      --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
      --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
      --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=START_IP-END_IP' \
      --control-plane-node-configs='node-ip=USER_CP_NODE_IP' \
      --control-plane-vip=USER_CP_VIP \
      --control-plane-load-balancer-port=443 \
      --ingress-vip=USER_INGRESS_VIP \
      --lvp-share-path=/mnt/localpv-share \
      --lvp-share-storage-class=local-shared \
      --lvp-node-mounts-config-path=/mnt/localpv-disk \
      --lvp-node-mounts-config-storage-class=local-disks
    

    O resultado do comando é semelhante ao seguinte:

    Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
    

    No exemplo de saída, a string operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 é o OPERATION_ID da operação de longa duração. Pode saber o estado da operação com o seguinte comando:

    gcloud container bare-metal operations describe OPERATION_ID \
      --project=PROJECT_ID \
      --location=us-central1
    

    A criação do cluster demora cerca de 15 minutos ou mais. À medida que o cluster é criado, pode executar o comando anterior com alguma frequência para obter o estado atual.

    Quando o cluster é criado, vê um resultado semelhante ao seguinte:

    Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/bareMetalClusters/USER_CLUSTER_NAME].
    
  2. Depois de criar o cluster, execute o seguinte comando para criar um conjunto de nós no cluster recém-criado.

    gcloud container bare-metal node-pools create node-pool-1 \
      --cluster=USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=us-central1 \
      --node-configs node-ip=USER_WORKER_NODE_IP

Para mais informações e outros exemplos, consulte o seguinte:

Terraform

Esta secção mostra como criar um cluster de utilizadores e um conjunto de nós com o Terraform.

  1. Criar um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão .tf. Neste guia, o ficheiro chama-se main.tf.

    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    
  2. Valide o recurso do Terraform do cluster de utilizadores:

    O exemplo de recurso do Terraform seguinte é preenchido com os valores que introduziu na tabela de planeamento na secção anterior.

    resource "google_gkeonprem_bare_metal_cluster"  "cluster-basic" {
      provider = google-beta
      name = "USER_CLUSTER_NAME"
      project = "PROJECT_ID"
      location = "us-central1"
      admin_cluster_membership = "projects/PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME"
      bare_metal_version = "CLUSTER_VERSION"
      network_config {
        island_mode_cidr {
          service_address_cidr_blocks = ["10.96.0.0/20"]
          pod_address_cidr_blocks = ["192.168.0.0/16"]
        }
      }
      control_plane {
        control_plane_node_pool_config {
          node_pool_config {
            labels = {}
            operating_system = "LINUX"
            node_configs {
              labels = {}
              node_ip = "USER_CP_NODE_IP"
            }
          }
        }
      }
      load_balancer {
        port_config {
          control_plane_load_balancer_port = 443
        }
        vip_config {
          control_plane_vip = "USER_CP_VIP"
          ingress_vip = "USER_INGRESS_VIP"
        }
        metal_lb_config {
          address_pools {
            pool = "pool1"
            addresses = [
              "START_IP-END_IP"
            ]
            avoid_buggy_ips = true
            manual_assign = true
          }
        }
      }
      storage {
        lvp_share_config {
          lvp_config {
            path = "/mnt/localpv-share"
            storage_class = "local-shared"
          }
          shared_path_pv_count = 5
        }
        lvp_node_mounts_config {
          path = "/mnt/localpv-disk"
          storage_class = "local-disks"
        }
      }
      security_config {
        authorization {
          admin_users {
            username = "GOOGLE_ACCOUNT_EMAIL"
          }
        }
      }
    }
    
    resource "google_gkeonprem_bare_metal_node_pool" "node-pool-default" {
      provider = google-beta
      name =  "node-pool-1"
      bare_metal_cluster = google_gkeonprem_bare_metal_cluster.cluster-basic.name
      project = "PROJECT_ID"
      location = "us-central1"
      node_pool_config {
        operating_system = "LINUX"
        node_configs {
          node_ip = "USER_WORKER_NODE_IP"
        }
      }
    }
    
  3. Copie o recurso do Terraform para main.tf e guarde o ficheiro.

  4. Inicialize e crie o plano do Terraform:

    terraform init
    

    O Terraform instala todas as bibliotecas necessárias, como o Google Cloud fornecedor.

  5. Reveja a configuração e faça alterações, se necessário:

    terraform plan
    
  6. Aplique o plano do Terraform para criar o cluster de utilizadores:

    terraform apply
    

    Quando lhe for pedido, introduza yes.

    Demora cerca de 15 minutos (ou mais, consoante a sua rede) a criar o cluster de utilizadores básico e o node pool.

  7. Para criar um ficheiro kubeconfig para o cluster de utilizadores, execute o seguinte comando na estação de trabalho do administrador:

    bmctl get credentials --cluster USER_CLUSTER_NAME \
    --admin-kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig

    O resultado do comando apresenta o nome do ficheiro kubeconfig para o cluster de utilizadores, por exemplo:

    bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig

    O TIMESTAMP no nome do ficheiro indica a data e a hora em que o ficheiro foi criado.

    Uma vez que este ficheiro contém credenciais de autenticação para o seu cluster, deve armazená-lo num local seguro com acesso restrito.

  8. Verifique se o cluster foi criado e está em execução:

    kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig \
        get nodes

    Se o cluster estiver em execução, a resposta tem um aspeto semelhante ao seguinte:

    NAME    STATUS   ROLES           AGE     VERSION
    nuc-3   Ready    control-plane   4m32s   v1.26.2-gke.1001
    nuc-4   Ready    worker          2m2s    v1.26.2-gke.1001

Para mais informações e outros exemplos, consulte o seguinte:

Estabeleça ligação ao cluster de utilizadores

Independentemente da ferramenta que usou para criar o cluster de utilizadores, o seu endereço de email recebe as políticas de controlo de acesso baseado em funções (CABF) que lhe permitem estabelecer ligação ao cluster com privilégios administrativos completos. O local onde o seu endereço de email é especificado depende da ferramenta:

  • bmctl: o seu endereço de email está incluído na secção clusterSecurity do ficheiro de configuração do utilizador de exemplo.

  • Terraform: o seu endereço de email está incluído na secção security_config do recurso de exemplo google_gkeonprem_bare_metal_cluster.

  • A consola: como criador do cluster, o seu endereço de email é incluído automaticamente na página Noções básicas do cluster na secção Autorização.

Embora apenas o seu endereço de email seja especificado, pode incluir outros endereços de email para conceder acesso administrativo ao cluster a outros utilizadores.

As políticas de RBAC concedidas ao seu endereço de email fazem o seguinte:

  • Conceder-lhe a função clusterrole/cluster-admin do Kubernetes no cluster.

  • Permitir-lhe iniciar sessão no cluster na Google Cloud consola com a sua identidade Google. Pode ver o cluster na página Clusters do GKE na consola.

  • Permite-lhe executar comandos kubectl no seu computador local através do kubeconfig da gateway de ligação.

Para obter o kubeconfig da gateway de ligação, execute os seguintes comandos a partir do seu computador local:

  1. Obtenha a entrada kubeconfig que pode aceder ao cluster através da gateway de ligação.

    gcloud container fleet memberships get-credentials USER_CLUSTER_NAME  \
    --project=PROJECT_ID

    O resultado é semelhante ao seguinte:

    Starting to build Gateway kubeconfig...
    Current project_id: PROJECT_ID
    A new kubeconfig entry "connectgateway_PROJECT_ID_global_USER_CLUSTER_NAME" has been generated and set as the current context.
    
  2. Agora, pode executar comandos kubectl através do gateway de ligação:

    kubectl get nodes
    

    O resultado é semelhante ao seguinte:

    NAME    STATUS   ROLES           AGE     VERSION
    nuc-3   Ready    control-plane   4m32s   v1.26.2-gke.1001
    nuc-4   Ready    worker          2m2s    v1.26.2-gke.1001
    

    Muitos comandos kubectl requerem o kubeconfig para o cluster de administrador. Tem de executar esses comandos na estação de trabalho do administrador.

O que se segue?