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
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.
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:
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
Registe os seus clusters numa frota. O ID do projeto especificado no comando
bmctl create config
é adicionado automaticamente ao campogkeConnect.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
egkeConnectRegisterServiceAccountKeyPath
correspondentes do ficheiro de configuração do cluster.
Altere a configuração para especificar um tipo de cluster de
standalone
em vez deadmin
. Se quiser ativar o perfil de limite para minimizar o consumo de recursos, especifiqueprofile: 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
(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.
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.
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ão32-250
para clusters de HA e64-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.