Nesta página, mostramos como criar um cluster autônomo, que é um cluster de autogerenciamento que executa cargas de trabalho. Os clusters autônomos não gerenciam outros clusters, eliminando a necessidade de executar um cluster de administrador separado em cenários com recursos restritos. Além disso, os clusters autônomos oferecem dois perfis de instalação:
- Padrão: o perfil padrão tem requisitos de recursos limitados.
- Borda: o perfil de borda reduziu significativamente os requisitos de recursos do sistema e é recomendado para dispositivos perimetrais com altos limites de recursos.
Antes de criar um cluster autônomo, considere a compensação entre os recursos de redução e a segurança geral. Como os clusters autônomos se autogerenciam, a execução de cargas de trabalho no mesmo cluster aumenta o risco de exposição de dados administrativos confidenciais, como chaves SSH.
Pré-requisitos
Antes de criar um cluster autônomo, confira o seguinte:
- O último
bmctl
é transferido por download (gs://anthos-baremetal-release/bmctl/1.30.100-gke.96/linux-amd64/bmctl
) do Cloud Storage. - A estação de trabalho que executa
bmctl
tem conectividade de rede com todos os nós no cluster autônomo de destino. - A estação de trabalho que executa
bmctl
tem conectividade de rede com o VIP do plano de controle do cluster autônomo de destino. - A chave SSH usada para criar o cluster autônomo está disponível para a raiz ou há acesso de usuário SUDO em todos os nós do cluster autônomo de destino.
- A conta de serviço connect-register está configurada para uso com o Connect.
Ativar o SELinux
Se você quiser ativar o SELinux para proteger seus contêineres, verifique se o
SELinux está ativado no modo Enforced
em todas as máquinas host. A partir da versão
1.9.0 ou mais recente do Google Distributed Cloud, é possível ativar ou desativar o SELinux
antes ou depois da criação do cluster ou dos upgrades dele. O SELinux é ativado por
padrão no Red Hat Enterprise Linux (RHEL). Se o SELinux estiver desativado em
suas máquinas host ou se você não tiver certeza, consulte Como proteger seus contêineres usando o SELinux
para instruções sobre como ativá-lo.
O Google Distributed Cloud oferece suporte ao SELinux apenas em sistemas RHEL.
Criar um cluster autônomo
É possível criar um cluster autônomo que tenha um único plano de nós de controle usando
o comando bmctl
. Esse tipo de configuração reduz o consumo de recursos, mas
não fornece alta disponibilidade (HA, na sigla em inglês), e o cluster resultante tem um único
ponto de falha.
Também é possível criar um cluster autônomo de alta disponibilidade. No modo de HA, se um nó falhar, outros assumirão o lugar. Para criar um cluster autônomo de alta disponibilidade, você precisa especificar pelo menos três nós para o plano de controle.
O comando bmctl
normalmente pode ser executado em uma estação de trabalho separada ou em um dos
nós de cluster autônomos. No entanto, se você estiver criando um cluster autônomo
com o perfil de perímetro ativado e tiver os recursos mínimos necessários
configurados, execute bmctl
em uma estação de trabalho separada.
Fazer login no app gcloud
Faça login em
gcloud
como usuário:gcloud auth application-default login
Você precisa ter um papel de proprietário ou editor do projeto para usar os recursos automáticos de ativação da API e de criação de contas de serviço, descritos nas próximas seções.
Também é possível adicionar os seguintes papéis de IAM ao usuário:
- Administrador da conta de serviço
- Administrador da chave da conta de serviço
- Administrador de projetos do IAM
- Leitor do Compute
- Administrador do Service Usage
Como alternativa, se você já tiver uma conta de serviço com esses papéis, execute:
export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
Substitua JSON_KEY_FILE pelo caminho para o arquivo de chave JSON da sua conta de serviço.
Receba o ID do projeto do Google Cloud para usar com a criação do cluster:
export CLOUD_PROJECT_ID=$(gcloud config get-value project)
Criar um arquivo de configuração de cluster autônomo
Depois de fazer login na gcloud CLI e configurar seu projeto, crie o
arquivo 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:
- STANDALONE_CLUSTER_NAME pelo nome do cluster autônomo que você quer criar.
Exemplo
O comando a seguir cria um arquivo de configuração para um cluster autônomo
chamado standalone1
associado ao ID do projeto my-gcp-project
:
bmctl create config -c standalone1 --create-service-accounts --project-id=my-gcp-project
O arquivo é gravado em bmctl-workspace/standalone1/standalone1.yaml
.
Outra opção para ativar automaticamente APIs e criar contas de serviço
é fornecer as contas de serviço atuais se você tiver as
permissões de IAM adequadas.
Ou seja, é possível ignorar a criação automática de conta de serviço na etapa
anterior no comando bmctl
:
bmctl create config -c standalone1
Editar o arquivo de configuração do cluster
Agora que você tem um arquivo de configuração de cluster, faça estas alterações:
Inclua a chave privada SSH para acessar os 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
Registre os clusters em uma frota. O ID do projeto especificado no comando
bmctl create config
é adicionado automaticamente ao campogkeConnect.projectID
no arquivo de configuração do cluster. Esse projeto é chamado de projeto host da frota.- Se você tiver criado o arquivo de configuração usando os recursos automáticos de ativação da API e de criação de contas de serviço, pule esta etapa.
- Se você criou o arquivo de configuração sem usar os recursos de ativação automática de conta
e criação de conta de serviço, faça referência às chaves JSON da conta de serviço
baixada nos campos
gkeConnectAgentServiceAccountKeyPath
egkeConnectRegisterServiceAccountKeyPath
correspondentes do arquivo de configuração do cluster.
Altere a configuração para especificar um tipo de cluster de
standalone
em vez deadmin
. Se você quiser ativar o perfil de borda 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 controle com vários nós e de alta disponibilidade. Especifique um número ímpar de nós para poder ter uma maioria de quórum para 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 você tiver um número par de nós temporariamente durante a adição ou remoção de nós para manutenção ou substituição, sua implantação manterá a alta disponibilidade, desde que você tenha quórum.
No arquivo de configuração do cluster, preencha ou edite o campo de detalhes de rede de cluster:
clusterNetwork.pods.cidrBlocks
: intervalo de endereços IP em notação de bloco CIDR para uso por pods. O valor inicial recomendado, que vem preenchido automaticamente no arquivo de configuração do cluster gerado, é192.168.0.0/16
.clusterNetwork.services.cidrBlocks
: intervalo de endereços IP na notação de bloco CIDR para uso pelo serviço. O valor inicial recomendado, que vem preenchido automaticamente no arquivo 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 ser usado como o externo para o endereço de entrada proxy.loadBalancer.addressPools.addresses:
: intervalo de 10 endereços IP para uso como endereços IP externos para Serviços do tipo LoadBalancer. Observe que esse intervalo inclui o VIP de entrada, que é necessário ao MetalLB. Nenhum outro endereço IP pode se sobrepor a esse 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 alta disponibilidade e64-250
para clusters que não são de alta disponibilidade. Se não for especificado, o valor padrão será110
. Depois que o cluster for criado, esse valor não poderá ser atualizado.A densidade de pods também é limitada pelos recursos de IP disponíveis do cluster. Para detalhes, consulte Rede de pod.
Criar o cluster autônomo com a configuração do cluster
Use o comando bmctl
para implantar o cluster autônomo:
bmctl create cluster -c CLUSTER_NAME
Substitua CLUSTER_NAME pelo nome do cluster que você criou na seção anterior.
Veja a seguir um exemplo do comando para criar um cluster chamado standalone1
:
bmctl create cluster -c standalone1
Exemplos de configurações de cluster independentes
Para exemplos de configurações de cluster independentes, consulte Clusters independentes nas amostras de configuração do cluster.