Este é meu comando eksctl para criar um cluster EKS:
eksctl create cluster \
--name app \
--version 1.29 \
--region us-east-1 \
--nodegroup-name app-worker-group \
--node-type t2.micro \
--nodes 1 \
--vpc-cidr 172.31.0.0/16
Após a criação, eu implanto uma implantação assim:
kubectl apply -f k8s/deployment.yaml
Onde o arquivo yaml fica assim:
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-api
labels:
app: app-api
spec:
replicas: 1
selector:
matchLabels:
app: app-api
template:
metadata:
labels:
app: app-api
spec:
containers:
- name: app-api
image: path/to/image
ports:
- containerPort: 2201 # port of the node js app
Mas o status do pod está permanentemente pendente:
~/Documents/app kubectl get pod
NAME READY STATUS RESTARTS AGE
app-api-785cbb9d89-vvbdf 0/1 Pending 0 11h
Qual poderia ser a razão para isso?
EDITADO:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 2m1s (x4 over 17m) default-scheduler 0/1 nodes are available: 1 Too many pods. preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod.
Atualmente, seu cluster tem apenas 1 nó e o número atual de pods em execução neste nó
--node-type t2.micro
não pode executar mais pods. Você pode adicionar mais 1 nó ao seu cluster no Console AWS > EKS > Compute (guia) > Grupos de nós, vá para o grupo de nós e clique em "Editar" para aumentar o "Tamanho desejado".