Crie clusters híbridos

No Google Distributed Cloud, os clusters híbridos desempenham a função dupla de um cluster de administrador e um cluster de utilizador. Executam cargas de trabalho e, ao mesmo tempo, gerem outros clusters e a si próprios.

Os clusters híbridos eliminam a necessidade de executar um cluster de administrador separado em cenários com restrições de recursos e podem oferecer fiabilidade de alta disponibilidade (HA). Num cluster híbrido de HA, se um nó falhar, os outros substituem-no.

Os clusters híbridos são diferentes dos clusters autónomos, pois também podem gerir outros clusters. Os clusters autónomos não podem criar nem gerir outros clusters.

No entanto, quando cria clusters híbridos, existe alguma contrapartida entre a flexibilidade e a segurança. Uma vez que os clusters híbridos se gerem a si próprios, a execução de cargas de trabalho no mesmo cluster aumenta o risco de exposição à segurança de dados administrativos confidenciais, como chaves SSH.

Cria um cluster híbrido com um plano de controlo de alta disponibilidade (HA) através do comando bmctl. O comando bmctl pode ser executado numa estação de trabalho separada ou num dos nós do cluster híbrido.

Pré-requisitos

  • 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 conetividade de rede com todos os nós no cluster híbrido de destino.
  • A estação de trabalho que executa o bmctl tem conetividade de rede com o VIP do plano de controlo do cluster híbrido de destino.
  • A chave SSH usada para criar o cluster híbrido está disponível para o root ou existe acesso de utilizador SUDO em todos os nós no cluster híbrido de destino.
  • A conta de serviço de registo de associação está configurada para utilização com o Connect.

Consulte o início rápido do Google Distributed Cloud para ver instruções passo a passo expandidas sobre como criar um cluster híbrido.

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.

Inicie sessão no gcloud e crie um ficheiro de configuração do cluster

  1. Inicie sessão na CLI gcloud como um utilizador através do comando gcloud auth application-default login:

    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 do ficheiro de chave JSON 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 o ficheiro de configuração do cluster com bmctl

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.

Para criar um ficheiro de configuração de cluster:

  1. A execução do seguinte comando cria o ficheiro de configuração do cluster, cria todas as contas de serviço necessárias e ativa todas as APIs necessárias:

    bmctl create config -c CLUSTER_NAME</var> --enable-apis \
        --create-service-accounts --project-id=CLOUD_PROJECT_ID
    

    Substitua o seguinte:

    • CLUSTER_NAME: o nome do cluster que está a criar.
    • CLOUD_PROJECT_ID: o ID do seu projeto Google Cloud .

    Por predefinição, o ficheiro de configuração é escrito em bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml.

    Se já ativou as APIs e criou contas de serviço, pode criar ficheiros de configuração sem ativar as APIs nem criar contas de serviço. Também não tem de usar a flag --project-id. No entanto, tem de especificar as credenciais no ficheiro de configuração manualmente.

    Para mais informações sobre as opções de comando, consulte create config.

Edite o ficheiro de configuração do cluster

Agora que tem um ficheiro de configuração do cluster, edite-o para fazer as seguintes alterações:

  1. Forneça a chave privada de SSH para aceder aos nós do cluster híbrido:

    # 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 que especificou 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 ativação automática da API e de criação da conta de serviço, pode ignorar este passo.
    • Se criou o ficheiro de configuração sem usar as funcionalidades automáticas de ativação 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 hybrid em vez de admin:

    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: hybrid
    
  4. Altere a configuração para especificar um plano de controlo de alta disponibilidade com vários nós. Quiser especificar 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
    
  5. 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 híbridos, os valores permitidos para maxPodsPerNode são 32-250 para clusters de HA e 64-250 para clusters sem HA. O valor predefinido para maxPodsPerNode, 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 híbrido com a configuração do cluster

Use o comando bmctl para criar o cluster:

bmctl create cluster -c CLUSTER_NAME

Substitua CLUSTER_NAME pelo nome que usou quando criou o ficheiro de configuração do cluster na secção anterior.

O exemplo seguinte mostra o comando para criar um cluster com o nome hybrid1:

bmctl create cluster -c hybrid1

Exemplos de configurações de clusters híbridos

Para ver exemplos de configurações de clusters híbridos, consulte o artigo Clusters híbridos nos exemplos de configuração de clusters.