Estoy tratando de exponer un servicio al mundo exterior usando el tipo de servicio loadBalancer
.
Para eso, he seguido este documento.
https://aws.amazon.com/premiumsupport/knowledge-center/eks-kubernetes-services-cluster/
Mi loadbalancer.yaml
se ve así
apiVersion: v1 kind: Service metadata: name: nginx-service spec: type: LoadBalancer selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80
Pero el balanceador de carga no se está creando como se esperaba. Recibo el siguiente error.
Warning SyncLoadBalancerFailed 8s (x3 over 23s) service-controller Error syncing load balancer: failed to ensure load balancer: could not find any suitable subnets for creating the ELB
Parece que se debe a algunos problemas en las etiquetas de subred para resolver, pero tengo las etiquetas requeridas en mis subredes
kubernetes.io/cluster/<cluster-name>. owned kubernetes.io/role/elb 1
Pero aún así, recibo el error de could not find any suitable subnets for creating the ELB
De forma predeterminada, AWS EKS solo adjunta balanceadores de carga a subredes públicas. Para iniciarlo en una subred privada, no solo necesita etiquetar sus subredes (que parece que lo hizo), sino también anotar su balanceador de carga:
service.beta.kubernetes.io/aws-load-balancer-internal: "verdadero"
Puede encontrar más información aquí .
Para las personas que pueden llegar a esta pregunta, me he enfrentado al mismo error, pero el problema era realmente simple.
La etiqueta con la clave kubernetes.io/cluster/<cluster-name> tenía un nombre de clúster incorrecto porque la automatización que lo implementó no era correcta.
En EKS 1.16, necesito NLB orientado a Internet.
La causa raíz en EKS es que no seleccionó una subred pública al crear el clúster.
Después de crear el clúster, EKS no permitirá actualizar las subredes a partir de ahora aquí
Para resolver el problema, he realizado los siguientes pasos
public subnet
en la misma vpc de EKSIGW
adjunto en tablas de rutas en subredes públicas recién creadastags
en las subredes públicaskubernetes.io/cluster/<EKSClusterName>
: shared
Nota: en un cuarto paso, reemplace el nombre de su clúster de EKS en el marcador de posición EKSClusterName