Dodanie rozwiązania dla tych, którzy napotkali ten błąd podczas pracy na amazon-eks.
Przede wszystkim biegnij:
kubectl describe svc <service-name>
Następnie przejrzyj events
pole w przykładowym wyniku poniżej:
Name: some-service
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"some-service","namespace":"default"},"spec":{"ports":[{"port":80,...
Selector: app=some
Type: LoadBalancer
IP: 10.100.91.19
Port: <unset> 80/TCP
TargetPort: 5000/TCP
NodePort: <unset> 31022/TCP
Endpoints: <none>
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal EnsuringLoadBalancer 68s service-controller Ensuring load balancer
Warning SyncLoadBalancerFailed 67s service-controller Error syncing load balancer: failed to ensure load balancer: could not find any suitable subnets for creating the ELB
Przejrzyj komunikat o błędzie:
Failed to ensure load balancer: could not find any suitable subnets for creating the ELB
W moim przypadku przyczyną braku odpowiednich podsieci do utworzenia ELB były:
1: Klaster EKS został wdrożony w niewłaściwej grupie podsieci - podsieci wewnętrzne zamiast publicznych.
(*) Domyślnie usługi typu LoadBalancer
tworzą publiczne moduły równoważenia obciążenia, jeśli nie service.beta.kubernetes.io/aws-load-balancer-internal: "true"
podano adnotacji).
2: Podsieci nie zostały oznaczone zgodnie z wymaganiami wymienionymi tutaj .
Tagowanie VPC za pomocą:
Key: kubernetes.io/cluster/yourEKSClusterName
Value: shared
Oznaczanie podsieci publicznych za pomocą:
Key: kubernetes.io/role/elb
Value: 1