Esta página descreve como criar um cluster do GKE na AWS. Você também pode criar uma VPC e um cluster com o Terraform .
Esta página é para administradores, arquitetos e operadores que desejam configurar, monitorar e gerenciar a infraestrutura de nuvem. Para saber mais sobre funções comuns e tarefas de exemplo que mencionamos em Google Cloud conteúdo, consulte Funções e tarefas comuns do usuário do GKE Enterprise .
Antes de começar
Antes de criar um cluster, você deve atender aos pré-requisitos . Em particular, você deve fornecer os seguintes recursos:
- Uma VPC da AWS onde o cluster será executado.
- Até três sub-redes da AWS para as três réplicas do plano de controle. Cada uma deve estar em uma Zona de Disponibilidade da AWS diferente.
- A função do IAM da AWS que o GKE na AWS assume ao gerenciar seu cluster. Isso requer um conjunto específico de permissões do IAM .
- Chaves CMK simétricas do KMS para criptografia em repouso de dados de cluster (etcd) e configuração.
- O perfil da instância do AWS IAM para cada réplica do plano de controle. Isso requer um conjunto específico de permissões do IAM .
- Um par de chaves SSH do EC2 (opcional) se você precisar de acesso SSH às instâncias do EC2 que executam cada réplica do plano de controle.
É sua responsabilidade criar e gerenciar esses recursos, que podem ser compartilhados entre todos os seus clusters do GKE. Todos os outros recursos subjacentes da AWS no escopo do cluster são gerenciados pelo GKE na AWS.
Selecione intervalos CIDR para seu cluster
Ao criar um cluster no GKE na AWS, você precisa fornecer intervalos de endereços IPv4 para usar em pods e serviços.
Esses intervalos de IP são especificados usando a notação de roteamento entre domínios sem classes ( 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
- Vagens: 100.96.0.0/11
Esses intervalos são grandes o suficiente para você expandir seu cluster sem problemas.
As seções a seguir fornecem mais detalhes.
Detalhes sobre a seleção de intervalos
O GKE na AWS usa uma rede de sobreposição para pods e serviços, portanto, os intervalos de IP dessas redes não precisam ser roteáveis dentro da VPC. Todos os intervalos de IP que você usar precisam ter disponibilidade garantida. Para mais informações, consulte Dataplane V2 .
Os intervalos de IP do pod e do serviço podem se sobrepor à rede VPC, desde que nenhum deles inclua os intervalos de IP da sub-rede do pool de nós ou do plano de controle.
O intervalo de IP do Pod e do Serviço deve estar dentro de um dos seguintes intervalos de IP 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 compartilhado (RFC 6598) -
192.0.0.0/24
— Atribuições de protocolo 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
— Retransmissão IPv6 para IPv4 (obsoleto) (RFC 7526) -
198.18.0.0/15
— Teste de benchmark (RFC 2544)
-
Recomendamos intervalos de IP dentro de 100.64.0.0/10
(RFC 6598). Este intervalo é reservado para NAT de nível de operadora, que provavelmente não é usado na sua VPC.
Por exemplo, a seguir está uma configuração válida em que as redes de Pod, Serviço e Nó não se sobrepõem (a VPC está usando endereços IP privados RFC 1918, enquanto as redes de Pod e Serviço são sobrepostas em IPs privados RFC 6598).
- Rede 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 configuração a seguir também é válida, apesar das redes de Pod e Serviço se sobreporem à rede VPC, pois não há sobreposição com as réplicas do plano de controle.
- Rede 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 de réplica do plano de controle:
10.0.3.0/24
,10.0.4.0/24
,10.0.5.0/24
A configuração a seguir é inválida porque o intervalo de IPs do Pod se sobrepõe à rede do plano de controle. Essa sobreposição pode impedir que as cargas de trabalho se comuniquem com a réplica do plano de controle na rede VPC:
- Rede 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 de réplica do plano de controle:
10.0.1.0/24
,10.0.2.0/24
,10.0.3.0/24
Detalhes sobre o intervalo de endereços do Pod
O Kubernetes aloca endereços para objetos Pod a partir do intervalo de endereços de Pod. O intervalo de Pod de um cluster é dividido em intervalos menores para cada nó. Quando um Pod é agendado em um nó específico, o Kubernetes atribui um endereço IP de Pod a partir do intervalo do nó.
Para calcular o tamanho do intervalo de endereços do Pod, você precisa estimar o número de nós que deseja no seu cluster e o número de Pods que deseja executar em cada nó.
A tabela a seguir fornece recomendações de tamanho para intervalos de CIDR de Pod com base no número de nós e Pods que você pretende executar.
Tabela de intervalos de endereços de pod
Intervalo de endereços de pod | Endereços IP máximos do pod | Nós máximos | Máximo de cápsulas |
---|---|---|---|
/24 Menor intervalo possível de endereços de Pod | 256 endereços | 1 nó | 110 cápsulas |
/23 | 512 endereços | 2 nós | 220 cápsulas |
/22 | 1.024 endereços | 4 nós | 440 cápsulas |
/21 | 2.048 endereços | 8 nós | 880 cápsulas |
/20 | 4.096 endereços | 16 nós | 1.760 cápsulas |
/19 | 8.192 endereços | 32 nós | 3.520 cápsulas |
/18 | 16.384 endereços | 64 nós | 7.040 cápsulas |
/17 | 32.768 endereços | 128 nós | 14.080 cápsulas |
/16 | 65.536 endereços | 256 nós | 28.160 cápsulas |
/15 | 131.072 endereços | 512 nós | 56.320 cápsulas |
/14 | 262.144 endereços | 1.024 nós | 112.640 cápsulas |
Detalhes sobre o intervalo de endereços do serviço
O Kubernetes aloca endereços IP virtuais para objetos de serviço — por exemplo, balanceadores de carga desse intervalo de endereços.
Para calcular o tamanho do intervalo de endereços de serviço, você precisa estimar o número de serviços que deseja no seu cluster.
A tabela a seguir fornece recomendações de tamanho para intervalos de CIDR de serviço com base no número de serviços que você pretende executar.
Tabela de intervalos de endereços de serviço
Intervalo de endereços de serviço | Número máximo de serviços |
---|---|
/27 Menor intervalo possível de endereços de serviço | 32 Serviços |
/26 | 64 Serviços |
/25 | 128 Serviços |
/24 | 256 Serviços |
/23 | 512 Serviços |
/22 | 1.024 Serviços |
/21 | 2.048 Serviços |
/20 | 4.096 Serviços |
/19 | 8.192 Serviços |
/18 | 16.384 Serviços |
/17 | 32.768 Serviços |
/16 Maior intervalo possível de endereços de serviço | 65.536 Serviços |
Selecione seu projeto host da frota
As frotas são umaGoogle Cloud conceito para organizar clusters em grupos maiores. Com frotas, você pode gerenciar vários clusters em várias nuvens e aplicar políticas consistentes entre elas. A API Multi-Cloud do GKE registra automaticamente seus clusters em uma frota quando o cluster é criado.
Ao criar um cluster, você especifica um projeto host do Fleet a partir do qual o cluster será gerenciado. Como o GKE na AWS usa o nome do cluster como nome de associação do Fleet, você precisa garantir que os nomes dos clusters sejam exclusivos em toda a sua Fleet.
Registro entre projetos
Se você quiser usar um projeto Fleet Host diferente do Google Cloud No projeto onde o cluster está localizado, você deve aplicar uma vinculação de política do IAM adicional à conta de serviço do Agente de Serviço Multi-Cloud. Isso permite que a conta de serviço gerencie frotas com o Projeto Host da Frota.
Para adicionar o Service Agent ao seu projeto, execute este comando:
gcloud beta services identity create --service=gkemulticloud.googleapis.com \ --project=CLUSTER_PROJECT_NUMBER
Substitua
CLUSTER_PROJECT_NUMBER
pelo seu Google Cloud número do projeto.Atribua essa vinculaçã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 host da sua frotaGoogle Cloud projeto -
CLUSTER_PROJECT_NUMBER
: seu Google Cloud número do projeto
-
O nome da conta do Multi-Cloud Service Agent tem o seguinte formato: service-CLUSTER_PROJECT_NUMBER@gcp-sa-gkemulticloud.iam.gserviceaccount.com
.
Você pode encontrar suas contas de serviço na Google Cloud Página da conta de serviço do console. Para obter mais informações sobre como encontrar o número do seu projeto, consulte Identificando projetos .
Crie seu cluster
Use o comando a seguir para criar seu cluster no GKE na AWS. Para obter mais informações sobre este comando, incluindo seus parâmetros opcionais, consulte a página de referência do 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 escolhido -
AWS_REGION
: a região da AWS para criar o cluster -
GOOGLE_CLOUD_LOCATION
: o nome do Google Cloudlocal de onde este cluster será gerenciado, conforme definido em Google Cloud regiões de gestão . -
CLUSTER_VERSION
: a versão do Kubernetes a ser instalada no seu cluster -
FLEET_PROJECT
: o projeto host do Fleet onde o cluster será registrado. Se você deseja gerenciar este cluster de outroGoogle Cloud projeto, veja Registro entre projetos . -
VPC_ID
: o ID do AWS VPC para este cluster -
CONTROL_PLANE_SUBNET_1
,CONTROL_PLANE_SUBNET_2
,CONTROL_PLANE_SUBNET_3
: os IDs de sub-rede para as três instâncias do plano de controle do seu cluster -
POD_ADDRESS_CIDR_BLOCKS
: o intervalo de endereços CIDR para os pods do seu cluster -
SERVICE_ADDRESS_CIDR_BLOCKS
: o intervalo de endereços CIDR para os serviços do seu cluster -
API_ROLE_ARN
: o ARN da função da API Multi-Cloud do GKE -
CONTROL_PLANE_PROFILE
: o perfil da instância do IAM associada ao cluster. Para obter detalhes sobre como atualizar um perfil de instância do IAM, consulte Atualizar perfil de instância do IAM da AWS . -
DB_KMS_KEY_ARN
: o nome do recurso da Amazon (ARN) da chave AWS KMS para criptografar os segredos do cluster -
CONFIG_KMS_KEY_ARN
: o nome do recurso da Amazon (ARN) da chave AWS KMS para criptografar dados do usuário -
ADMIN_USERS_LIST
(opcional): uma lista separada por vírgulas de endereços de e-mail dos usuários aos quais serão concedidos privilégios administrativos — por exemplo, "kai@example.com,hao@example.com,kalani@example.com". O padrão é o usuário que está criando o cluster.
Se presente, o parâmetro --tags
aplica a tag AWS fornecida a todos os recursos AWS subjacentes gerenciados pelo GKE na AWS. Este exemplo marca os nós do plano de controle com o nome do cluster ao qual pertencem.
Você não poderá usar SSH para acessar esses nós do plano de controle, a menos que especifique um par de chaves SSH com o sinalizador --ssh-ec2-key-pair
.
Para ver todas as versões do Kubernetes suportadas em um determinado Google Cloud localização, execute o seguinte comando.
gcloud container aws get-server-config --location GCP_LOCATION
Autorizar registro em nuvem/monitoramento em nuvem
Para que o GKE na AWS crie e carregue logs e métricas do sistema paraGoogle Cloud, deve ser autorizado.
Para autorizar a identidade de carga de trabalho do Kubernetes gke-system/gke-telemetry-agent
a gravar logs em Google Cloud Registro e métricas para Google Cloud Monitoramento, 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 cluster Google Cloud ID do projeto.
Esta ligação IAM concede acesso para todos os clusters no Google Cloud projeto para carregar logs e métricas. Você só precisa executá-lo após criar seu primeiro cluster para o projeto.
Adicionar esta ligação IAM falhará a menos que pelo menos um cluster tenha sido criado em seu Google Cloud projeto. Isso ocorre porque o pool de identidades de carga de trabalho ao qual ele se refere ( GOOGLE_PROJECT_ID .svc.id.goog
) não é provisionado até a criação do cluster.
O que vem a seguir
- Crie um pool de nós .
- Configurar acesso ao cluster para kubectl .
- Experimente o Início rápido para iniciar sua primeira carga de trabalho.
- Leia a documentação de referência para
gcloud container clusters create
. - Teve algum problema ao criar um cluster? Consulte Solução de problemas para obter mais informações.