Esta página descreve como criar um cluster do GKE na AWS. Também pode criar uma VPC e um cluster com o Terraform.
Esta página destina-se a administradores, arquitetos e operadores que querem configurar, monitorizar e gerir a infraestrutura na nuvem. Para saber mais sobre as funções comuns e as tarefas de exemplo que referimos no conteúdo, consulte o artigo Funções e tarefas comuns do utilizador do GKE. Google Cloud
Antes de começar
Antes de criar um cluster, tem de concluir os pré-requisitos. Em particular, tem de fornecer os seguintes recursos:
- Uma VPC da AWS onde o cluster vai ser executado.
- Até três sub-redes da AWS para as três réplicas do plano de controlo. Cada um tem de estar numa zona de disponibilidade da AWS diferente.
- A função do IAM da AWS que o GKE na AWS assume quando gere o seu cluster. Isto requer um conjunto específico de autorizações da IAM.
- Chaves CMK simétricas do KMS para encriptação em repouso de dados do cluster (etcd) e configuração.
- O perfil da instância do AWS IAM para cada réplica do plano de controlo. Isto requer um conjunto específico de autorizações de IAM.
- Um par de chaves SSH do EC2 (opcional) se precisar de acesso SSH às instâncias do EC2 que executam cada réplica do plano de controlo.
É da sua responsabilidade criar e gerir estes recursos, que podem ser partilhados entre todos os seus clusters do GKE. Todos os outros recursos da AWS subjacentes ao âmbito do cluster são geridos pelo GKE na AWS.
Selecione intervalos CIDR para o seu cluster
Quando cria um cluster no GKE na AWS, tem de fornecer intervalos de endereços IPv4 para usar em pods e serviços.
Estes intervalos de IP são especificados através da notação Classless Inter-Domain Routing (CIDR), por exemplo, 100.64.0.0/16
.
Intervalos recomendados
Recomendamos os seguintes intervalos CIDR para serviços e pods:
- Serviços: 100.64.0.0/16
- Pods: 100.96.0.0/11
Estes intervalos são suficientemente grandes para que possa aumentar o seu cluster sem problemas.
As secções seguintes fornecem mais detalhes.
Detalhes sobre a seleção de intervalos
O GKE on AWS usa uma rede de sobreposição para pods e serviços, pelo que os intervalos de IP destas redes não têm de ser encaminháveis na VPC. Todos os intervalos de IP que usar têm de ter disponibilidade garantida. Para mais informações, consulte o artigo Dataplane V2.
Os intervalos de IP do pod e do serviço podem sobrepor-se à rede VPC, desde que nenhum deles inclua os intervalos de IP do plano de controlo ou da sub-rede do conjunto de nós.
O intervalo de IPs do pod e do serviço tem de estar dentro de um dos seguintes intervalos de IPs privados:
10.0.0.0/8
,172.16.0.0/12
,192.168.0.0/16
: endereços IP privados (RFC 1918)100.64.0.0/10
— Espaço de endereço partilhado (RFC 6598)192.0.0.0/24
— Atribuições de protocolos da IETF (RFC 6890)192.0.2.0/24
,198.51.100.0/24
,203.0.113.0/24
: documentação (RFC 5737)192.88.99.0/24
— Relé IPv6 para IPv4 (descontinuado) (RFC 7526)198.18.0.0/15
— Testes de referência (RFC 2544)
Recomendamos intervalos de IPs dentro de 100.64.0.0/10
(RFC 6598). Este intervalo está reservado para NAT de nível de operadora, que provavelmente não é usado na sua VPC.
Por exemplo, a seguinte é uma configuração válida em que as redes de nós, serviços e pods não se sobrepõem (a VPC está a usar endereços IP privados RFC 1918, enquanto as redes de serviços e pods estão sobrepostas em IPs privados RFC 6598).
- Rede da VPC:
10.0.0.0/16
,172.16.1.0/24
,172.16.2.0/24
- Rede de pods:
100.65.0.0/16
- Rede de serviços:
100.66.0.0/16
A seguinte também é uma configuração válida, apesar de as redes de pods e serviços se sobreporem à rede da VPC, uma vez que não existe sobreposição com as réplicas do plano de controlo.
- Rede da VPC:
10.0.0.0/16
- Rede de pods:
10.0.1.0/24
- Rede de serviços:
10.0.2.0/24
- Sub-redes da réplica do plano de controlo:
10.0.3.0/24
,10.0.4.0/24
,10.0.5.0/24
A seguinte configuração é inválida porque o intervalo de IPs do pod sobrepõe-se à rede do plano de controlo. Esta sobreposição pode impedir que as cargas de trabalho comuniquem com a réplica do plano de controlo na rede VPC:
- Rede da VPC:
10.0.0.0/16
- Rede de pods:
10.0.1.0/24
- Rede de serviços:
10.1.0.0/24
- Sub-redes da réplica do plano de controlo:
10.0.1.0/24
,10.0.2.0/24
,10.0.3.0/24
Detalhes acerca do intervalo de endereços do pod
O Kubernetes atribui endereços a objetos Pod a partir do intervalo de endereços do Pod. O intervalo de pods de um cluster é dividido em intervalos mais pequenos para cada nó. Quando um pod é agendado num nó específico, o Kubernetes atribui um endereço IP do pod a partir do intervalo do nó.
Para calcular o tamanho do intervalo de endereços do Pod, tem de estimar o número de nós que quer no cluster e o número de Pods que quer executar em cada nó.
A tabela seguinte fornece recomendações de tamanho para intervalos CIDR de pods com base no número de nós e pods que pretende executar.
Tabela de intervalos de endereços de pods
Intervalo de endereços do pod | Máximo de endereços IP do agrupamento | Máximo de nós | Agrupamentos máximos |
---|---|---|---|
/24 Intervalo de endereços de pod mais pequeno possível |
256 endereços | 1 nó | 110 pods |
/23 | 512 endereços | 2 nós | 220 agrupamentos |
/22 | 1024 endereços | 4 nós | 440 Pods |
/21 | 2048 endereços | 8 nós | 880 Pods |
/20 | 4096 endereços | 16 nós | 1760 agrupamentos |
/19 | 8192 endereços | 32 nós | 3520 agrupamentos |
/18 | 16 384 endereços | 64 nós | 7040 agrupamentos |
/17 | 32 768 endereços | 128 nós | 14 080 agrupamentos |
/16 | 65 536 endereços | 256 nós | 28 160 agrupamentos |
/15 | 131 072 endereços | 512 nós | 56 320 agrupamentos |
/14 | 262 144 endereços | 1024 nós | 112 640 agrupamentos |
Detalhes sobre o intervalo de moradas de serviço
O Kubernetes atribui endereços IP virtuais para objetos de serviço, por exemplo, equilibradores de carga a partir deste intervalo de endereços.
Para calcular a dimensão do intervalo de endereços de serviço, tem de estimar o número de serviços que quer no cluster.
A tabela seguinte fornece recomendações de tamanho para intervalos CIDR de serviços com base no número de serviços que pretende executar.
Tabela de intervalos de moradas de serviço
Intervalo de moradas de serviço | Número máximo de serviços |
---|---|
/27 O intervalo de endereços de serviço mais pequeno possível |
32 serviços |
/26 | 64 serviços |
/25 | 128 serviços |
/24 | 256 serviços |
/23 | 512 serviços |
/22 | 1024 serviços |
/21 | 2048 serviços |
/20 | 4096 serviços |
/19 | 8192 serviços |
/18 | 16 384 serviços |
/17 | 32 768 serviços |
/16 Maior intervalo de moradas de serviço possível |
65 536 serviços |
Selecione o projeto de anfitrião do Fleet
As frotas são um Google Cloud conceito para organizar clusters em grupos maiores. Com as frotas, pode gerir vários clusters em várias nuvens e aplicar políticas consistentes em todos eles. A API GKE Multi-Cloud regista automaticamente os seus clusters numa frota quando o cluster é criado.
Quando cria um cluster, especifica um projeto de anfitrião da frota a partir do qual o cluster vai ser gerido. Uma vez que o GKE na AWS usa o nome do cluster como o nome de membro da Fleet, tem de garantir que os nomes dos clusters são exclusivos na sua Fleet.
Registo em vários projetos
Se quiser usar um projeto anfitrião da frota diferente do Google Cloud projeto onde o cluster está localizado, tem de aplicar uma associação de política do IAM adicional à conta de serviço do agente de serviço multinuvem. Isto permite que a conta de serviço faça a gestão de frotas com o projeto anfitrião da frota.
Para adicionar o agente do serviço ao seu projeto, execute este comando:
gcloud beta services identity create --service=gkemulticloud.googleapis.com \ --project=CLUSTER_PROJECT_NUMBER
Substitua
CLUSTER_PROJECT_NUMBER
pelo número do seu Google Cloud projeto.Atribua esta associação com o seguinte comando:
gcloud projects add-iam-policy-binding FLEET_PROJECT_ID \ --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@gcp-sa-gkemulticloud.iam.gserviceaccount.com" \ --role="roles/gkemulticloud.serviceAgent"
Substitua o seguinte:
FLEET_PROJECT_ID
: o projeto de alojamento do Fleet Google CloudCLUSTER_PROJECT_NUMBER
: o número do seu Google Cloud projeto
O nome da conta do agente do serviço multinuvem tem o seguinte formato:
service-CLUSTER_PROJECT_NUMBER@gcp-sa-gkemulticloud.iam.gserviceaccount.com
.
Pode encontrar as suas contas de serviço na página Google Cloud consola Conta de serviço. Para mais informações sobre como encontrar o número do projeto, consulte o artigo Identificar projetos.
Crie o seu cluster
Use o seguinte comando para criar o cluster no GKE na AWS. Para mais informações sobre este comando, incluindo os respetivos parâmetros opcionais, consulte a página de referência gcloud container aws.
gcloud container aws clusters create CLUSTER_NAME \
--aws-region AWS_REGION \
--location GOOGLE_CLOUD_LOCATION \
--cluster-version CLUSTER_VERSION \
--fleet-project FLEET_PROJECT \
--vpc-id VPC_ID \
--subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \
--pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS \
--service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS \
--role-arn API_ROLE_ARN \
--database-encryption-kms-key-arn DB_KMS_KEY_ARN \
--admin-users ADMIN_USERS_LIST \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--iam-instance-profile CONTROL_PLANE_PROFILE \
--tags "Name=CLUSTER_NAME-cp"
Substitua o seguinte:
CLUSTER_NAME
: o nome do cluster escolhidoAWS_REGION
: a região da AWS na qual criar o clusterGOOGLE_CLOUD_LOCATION
: o nome da Google Cloud localização a partir da qual este cluster vai ser gerido, conforme definido nas Google Cloud regiões de gestão.CLUSTER_VERSION
: a versão do Kubernetes a instalar no seu clusterFLEET_PROJECT
: o projeto anfitrião do Fleet onde o cluster vai ser registado. Se quiser gerir este cluster a partir de outro Google Cloud projeto, consulte o artigo Registo entre projetos.VPC_ID
: o ID da VPC da AWS para este clusterCONTROL_PLANE_SUBNET_1
,CONTROL_PLANE_SUBNET_2
,CONTROL_PLANE_SUBNET_3
: os IDs das sub-redes das três instâncias do plano de controlo do clusterPOD_ADDRESS_CIDR_BLOCKS
: o intervalo de endereços CIDR para os pods do seu clusterSERVICE_ADDRESS_CIDR_BLOCKS
: o intervalo de endereços CIDR para os serviços do clusterAPI_ROLE_ARN
: o ARN da função da API GKE Multi-CloudCONTROL_PLANE_PROFILE
: o perfil da instância do IAM associada ao cluster. Para ver detalhes sobre como atualizar um perfil de instância do IAM, consulte o artigo Atualize o perfil de instância do AWS IAM.DB_KMS_KEY_ARN
: o nome de recurso da Amazon (ARN) da chave do AWS KMS para encriptar os segredos do clusterCONFIG_KMS_KEY_ARN
: o Amazon Resource Name (ARN) da chave do AWS KMS para encriptar os dados do utilizadorADMIN_USERS_LIST
(opcional): uma lista separada por vírgulas dos endereços de email dos utilizadores aos quais conceder privilégios administrativos. Por exemplo, "kai@example.com,hao@example.com,kalani@example.com". A predefinição é o utilizador que cria o cluster
Se estiver presente, o parâmetro --tags
aplica a etiqueta da AWS especificada a todos os recursos da AWS subjacentes geridos pelo GKE na AWS. Este exemplo etiqueta os nós do plano de controlo com o nome do cluster ao qual pertencem.
Não pode executar o SSH nestes nós do plano de controlo, a menos que especifique um par de chaves SSH com a flag --ssh-ec2-key-pair
.
Para ver todas as versões do Kubernetes suportadas numa determinada Google Cloud localização, execute o seguinte comando.
gcloud container aws get-server-config --location GCP_LOCATION
Autorize o Cloud Logging / Cloud Monitoring
Para que o GKE on AWS crie e carregue registos do sistema e métricas para o Google Cloud, tem de ser autorizado.
Para autorizar a identidade da carga de trabalho do Kubernetes gke-system/gke-telemetry-agent
a escrever registos no Google Cloud Logging e métricas no Google Cloud Monitoring,
execute este comando:
gcloud projects add-iam-policy-binding GOOGLE_PROJECT_ID \
--member="serviceAccount:GOOGLE_PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
--role=roles/gkemulticloud.telemetryWriter
Substitua GOOGLE_PROJECT_ID
pelo ID do projeto do Google Cloud cluster.
Esta associação de IAM concede acesso a todos os clusters no projeto Google Cloud project para carregar registos e métricas. Só tem de o executar depois de criar o primeiro cluster para o projeto.
A adição desta associação de IAM falha, a menos que tenha sido criado, pelo menos, um cluster no seu projeto Google Cloud . Isto deve-se ao facto de o Workload Identity Pool a que se refere (GOOGLE_PROJECT_ID.svc.id.goog
) não ser aprovisionado até à criação do cluster.
O que se segue?
- Crie um node pool.
- Configure o acesso ao cluster para o kubectl.
- Experimente o Início rápido para lançar a sua primeira carga de trabalho.
- Leia a documentação de referência para
gcloud container clusters create
. - Teve problemas ao criar um cluster? Consulte a secção Resolução de problemas para mais informações.