Crie clusters autónomos

Esta página mostra como criar um cluster autónomo, que é um cluster de gestão automática que executa cargas de trabalho. Os clusters autónomos não gerem outros clusters, o que elimina a necessidade de executar um cluster de administrador separado em cenários com restrições de recursos. Além disso, os clusters autónomos oferecem dois perfis de instalação à sua escolha:

  • Predefinição: o perfil predefinido tem requisitos de recursos limitados.
  • Limite: o perfil de limite reduziu significativamente os requisitos de recursos do sistema e é recomendado para dispositivos de limite com restrições de recursos elevadas.

Antes de criar um cluster autónomo, considere a compensação entre a redução de recursos e a segurança geral. Uma vez que os clusters autónomos se gerem a si próprios, a execução de cargas de trabalho no mesmo cluster aumenta o risco de expor dados administrativos confidenciais, como chaves SSH.

Pré-requisitos

Antes de criar um cluster autónomo, certifique-se do seguinte:

  • A versão mais recente do bmctl é transferida (gs://anthos-baremetal-release/bmctl/1.33.100-gke.89/linux-amd64/bmctl) do Cloud Storage.
  • A estação de trabalho que executa o bmctl tem conectividade de rede com todos os nós no cluster autónomo de destino.
  • A estação de trabalho que executa o bmctl tem conetividade de rede com o VIP do plano de controlo do cluster autónomo de destino.
  • A chave SSH usada para criar o cluster autónomo está disponível para o root ou existe acesso de utilizador SUDO em todos os nós no cluster autónomo de destino.
  • A conta de serviço de registo de associação está configurada para utilização com o Connect.

Ative o SELinux

Se quiser ativar o SELinux para proteger os seus contentores, tem de se certificar de que o SELinux está ativado no modo Enforced em todas as suas máquinas anfitriãs. A partir da versão 1.9.0 ou posterior do Google Distributed Cloud, pode ativar ou desativar o SELinux antes ou depois da criação ou das atualizações do cluster. O SELinux está ativado por predefinição no Red Hat Enterprise Linux (RHEL). Se o SELinux estiver desativado nas suas máquinas anfitriãs ou não tiver a certeza, consulte o artigo Proteger os contentores com o SELinux para obter instruções sobre como o ativar.

O Google Distributed Cloud suporta o SELinux apenas em sistemas RHEL.

Crie um cluster autónomo

Pode criar um cluster autónomo com um único plano de nó de controlo através do comando bmctl. Este tipo de configuração reduz o consumo de recursos, mas não oferece elevada disponibilidade (HA) e o cluster resultante tem um único ponto de falha.

Também pode criar um cluster autónomo de HA. No modo de HA, se um nó falhar, os outros substituem-no. Para criar um cluster autónomo de HA, tem de especificar, pelo menos, três nós para o plano de controlo.

Normalmente, o comando bmctl pode ser executado numa estação de trabalho separada ou num dos nós do cluster autónomo. No entanto, se estiver a criar um cluster autónomo com o perfil de limite ativado e tiver os recursos mínimos necessários configurados, recomendamos que execute o bmctl numa estação de trabalho separada.

Inicie sessão no gcloud

  1. Inicie sessão no gcloud como utilizador:

    gcloud auth application-default login
    

    Tem de ter a função de proprietário ou editor do projeto para usar as funcionalidades de ativação automática da API e de criação de contas de serviço descritas nas secções seguintes.

    Também pode adicionar as seguintes funções do IAM ao utilizador:

    • Administrador da conta de serviço
    • Administrador da chave da conta de serviço
    • Administrador de IAM de projetos
    • Leitor do Compute
    • Administrador de utilização do serviço

    Em alternativa, se já tiver uma conta de serviço com essas funções, execute o seguinte comando:

    export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
    

    Substitua JSON_KEY_FILE pelo caminho para o ficheiro JSON da chave da conta de serviço.

  2. Obtenha o Google Cloud ID do projeto para usar com a criação de clusters:

    export CLOUD_PROJECT_ID=$(gcloud config get-value project)
    

Crie um ficheiro de configuração de cluster autónomo

Depois de iniciar sessão na CLI gcloud e ter o projeto configurado, pode criar o ficheiro de configuração do cluster com o comando bmctl. Neste exemplo, todas as contas de serviço são criadas automaticamente pelo comando bmctl create config:

bmctl create config -c STANDALONE_CLUSTER_NAME --enable-apis \
    --create-service-accounts --project-id=$CLOUD_PROJECT_ID

Substitua o seguinte:

  • STANDALONE_CLUSTER_NAME com o nome do cluster autónomo que quer criar.

Exemplo

O comando seguinte cria um ficheiro de configuração para um cluster autónomo denominado standalone1 associado ao ID do projeto my-gcp-project:

bmctl create config -c standalone1 --create-service-accounts --project-id=my-gcp-project

O ficheiro é escrito em bmctl-workspace/standalone1/standalone1.yaml.

Em alternativa à ativação automática das APIs e à criação de contas de serviço, também pode fornecer as suas contas de serviço existentes se tiver as autorizações de IAM adequadas. Desta forma, pode ignorar a criação automática da conta de serviço no passo anterior no comando bmctl:

bmctl create config -c standalone1

Edite o ficheiro de configuração do cluster

Agora que tem um ficheiro de configuração do cluster, faça as seguintes alterações:

  1. Adicione a chave privada de SSH para aceder aos nós do cluster autónomo:

    # bmctl configuration variables. Because this section is valid YAML but not a valid Kubernetes
    # resource, this section can only be included when using bmctl to
    # create the initial admin/hybrid cluster. Afterwards, when creating user clusters by directly
    # applying the cluster and node pool resources to the existing cluster, you must remove this
    # section.
    gcrKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json
    sshPrivateKeyPath: /path/to/your/ssh_private_key
    gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-connect.json
    gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-register.json
    cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-cloud-ops.json
    
  2. Registe os seus clusters numa frota. O ID do projeto especificado no comando bmctl create config é adicionado automaticamente ao campo gkeConnect.projectID no ficheiro de configuração do cluster. Este projeto é denominado projeto anfitrião da frota.

    • Se criou o ficheiro de configuração através das funcionalidades de criação de contas de serviço e ativação automática da API, pode ignorar este passo.
    • Se criou o ficheiro de configuração sem usar as funcionalidades de ativação automática da API e de criação de contas de serviço, consulte as chaves JSON da conta de serviço transferidas nos campos gkeConnectAgentServiceAccountKeyPath e gkeConnectRegisterServiceAccountKeyPath correspondentes do ficheiro de configuração do cluster.
  3. Altere a configuração para especificar um tipo de cluster de standalone em vez de admin. Se quiser ativar o perfil de limite para minimizar o consumo de recursos, especifique profile: edge:

    spec:
      # Cluster type. This can be:
      #   1) admin:  to create an admin cluster. This can later be used to create user clusters.
      #   2) user:   to create a user cluster. Requires an existing admin cluster.
      #   3) hybrid: to create a hybrid cluster that runs admin cluster components and user workloads.
      #   4) standalone: to create a cluster that manages itself, runs user workloads, but does not manage other clusters.
      type: standalone
      # Edge profile minimizes the resource consumption of Google Distributed Cloud. It is only available for standalone clusters.
      profile: edge
    
  4. (Opcional) Altere a configuração para especificar um plano de controlo de vários nós e alta disponibilidade. Especifique um número ímpar de nós para poder ter um quórum maioritário para a HA:

      # Control plane configuration
      controlPlane:
        nodePoolSpec:
          nodes:
          # Control plane node pools. Typically, this is either a single machine
          # or 3 machines if using a high availability deployment.
          - address: 10.200.0.4
          - address: 10.200.0.5
          - address: 10.200.0.6
    

    Se tiver um número par de nós temporariamente ao adicionar ou remover nós para manutenção ou substituição, a sua implementação mantém a HA desde que tenha quórum.

  5. No ficheiro de configuração do cluster, preencha ou edite os detalhes de rede do cluster:

    • clusterNetwork.pods.cidrBlocks: intervalo de endereços IP na notação de blocos CIDR para utilização por parte dos pods. O valor inicial recomendado, que é pré-preenchido no ficheiro de configuração do cluster gerado, é 192.168.0.0/16.

    • clusterNetwork.services.cidrBlocks: intervalo de endereços IP na notação de blocos CIDR para utilização pelo serviço. O valor inicial recomendado, que está pré-preenchido no ficheiro de configuração do cluster gerado, é 10.96.0.0/20.

    • loadBalancer.vips.controlPlaneVIP: o endereço IP virtual (VIP) do servidor da API Kubernetes do cluster.

    • loadBalancer.vips.ingressVIP: o endereço VIP a usar como endereço externo para o proxy de entrada.

    • loadBalancer.addressPools.addresses:: 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.

  6. Especifique a densidade de pods dos nós do cluster:

    ....
    # NodeConfig specifies the configuration that applies to all nodes in the cluster.
    nodeConfig:
      # podDensity specifies the pod density configuration.
      podDensity:
        # maxPodsPerNode specifies at most how many pods can be run on a single node.
        maxPodsPerNode: 250
    ....
    

    Para clusters autónomos, os valores permitidos para maxPodsPerNode são 32-250 para clusters de HA e 64-250 para clusters sem HA. O valor predefinido, se não for especificado, é 110. Não é possível atualizar este valor depois de criar o cluster.

    A densidade de pods também é limitada pelos recursos de IP disponíveis do cluster. Para ver detalhes, consulte Redes de pods.

Crie o cluster autónomo com a configuração do cluster

Use o comando bmctl para implementar o cluster autónomo:

bmctl create cluster -c CLUSTER_NAME

Substitua CLUSTER_NAME pelo nome do cluster que criou na secção anterior.

O exemplo seguinte mostra o comando para criar um cluster denominado standalone1:

bmctl create cluster -c standalone1

Exemplos de configurações de clusters autónomos

Por exemplo, para ver configurações de clusters autónomos, consulte Clusters autónomos nos Exemplos de configuração de clusters.