Ajudar a melhorar esta página
Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.
Implantar uma aplicação de exemplo
Neste tópico, você implanta uma aplicação de exemplo no cluster.
Pré-requisitos
-
Um cluster Kubernetes existente com pelo menos um nó. Se você não tiver um cluster do Amazon EKS, implante um usando um dos guias Começar a usar o Amazon EKS. Se você estiver implantando uma aplicação do Windows, será necessário ter o suporte ao Windows habilitado para o cluster e pelo menos um nó do Windows do Amazon EC2.
-
O
Kubectl
instalado em seu computador. Para ter mais informações, consulte Configurar o kubectl e o eksctl. -
O
Kubectl
configurado para se comunicar com o cluster. Para ter mais informações, consulte Conectar o kubectl a um cluster do EKS criando um arquivo kubeconfig. -
Se você planeja implantar sua workload de exemplo no Fargate, deverá ter um perfil do Fargate que inclua o mesmo namespace criado neste tutorial, que será
eks-sample-app
, a menos que você altere o nome. Se você usou um dos guias de conceitos básicos para criar o cluster, será necessário criar um novo perfil ou adicionar o namespace ao perfil existente, pois o perfil criado nos guias de introdução não especifica o namespace usado neste tutorial. A VPC também deve conter pelo menos uma sub-rede privada.
Para implantar uma aplicação de exemplo
Embora muitas variáveis possam ser alteradas nas etapas a seguir, recomendamos alterar apenas os valores das variáveis quando especificado. Depois que tiver entendido melhor os Pods, as implantações e os serviços do Kubernetes, você poderá experimentar alterar outros valores.
-
Crie um namespace . Um namespace permite agrupar recursos no Kubernetes. Para obter mais informações, consulte Namespaces
na documentação do Kubernetes. Se você planeja implantar sua aplicação de exemplo para Simplificar o gerenciamento da computação com o AWS Fargate, verifique se o valor do namespace
em Defina quais Pods usarão o AWS Fargate quando em execução éeks-sample-app
.kubectl create namespace eks-sample-app
-
Crie um implantação do Kubernetes. Essa implantação de amostra extrai uma imagem de contêiner de um repositório público e implanta três réplicas (Pods individuais) dessa imagem no cluster. Para saber mais, consulte Deployments
(Implantações) na documentação do Kubernetes. É possível implantar a aplicação em nós Linux ou Windows. Se estiver implantando no Fargate, só poderá implantar uma aplicação do Linux. -
Salve o conteúdo a seguir em um arquivo denominado
eks-sample-deployment.yaml
. Os contêineres da aplicação de exemplo não usam armazenamento em rede, mas pode haver aplicações que precisem. Para ter mais informações, consulte Armazenar dados de aplicações para seu cluster. -
Aplique o manifesto de implantação ao seu cluster.
kubectl apply -f eks-sample-deployment.yaml
-
-
Crie um serviço. Um serviço permite que você acesse todas as réplicas por meio de um único endereço IP ou nome. Para obter mais informações, consulte Service
(Serviço) na documentação do Kubernetes. Embora não implementado na aplicação de amostra, se você tiver aplicações que precisem interagir com outros serviços da AWS, recomendamos criar contas de serviço do Kubernetes para os Pods e associá-las a contas do AWS IAM. Especificando contas de serviço, os Pods só têm as permissões mínimas que você especifica para interagir com outros serviços. Para ter mais informações, consulte Perfis do IAM para contas de serviço. -
Salve o conteúdo a seguir no arquivo denominado
eks-sample-service.yaml
. O Kubernetes atribui ao serviço o seu próprio endereço IP que só pode ser acessado de dentro do cluster. Para acessar o serviço de fora do seu cluster, implante o AWS Load Balancer Controller para balancear a carga do tráfego de aplicações ou redes para o serviço. -
Aplique o manifesto de serviço ao seu cluster.
kubectl apply -f eks-sample-service.yaml
-
-
Visualize todos os recursos no namespace
eks-sample-app
.kubectl get all -n eks-sample-app
Veja um exemplo de saída abaixo.
Se você implantou recursos do Windows, todas as instâncias do
na saída a seguir serãolinux
windows
. Os outrosexemplos de valores
podem ser diferentes da saída.NAME READY STATUS RESTARTS AGE pod/eks-sample-
linux
-deployment-65b7669776-m6qxz
1/1 Running 0 27m pod/eks-sample-linux
-deployment-65b7669776-mmxvd
1/1 Running 0 27m pod/eks-sample-linux
-deployment-65b7669776-qzn22
1/1 Running 0 27m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/eks-sample-linux
-service ClusterIP10.100.74.8
<none> 80/TCP 32m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/eks-sample-linux
-deployment 3/3 3 3 27m NAME DESIRED CURRENT READY AGE replicaset.apps/eks-sample-linux
-deployment-776d8f8fd8
3 3 3 27mNa saída, você verá o serviço e a implantação especificados nos manifestos de exemplo implantados nas etapas anteriores. Você também vê três Pods. Isso ocorre porque
3
replicas
foram especificadas no manifesto de exemplo. Para obter mais informações sobre Pods, consulte Podna documentação do Kubernetes. O Kubernetes cria automaticamente o arquivo do recurso replicaset
, mesmo que não esteja especificado nos manifestos de exemplo. Para obter mais informações sobreReplicaSets
, consulte ReplicaSetna documentação do Kubernetes. nota
O Kubernetes mantém o número de réplicas especificado no manifesto. Se essa implantação fosse uma implantação de produção e você quisesse que o Kubernetesescalasse horizontalmente o número de réplicas ou escalasse verticalmente os recursos de computação para os Pods, você usaria Escalar as implantações de pods com o Horizontal Pod Autoscaler e Ajustar os recursos de pods com o Vertical Pod Autoscaler para fazer isso.
-
Veja os detalhes do serviço implantado. Se você implantou um serviço do Windows, substitua
porlinux
windows
.kubectl -n eks-sample-app describe service eks-sample-
linux
-serviceVeja um exemplo de saída abaixo.
Se você implantou recursos do Windows, todas as instâncias do
na saída a seguir serãolinux
windows
. Os outrosexemplos de valores
podem ser diferentes da saída.Name: eks-sample-
linux
-service Namespace: eks-sample-app Labels: app=eks-sample-linux
-app Annotations: <none> Selector: app=eks-sample-linux
-app Type: ClusterIP IP Families: <none> IP:10.100.74.8
IPs:10.100.74.8
Port: <unset> 80/TCP TargetPort: 80/TCP Endpoints:192.168.24.212
:80,192.168.50.185
:80,192.168.63.93
:80 Session Affinity: None Events: <none>Na saída anterior, o valor para
IP:
é um endereço IP exclusivo que pode ser alcançado de qualquer nó ou Pod dentro do cluster, mas não pode ser alcançado de fora do cluster. Os valores paraEndpoints
são endereços IP atribuídos de dentro da VPC aos Pods que fazem parte do serviço. -
Visualize os detalhes de um dos Pods listados na saída quando você visualizou o namespace em uma etapa anterior. Se você implantou uma aplicação do Windows, substitua
porlinux
windows
e substitua
pelo valor retornado para um dos Pods.776d8f8fd8-78w66
kubectl -n eks-sample-app describe pod eks-sample-
linux
-deployment-65b7669776-m6qxz
Resultado abreviado
Se você implantou recursos do Windows, todas as instâncias do
na saída a seguir serãolinux
windows
. Os outros
podem ser diferentes da saída.example values
Name: eks-sample-
linux
-deployment-65b7669776-m6qxz
Namespace: eks-sample-app Priority: 0 Node: ip-192-168-45-132
.us-west-2
.compute.internal/192.168.45.132
[...] IP:192.168.63.93
IPs: IP:192.168.63.93
Controlled By: ReplicaSet/eks-sample-linux
-deployment-65b7669776
[...] Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 3m20s default-scheduler Successfully assigned eks-sample-app/eks-sample-linux
-deployment-65b7669776-m6qxz
to ip-192-168-45-132
.us-west-2
.compute.internal [...]Na saída anterior, o valor de
IP:
é um IP exclusivo atribuído ao Pod do bloco CIDR atribuído à sub-rede em que está o nó. Se preferir atribuir aos Pods endereços IP de blocos CIDR diferentes, você pode alterar o comportamento padrão. Para ter mais informações, consulte Implementar pods em sub-redes alternadas com rede personalizada. Você também pode ver que o agendador do Kubernetes agendou o Pod noNode
com o endereço IP
.192.168.45.132
dica
Em vez de usar a linha de comando, você pode visualizar muitos detalhes sobre Pods, serviços, implantações e outros recursos do Kubernetes no AWS Management Console. Para ter mais informações, consulte Visualizar recursos do Kubernetes no AWS Management Console.
-
Execute um shell no Pod que você descreveu na etapa anterior, substituindo
pelo ID de um dos Pods.65b7669776-m6qxz
-
No shell do Pod, visualize a saída do servidor da Web que foi instalado com a implantação em uma etapa anterior. Basta especificar o nome do serviço. Ele é resolvido para o endereço IP do serviço pelo CoreDNS, que é implantado com um cluster do Amazon EKS, por padrão.
-
No shell do Pod, visualize o servidor DNS para o Pod.
-
Desconecte-se do Pod digitando
exit
. -
Ao terminar de usar a aplicação de exemplo, você poderá remover o namespace, o serviço e a implantação de exemplo com o comando a seguir.
kubectl delete namespace eks-sample-app
Próximos Passos
Após implantar a aplicação de exemplo, talvez você queira tentar alguns dos seguintes exercícios: