Este tópico descreve como personalizar a configuração de um cluster de utilizadores do GKE on AWS.
Pode querer criar um cluster de utilizadores personalizado pelos seguintes motivos:
- Criar outro cluster para um ambiente de preparação ou de teste.
- Adicionar conjuntos de nós com diferentes tipos de máquinas.
- Criar um cluster em zonas de disponibilidade (AZ) da AWS específicas.
Antes de começar
Antes de começar a usar o GKE on AWS, certifique-se de que realizou as seguintes tarefas:
- Cumpra os pré-requisitos.
Instale um serviço de gestão.
Se quiser criar um cluster sem usar o
terraform output example_cluster
>, tenha sub-redes privadas da AWS para o seu plano de controlo. Cada sub-rede deve pertencer a uma AZ diferente na mesma região da AWS. As tabelas de rotas têm de ser configuradas para permitir o tráfego entre sub-redes privadas, e cada sub-rede tem de ter acesso a um gateway NAT.Ter o ID da nuvem virtual privada (VPC) da AWS. Um ID de VPC tem o seguinte aspeto:
vpc-012345678abcde
. Pode encontrar o ID da VPC na consola da AWS.
Para se ligar aos seus recursos do GKE no AWS, siga os passos abaixo. Selecione se tem uma VPC da AWS existente (ou uma ligação direta à sua VPC) ou se criou uma VPC dedicada quando criou o seu serviço de gestão.
VPC existente
Se tiver uma ligação direta ou VPN a uma VPC existente, omita a linha
env HTTP_PROXY=http://localhost:8118
dos comandos neste tópico.
VPC dedicada
Quando cria um serviço de gestão numa VPC dedicada, o GKE no AWS inclui um anfitrião bastion numa sub-rede pública.
Para se ligar ao seu serviço de gestão, siga estes passos:
Altere para o diretório com a configuração do GKE na AWS. Criou este diretório quando Instalou o serviço de gestão.
cd anthos-aws
Para abrir o túnel, execute o script
bastion-tunnel.sh
. O túnel segue em frente paralocalhost:8118
.Para abrir um túnel para o anfitrião bastion, execute o seguinte comando:
./bastion-tunnel.sh -N
As mensagens do túnel SSH aparecem nesta janela. Quando quiser fechar a ligação, pare o processo com Control+C ou fechando a janela.
Abra um novo terminal e mude para o diretório
anthos-aws
.cd anthos-aws
Verifique se consegue estabelecer ligação ao cluster com
kubectl
.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
O resultado inclui o URL do servidor da API do serviço de gestão.
Selecionar um tamanho da instância do plano de controlo
O GKE on AWS não suporta o redimensionamento de instâncias do plano de controlo. Antes de criar o cluster de utilizadores, selecione o tamanho da instância dos planos de controlo. Os tamanhos do plano de controlo dependem do número de nós no cluster. A tabela seguinte contém tamanhos de instâncias do plano de controlo recomendados para vários tamanhos de clusters.
Tamanho do cluster (nós) | Tipo de instância do plano de controlo |
---|---|
1 – 10 | m5.large |
11 – 100 | m5.xlarge |
101 – 200 | m5.2xlarge |
Criar um novo cluster com uma configuração personalizada
Pode usar
terraform output example_cluster
para criar a configuração de um cluster de utilizadores por cluster de gestão. Se quiser
criar clusters adicionais, tem de aplicar uma configuração personalizada.
Neste exemplo, cria um cluster manualmente a partir de CRDs AWSCluster
e AWSNodePool
.
Altere para o diretório com a configuração do GKE na AWS. Criou este diretório quando Instalou o serviço de gestão.
cd anthos-aws
No diretório do
anthos-aws
, useanthos-gke
para mudar o contexto para o seu serviço de gestão.cd anthos-aws anthos-gke aws management get-credentials
Abra um editor de texto e copie a seguinte definição
AWSCluster
para um ficheiro com o nomecustom-cluster.yaml
.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSCluster metadata: name: CLUSTER_NAME spec: region: AWS_REGION networking: vpcID: VPC_ID podAddressCIDRBlocks: POD_ADDRESS_CIDR_BLOCKS serviceAddressCIDRBlocks: SERVICE_ADDRESS_CIDR_BLOCKS ServiceLoadBalancerSubnetIDs: SERVICE_LOAD_BALANCER_SUBNETS controlPlane: version: CLUSTER_VERSION # Latest version is 1.25.5-gke.2100 instanceType: AWS_INSTANCE_TYPE keyName: SSH_KEY_NAME subnetIDs: - CONTROL_PLANE_SUBNET_IDS securityGroupIDs: - CONTROL_PLANE_SECURITY_GROUPS iamInstanceProfile: CONTROL_PLANE_IAM_ROLE rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: ROOT_VOLUME_TYPE # Optional iops: ROOT_VOLUME_IOPS # Optional kmsKeyARN: ROOT_VOLUME_KEY # Optional etcd: mainVolume: sizeGiB: ETCD_VOLUME_SIZE volumeType: ETCD_VOLUME_TYPE # Optional iops: ETCD_VOLUME_IOPS # Optional kmsKeyARN: ETCD_VOLUME_KEY # Optional databaseEncryption: kmsKeyARN: ARN_OF_KMS_KEY hub: # Optional membershipName: ANTHOS_CONNECT_NAME cloudOperations: # Optional projectID: YOUR_PROJECT location: GCP_REGION enableLogging: ENABLE_LOGGING enableMonitoring: ENABLE_MONITORING workloadIdentity: # Optional oidcDiscoveryGCSBucket: WORKLOAD_IDENTITY_BUCKET
Substitua o seguinte:
- CLUSTER_NAME: o nome do cluster.
AWS_REGION: a região da AWS onde o cluster é executado.
VPC_ID: o ID da VPC onde o cluster é executado.
POD_ADDRESS_CIDR_BLOCKS: o intervalo de endereços IPv4 usados pelos pods do cluster. Atualmente, só é suportado um único intervalo. O intervalo não pode sobrepor-se a nenhuma sub-rede acessível a partir da sua rede. É seguro usar o mesmo intervalo em vários objetos AWSCluster diferentes. Por exemplo,
10.2.0.0/16
.SERVICE_ADDRESS_CIDR_BLOCKS: o intervalo de endereços IPv4 usados pelos serviços do cluster. Atualmente, só é suportado um único intervalo. O intervalo não pode sobrepor-se a nenhuma sub-rede acessível a partir da sua rede. É seguro usar o mesmo intervalo em vários objetos AWSCluster diferentes. Por exemplo,
10.1.0.0/16
.SERVICE_LOAD_BALANCER_SUBNETS: os IDs das sub-redes onde o GKE no AWS pode criar equilibradores de carga públicos ou privados.
CLUSTER_VERSION: a Versão do Kubernetes suportada pelo GKE no AWS. A versão mais recente é a 1.25.5-gke.2100.
AWS_INSTANCE_TYPE: um tipo de instância do EC2 suportado.
SSH_KEY_NAME: um par de chaves do AWS EC2.
CONTROL_PLANE_SUBNET_IDS: os IDs das sub-redes nas ZDs onde as instâncias do plano de controlo são executadas.
CONTROL_PLANE_SECURITY_GROUPS: um securityGroupID criado durante a instalação do serviço de gestão. Pode personalizar esta opção adicionando os securityGroupIDs necessários para estabelecer ligação ao plano de controlo.
CONTROL_PLANE_IAM_PROFILE: nome do perfil da instância do AWS EC2 atribuído a réplicas do plano de controlo.
ROOT_VOLUME_SIZE: o tamanho, em gibibytes (GiB), dos volumes raiz do plano de controlo.
ROOT_VOLUME_TYPE com o tipo de volume EBS. Por exemplo,
gp3
.ROOT_VOLUME_IOPS com a quantidade de operações de E/S aprovisionadas por segundo (IOPS) para o volume. Só é válido quando
volumeType
éGP3
. Para mais informações, consulte o artigo Volumes SSD de uso geral (gp3).ROOT_VOLUME_KEY com o nome do recurso da Amazon da chave do AWS KMS que encripta os volumes raiz da instância do plano de controlo.
ETCD_VOLUME_SIZE: o tamanho dos volumes usados pelo etcd.
ETCD_VOLUME_TYPE com o tipo de volume EBS. Por exemplo,
gp3
.ETCD_VOLUME_IOPS com a quantidade de operações de E/S aprovisionadas por segundo (IOPS) para o volume. Só é válido quando
volumeType
égp3
. Para mais informações, consulte o artigo Volumes SSD de uso geral (gp3).ETCD_VOLUME_KEY com o nome de recurso da Amazon da chave do AWS KMS que encripta os volumes de dados etcd do plano de controlo.
ARN_OF_KMS_KEY: a chave do AWS KMS usada para encriptar os segredos do cluster.
ANTHOS_CONNECT_NAME: o nome do membro do Connect usado para registar o seu cluster. O nome da subscrição tem de ser exclusivo. Por exemplo,
projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME
, ondeYOUR_PROJECT
é o seu Google Cloud projeto eCLUSTER_NAME
é um nome exclusivo no seu projeto. Este campo é opcional.YOUR_PROJECT: o ID do seu projeto.
GCP_REGION: a Google Cloud região onde quer armazenar os registos. Escolha uma região próxima da região da AWS. Para mais informações, consulte Localizações globais – Regiões e zonas — por exemplo,
us-central1
.ENABLE_LOGGING:
true
oufalse
, se o Cloud Logging estiver ativado nos nós do plano de controlo.ENABLE_MONITORING:
true
oufalse
, se o Cloud Monitoring estiver ativado nos nós do plano de controlo.WORKLOAD_IDENTITY_BUCKET: o nome do contentor do Cloud Storage que contém as informações de deteção da identidade da carga de trabalho. Este campo é opcional.
Crie um ou mais AWSNodePools para o seu cluster. Abra um editor de texto e copie a seguinte definição de AWSCluster para um ficheiro com o nome
custom-nodepools.yaml
.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSNodePool metadata: name: NODE_POOL_NAME spec: clusterName: AWSCLUSTER_NAME version: CLUSTER_VERSION # latest version is 1.25.5-gke.2100 region: AWS_REGION subnetID: AWS_SUBNET_ID minNodeCount: MINIMUM_NODE_COUNT maxNodeCount: MAXIMUM_NODE_COUNT maxPodsPerNode: MAXIMUM_PODS_PER_NODE_COUNT instanceType: AWS_NODE_TYPE keyName: KMS_KEY_PAIR_NAME iamInstanceProfile: NODE_IAM_PROFILE proxySecretName: PROXY_SECRET_NAME rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: VOLUME_TYPE # Optional iops: IOPS # Optional kmsKeyARN: NODE_VOLUME_KEY # Optional
Substitua o seguinte:
- NODE_POOL_NAME: um nome exclusivo para o seu AWSNodePool.
- AWSCLUSTER_NAME: o nome do seu AWSCluster. Por exemplo,
staging-cluster
. - CLUSTER_VERSION: uma versão do Kubernetes do GKE on AWS suportada.
- AWS_REGION: a mesma região da AWS que o seu AWSCluster.
- AWS_SUBNET_ID: uma sub-rede da AWS na mesma região que o seu AWSCluster.
- MINIMUM_NODE_COUNT: o número mínimo de nós no node pool. Consulte o artigo Dimensionar clusters de utilizadores para mais informações.
- MAXIMUM_NODE_COUNT: o número máximo de nós no node pool.
- MAXIMUM_PODS_PER_NODE_COUNT: o número máximo de pods que o GKE no AWS pode atribuir a um nó.
- AWS_NODE_TYPE: um tipo de instância do AWS EC2.
- KMS_KEY_PAIR_NAME: o par de chaves do AWS KMS atribuído a cada worker do conjunto de nós.
- NODE_IAM_PROFILE: o nome do perfil da instância do AWS EC2 atribuído aos nós no conjunto.
- ROOT_VOLUME_SIZE: o tamanho, em gibibytes (GiB), dos volumes raiz do plano de controlo.
- VOLUME_TYPE: o tipo de volume do EBS da AWS do nó.
Por exemplo,
gp3
. - IOPS: a quantidade de operações de E/S aprovisionadas por segundo (IOPS) para volumes. Só é válido quando
volumeType
égp3
. - NODE_VOLUME_KEY: o ARN da chave do AWS KMS usada para encriptar o volume. Para mais informações, consulte o artigo Usar uma CMK gerida pelo cliente para encriptar volumes.
Aplique os manifestos ao seu serviço de gestão.
env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f custom-cluster.yaml env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f custom-nodepools.yaml
Crie um kubeconfig
Enquanto o cluster de utilizadores é iniciado, pode criar um kubeconfig
contexto para o seu novo cluster de utilizadores. Usa o contexto para autenticar um utilizador ou um cluster de gestão.
Use
anthos-gke aws clusters get-credentials
para gerar umkubeconfig
para o seu cluster de utilizadores no~/.kube/config
.env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Substitua CLUSTER_NAME pelo nome do cluster. Por exemplo,
cluster-0
.Use
kubectl
para se autenticar no novo cluster de utilizadores.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
Se o cluster estiver pronto, o resultado inclui os URLs dos componentes do Kubernetes no cluster.
Ver o estado do cluster
O serviço de gestão aprovisiona recursos da AWS quando aplica um
AWSCluster
ou AWSNodePool
.
No diretório do
anthos-aws
, useanthos-gke
para mudar o contexto para o seu serviço de gestão.cd anthos-aws anthos-gke aws management get-credentials
Para listar os seus clusters, use
kubectl get AWSClusters
.env HTTPS_PROXY=http://localhost:8118 \ kubectl get AWSClusters
O resultado inclui o nome, o estado, a idade, a versão e o ponto final de cada cluster.
Por exemplo, a saída seguinte inclui apenas um
AWSCluster
denominadocluster-0
:NAME STATE AGE VERSION ENDPOINT cluster-0 Provisioning 2m41s 1.25.5-gke.2100 gke-xyz.elb.us-east-1.amazonaws.com
Veja os eventos do seu cluster
Para ver os eventos do Kubernetes recentes do cluster de utilizadores, use kubectl get events
.
No diretório do
anthos-aws
, useanthos-gke
para mudar o contexto para o seu serviço de gestão.cd anthos-aws anthos-gke aws management get-credentials
Corrida
kubectl get events
.env HTTPS_PROXY=http://localhost:8118 \ kubectl get events
O resultado inclui informações, avisos e erros relacionados com o seu serviço de gestão.
Eliminar um cluster de utilizadores
Para eliminar um cluster de utilizadores, siga estes passos:
No diretório do
anthos-aws
, useanthos-gke
para mudar o contexto para o seu serviço de gestão.cd anthos-aws anthos-gke aws management get-credentials
Use
kubectl delete
para eliminar o manifesto que contém os seus clusters de utilizadores.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f CLUSTER_FILE
Substitua CLUSTER_FILE pelo nome do manifesto que contém os objetos AWScluster e AWSNodePool. Por exemplo,
cluster-0.yaml
.
Eliminar todos os clusters de utilizadores
Para eliminar todos os seus clusters de utilizadores, siga estes passos:
No diretório do
anthos-aws
, useanthos-gke
para mudar o contexto para o seu serviço de gestão.cd anthos-aws anthos-gke aws management get-credentials
Use
kubectl delete
para eliminar os seus AWSNodePools e AWSClusters do seu serviço de gestão.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSNodePool --all env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSCluster --all
Para mais informações, consulte o artigo Desinstalar o GKE no AWS.
O que se segue?
Configure o Fornecedor de identidade com o GKE Identity Service.
Lance a sua primeira carga de trabalho no GKE na AWS.
Crie uma implementação virada para o exterior com um balanceador de carga ou um Ingress.
Leia as especificações das definições de recursos personalizados AWSCluster e AWSNodePool.