Crie clusters locais do Amazon EKS em AWS Outposts para alta disponibilidade
Você pode usar clusters locais para executar todo o seu cluster do Amazon EKS localmente em AWS Outposts. Isso ajuda a reduzir o risco de tempo de inatividade da aplicação, que pode resultar de desconexões temporárias da rede com a nuvem. Essas desconexões podem ser causadas por cortes de fibra ou eventos climáticos. Como o cluster inteiro do Kubernetes é executado localmente no Outposts, as aplicações permanecem disponíveis. Você pode executar operações de cluster durante as desconexões da rede com a nuvem. Para ter mais informações, consulte Prepare clusters locais do Amazon EKS em AWS Outposts para desconexões de rede. O diagrama a seguir mostra a implantação de um cluster local.
Clusters locais geralmente estão disponíveis para uso com racks do Outposts.
Regiões do AWS com suporte
Você pode criar clusters locais nas seguintes regiões AWS: Leste dos EUA (Ohio), Leste dos EUA (N. Virgínia), Oeste dos EUA (N. Califórnia), Oeste dos EUA (Oregon), Ásia-Pacífico (Seul), Ásia-Pacífico (Cingapura), Ásia-Pacífico (Sydney), Ásia-Pacífico (Tóquio), Canadá (Central), Europa (Frankfurt), Europa (Irlanda), Europa (Londres), Oriente Médio (Bahrein) e América do Sul (São Paulo). Para obter informações sobre os recursos compatíveis, consulte Comparar as opções de implantação.
Tópicos
Criar um cluster local do Amazon EKS
Você pode criar um cluster local com as seguintes ferramentas descritas nesta página:
Você também pode usar a AWS CLI, a API do Amazon EKS, os SDKs da AWS
eksctl
Para criar um cluster local com eksctl
-
Instale a versão
0.194.0
ou posterior da ferramenta de linha de comandoeksctl
em seu dispositivo ou AWS CloudShell. Para instalar ou atualizar oeksctl
, consulte Instalaçãona documentação do eksctl
. -
Copie o conteúdo a seguir no seu dispositivo. Substitua os valores a seguir e execute o comando modificado para criar o arquivo
outpost-control-plane.yaml
:-
Substitua
region-code
pela região AWS suportada na qual você deseja criar o cluster. -
Substitua
my-cluster
por um nome para seu cluster. O nome só pode conter caracteres alfanuméricos (sensíveis a maiúsculas e minúsculas) e hifens. Ele deve começar com um caractere alfanumérico e não pode ter mais de 100 caracteres. O nome deve ser exclusivo na região da AWS e na conta da AWS em que você está criando o cluster. O nome deve ser exclusivo na região da AWS e na conta da AWS em que você está criando o cluster. -
Substitua
vpc-ExampleID1
esubnet-ExampleID1
pelos IDs da sua VPC e da sub-rede existentes. A VPC e a sub-rede devem atender aos requisitos em Criar uma VPC e sub-redes para clusters do Amazon EKS no AWS Outposts. -
Substitua
uniqueid
pelo ID do seu Outpost. -
Substitua
m5.large
por um tipo de instância disponível no seu Outpost. Antes de escolher um tipo de instância, consulte Selecione tipos de instância e grupos de posicionamento para clusters do Amazon EKS em AWS Outposts com base em considerações de capacidade. Três instâncias do ambiente de gerenciamento são implantadas. Não é possível alterar esse número.cat >outpost-control-plane.yaml <<EOF apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: "1.24" vpc: clusterEndpoints: privateAccess: true id: "vpc-vpc-ExampleID1" subnets: private: outpost-subnet-1: id: "subnet-subnet-ExampleID1" outpost: controlPlaneOutpostARN: arn:aws:outposts:region-code:111122223333:outpost/op-uniqueid controlPlaneInstanceType: m5.large EOF
Para obter uma lista completa de todas as opções e padrões disponíveis, consulte AWS Outposts Support
e Config file schema na documentação eksctl
.
-
-
Crie o cluster usando o arquivo de configuração que você criou na etapa anterior. O
eksctl
cria uma VPC e uma sub-rede no seu Outpost para implantar o cluster.eksctl create cluster -f outpost-control-plane.yaml
O provisionamento de cluster leva alguns minutos. Durante a criação do cluster, várias linhas de saída são exibidas. A última linha do resultado é semelhante ao exemplo de linha a seguir.
[✓] EKS cluster "my-cluster" in "region-code" region is ready
dica
Para ver a maioria das opções que podem ser especificadas ao criar um cluster com
eksctl
, use o comandoeksctl create cluster --help
. Para ver todas as opções disponíveis, é possível utilizar um arquivoconfig
. Para obter mais informações, consulte Uso dos arquivos de configuraçãoe o esquema de arquivo de configuração na documentação do eksctl
. Você pode encontrar exemplos de arquivos de configuraçãono GitHub. O comando
eksctl
criou automaticamente uma entrada de acesso para a entidade principal do IAM (usuário ou perfil) que criou o cluster e concedeu à entidade principal do IAM permissões de administrador para Kubernetes objetos no cluster. Se não quiser que o criador do cluster tenha acesso de administrador aos objetos do Kubernetes no cluster, adicione o seguinte texto ao arquivo de configuração anterior:bootstrapClusterCreatorAdminPermissions: false
(no mesmo nível demetadata
,vpc
eoutpost
). Se você adicionou a opção, então, depois da criação do cluster, precisará criar uma entrada de acesso para pelo menos uma entidade principal do IAM, ou nenhuma entidade principal do IAM terá acesso aos objetos do Kubernetes no cluster.
AWS Management Console
Para criar o cluster com a AWS Management Console
-
Você precisa de uma VPC e uma sub-rede existentes que atendam aos requisitos do Amazon EKS. Para ter mais informações, consulte Criar um VPC e sub-redes para clusters do Amazon EKS em AWS Outposts.
-
Se você já tiver um perfil do IAM do cluster local ou se for criar seu cluster com
eksctl
, poderá ignorar essa etapa. Por padrão,eksctl
cria um perfil para você.-
Execute o seguinte comando para criar um arquivo JSON de política de confiança do IAM:
cat >eks-local-cluster-role-trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
-
Crie o perfil do IAM do cluster do Amazon EKS. Para criar um perfil do IAM, a entidade principal do IAM que estiver criando o perfil deverá ser atribuída à seguinte ação
iam:CreateRole
(permissão):aws iam create-role --role-name myAmazonEKSLocalClusterRole --assume-role-policy-document file://"eks-local-cluster-role-trust-policy.json"
-
Anexe a política gerenciada do Amazon EKS denominada AmazonEKSLocalOutpostClusterPolicy ao perfil. Para anexar uma política do IAM a uma entidade principal do IAM a entidade principal do IAM que está anexando a política deve receber uma das seguintes ações do IAM (permissões):
iam:AttachUserPolicy
ouiam:AttachRolePolicy
.aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSLocalOutpostClusterPolicy --role-name myAmazonEKSLocalClusterRole
-
-
Abra o console do Amazon EKS
. -
Na parte superior da tela do console, certifique-se de ter selecionado uma região compatível com AWS.
-
Escolha Add cluster (Adicionar cluster) e, em seguida, Create (Criar).
-
Na página Configure cluster (Configurar cluster), insira ou selecione valores para os seguintes campos:
-
Localização do ambiente de gerenciamento do Kubernetes: escolha AWS Outposts.
-
Outpost ID (ID do Outpost): escolha o ID do Outpost no qual você deseja criar seu ambiente de gerenciamento.
-
Em Instance type (Tipo de instância): selecione um tipo de instância. Somente os tipos de instância disponíveis no seu Outpost são exibidos. Na lista suspensa, cada tipo de instância descreve para quantos nós o tipo de instância é recomendado. Antes de escolher um tipo de instância, consulte Selecione tipos de instância e grupos de posicionamento para clusters do Amazon EKS em AWS Outposts com base em considerações de capacidade. Todas as réplicas são implantadas com o uso do mesmo tipo de instância. Você não poderá alterar o tipo de instância depois que seu cluster for criado. Três instâncias do ambiente de gerenciamento são implantadas. Não é possível alterar esse número.
-
Name (Nome): um nome exclusivo para o cluster. Ele deve ser exclusivo na sua conta da AWS. O nome só pode conter caracteres alfanuméricos (sensíveis a maiúsculas e minúsculas) e hifens. Ele deve começar com um caractere alfanumérico e não pode ter mais de 100 caracteres. O nome deve ser exclusivo na região da AWS e na conta da AWS em que você está criando o cluster. O nome deve ser exclusivo na região da AWS e na conta da AWS em que você está criando o cluster.
-
Kubernetes version - Escolha a versão do Kubernetes que você deseja usar para o seu cluster. A menos que precise usar uma versão anterior, recomendamos que você selecione a versão mais recente.
-
Perfil de serviço do cluster: escolha o perfil do IAM do cluster do Amazon EKS criado em uma etapa anterior para permitir que o ambiente de gerenciamento do Kubernetes gerencie os recursos da AWS.
-
Kubernetes acesso de administrador do cluster - se quiser que o entidade principal do IAM (perfil ou usuário) que está criando o cluster tenha acesso de administrador aos objetos Kubernetes no cluster, aceite o padrão (permitir). O Amazon EKS cria uma entrada de acesso para a entidade principal do IAM e concede permissões de administrador do cluster à entrada de acesso. Para obter mais informações sobre as entradas de acesso, consulte Conceder aos usuários do IAM acesso ao Kubernetes com entradas de acesso ao EKS.
Se você quiser que uma entidade principal do IAM diferente daquela que está criando o cluster tenha acesso de administrador aos objetos do Kubernetes do cluster, escolha a opção de não permitir. Após a criação do cluster, qualquer entidade principal do IAM que tenha permissões do IAM para criar entradas de acesso poderá adicionar uma entrada de acesso para qualquer entidade principal do IAM que precise acessar os objetos do Kubernetes do cluster. Para obter mais informações sobre as permissões necessárias do IAM, consulte Ações definidas pelo Amazon Elastic Kubernetes Service na Referência de autorização de serviço. Se você escolher a opção de não permitir e não criar nenhuma entrada de acesso, nenhuma entidade principal do IAM terá acesso aos objetos do Kubernetes no cluster.
-
Tags (Etiquetas) – (opcional) adicione etiquetas ao cluster. Para ter mais informações, consulte Organizar recursos do Amazon EKS com tags. Após terminar com essa página, escolha Próximo.
-
-
Na página Specify networking (Especificar redes), selecione valores para os seguintes campos:
-
VPC: escolha uma VPC existente. A VPC deverá ter uma quantidade suficiente de endereços IP disponíveis para o cluster, todos os nós e outros recursos do Kubernetes que você desejar criar. Sua VPC deve atender aos requisitos em Requisitos e considerações da VPC.
-
Subnets (Sub-redes): por padrão, as sub-redes disponíveis na VPC especificada no campo anterior são pré-selecionadas. As sub-redes que você escolher devem atender aos requisitos em Requisitos e considerações da sub-rede.
-
Security groups (Grupos de segurança) (Opcional): especifique um ou mais grupos de segurança que você deseja que o Amazon EKS associe às interfaces de rede que ele cria. O Amazon EKS cria automaticamente um grupo de segurança que permite a comunicação entre o cluster e a VPC. O Amazon EKS associa esse grupo de segurança, e qualquer um que você escolher, às interfaces de rede que ele cria. Para saber mais sobre o grupo de segurança de cluster criado pelo Amazon EKS, consulte Exibir os requisitos para grupos de segurança do Amazon EKS em clusters. É possível modificar as regras no grupo de segurança do cluster criado pelo Amazon EKS. Se optar por adicionar seus próprios grupos de segurança, você não poderá alterar os escolhidos após a criação desse cluster. Para que os hosts on-premises se comuniquem com o endpoint do cluster, você deve permitir tráfego de entrada do grupo de segurança do cluster. Para clusters que não têm uma conexão de internet de entrada e saída (também conhecidos como clusters privados), você deve fazer o seguinte:
-
Adicione o grupo de segurança associado aos endpoints da VPC necessários. Para obter mais informações sobre os endpoints necessários, consulte Usar VPC endpoints da interface do em Acesso da sub-rede a serviços da AWS.
-
Modifique o grupo de segurança que o Amazon EKS criou para permitir tráfego do grupo de segurança associado aos endpoints da VPC. Após terminar com essa página, escolha Próximo.
-
-
-
Na página Configurar observabilidade, é possível escolher opcionalmente quais opções de Métricas e Log do ambiente de gerenciamento você deseja ativar. Por padrão, o cada tipo de log está desativado.
-
Para obter mais informações sobre as opções de métricas do Prometheus, consulte Etapa 1: ativar as métricas do Prometheus.
-
Para obter mais informações sobre as opções do Log do ambiente de gerenciamento, consulte Enviar logs do ambiente de gerenciamento para o CloudWatch Logs. Após terminar com essa página, escolha Próximo.
-
-
Na página Review and create (Revisar e criar), revise as informações que você inseriu ou selecionou nas páginas anteriores. Se precisar fazer alterações, escolha Edit (Editar). Quando estiver satisfeito, escolha Criar. O campo Status mostra o campo CREATING (Criando) enquanto o cluster é provisionado.
O provisionamento de cluster leva alguns minutos.
Visualizar seu cluster local do Amazon EKS
-
Depois que o cluster for criado, você poderá visualizar as instâncias do ambiente de gerenciamento do Amazon EC2 que foram criadas.
aws ec2 describe-instances --query 'Reservations[*].Instances[*].{Name:Tags[?Key==`Name`]|[0].Value}' | grep my-cluster-control-plane
Veja um exemplo de saída abaixo.
"Name": "my-cluster-control-plane-id1" "Name": "my-cluster-control-plane-id2" "Name": "my-cluster-control-plane-id3"
Cada instância recebeu taints com o
node-role.eks-local.amazonaws.com/control-plane
para que nenhuma workload seja programada nas instâncias do ambiente de gerenciamento. Para obter mais informações sobre taints, consulte Taints e tolerânciasna documentação do Kubernetes. O Amazon EKS monitora continuamente o estado dos clusters locais. Executamos ações automáticas de gerenciamento, como patches de segurança e reparo de instâncias não íntegras. Quando os clusters locais são desconectados da nuvem, executamos ações para garantir que o cluster seja reparado para um estado íntegro após a reconexão. -
Se você criou seu cluster usando
eksctl
, pode ignorar esta etapa. Oeksctl
completa esta etapa para você. Habilite okubectl
para se comunicar com o cluster adicionando um novo contexto ao arquivokubectl
config
. Para obter instruções sobre como criar e atualizar o arquivo, consulte Conecte o kubectl a um cluster EKS criando um arquivo kubeconfig.aws eks update-kubeconfig --region region-code --name my-cluster
Veja um exemplo de saída abaixo.
Added new context arn:aws:eks:region-code:111122223333:cluster/my-cluster to /home/username/.kube/config
-
Para se conectar ao servidor de API do Kubernetes do cluster local, você deve ter acesso ao gateway local da sub-rede ou conectar-se de dentro da VPC. Para obter mais informações sobre como conectar um rack de Outpost à sua rede on-premises, consulte Como funcionam gateways locais para racks, no Guia do Usuário do AWS Outposts. Se você usar roteamento direto de VPC e a sub-rede do Outpost tiver uma rota para o gateway local, os endereços IP privados das instâncias do ambiente de gerenciamento do Kubernetes serão transmitidos automaticamente pela rede local. O endpoint do servidor de API do Kubernetes do cluster local está hospedado no Amazon Route 53 (Route 53). O endpoint do serviço de API pode ser resolvido por servidores DNS públicos para os endereços IP privados dos servidores de API do Kubernetes.
As instâncias do ambiente de gerenciamento do Kubernetes dos clusters locais são configuradas com interfaces de rede elásticas estáticas com endereços IP privados fixos que não mudam durante o ciclo de vida do cluster. As máquinas que interagem com o servidor de API do Kubernetes podem não ter conectividade com o Route 53 durante as desconexões da rede. Se for esse o caso, recomendamos configurar
/etc/hosts
com os endereços IP privados estáticos para operações contínuas. Também recomendamos configurar servidores DNS locais e conectá-los ao Outpost. Para obter mais informações, consulte a documentação doAWS Outposts. Execute o comando a seguir para confirmar que a comunicação foi estabelecida com o cluster.kubectl get svc
Veja um exemplo de saída abaixo.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 28h
-
(Opcional) Teste a autenticação em seu cluster local quando ele estiver em um estado desconectado do AWS Cloud. Para obter instruções, consulte Prepare clusters locais do Amazon EKS em AWS Outposts para desconexões de rede.
Recursos internos
O Amazon EKS cria os seguintes recursos no seu cluster. Os recursos são para uso interno do Amazon EKS. Para o funcionamento adequado do cluster, não edite nem modifique esses recursos.
-
Os seguintes pods de espelho
: -
aws-iam-authenticator-
node-hostname
-
eks-certificates-controller-
node-hostname
-
etcd-
node-hostname
-
kube-apiserver-
node-hostname
-
kube-controller-manager-
node-hostname
-
kube-scheduler-
node-hostname
-
-
Os seguintes complementos autogerenciados:
-
kube-system/coredns
-
kube-system/
kube-proxy
(só será criado quando você adicionar seu primeiro nó) -
kube-system/aws-node
(só será criado quando você adicionar seu primeiro nó). Clusters locais usam o plugin Amazon VPC CNI plugin for Kubernetes para redes de cluster. Não altere a configuração das instâncias do ambiente de gerenciamento (pods denominadosaws-node-controlplane-*
). Há variáveis de configuração que você pode usar para alterar o valor padrão para quando o plug-in criar novas interfaces de rede. Para obter mais informações, consulte a documentaçãosobre o GitHub.
-
-
Os seguintes serviços:
-
default/kubernetes
-
kube-system/kube-dns
-
-
Um
PodSecurityPolicy
denominadoeks.system
-
Um
ClusterRole
denominadoeks:system:podsecuritypolicy
-
Um
ClusterRoleBinding
denominadoeks:system
-
Um PodSecurityPolicy padrão
-
Além do grupo de segurança do cluster, o Amazon EKS cria um grupo de segurança em sua conta AWS chamado
eks-local-internal-do-not-use-or-edit-
. Esse grupo de segurança permite que o tráfego flua livremente entre componentes do Kubernetes em execução nas instâncias do ambiente de gerenciamento.cluster-name
-uniqueid
Próximas etapas recomendadas:
-
Conceda acesso para entidades do IAM ao cluster. Se quiser que as entidades visualizem os recursos do Kubernetes no console do Amazon EKS, conceda as permissões necessárias às entidades.
-
Familiarize-se com o que acontece durante desconexões de rede.
-
Pense em configurar um plano de backup para seu
etcd
. O Amazon EKS não é compatível com backup e restauração automatizadas doetcd
para clusters locais. Para obter mais informações, consulte Backup de um cluster etcdna documentação Kubernetes. As duas principais opções estão usando o etcdctl
para automatizar a captura de snapshots ou o uso do backup de volume de armazenamento do Amazon EBS.