Creé un clúster de Kubernetes con instancias de AWS ec2 usando kubeadm pero cuando intento crear un servicio con tipo LoadBalancer obtengo un estado pendiente de EXTERNAL-IP
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 123m nginx LoadBalancer 10.107.199.170 <pending> 8080:31579/TCP 45m52sMi comando de creación es
kubectl expose deployment nginx --port 8080 --target-port 80 --type=LoadBalancerNo estoy seguro de lo que estoy haciendo mal.
Lo que espero ver es una dirección IP EXTERNA proporcionada para el balanceador de carga.
¿Alguien ha tenido esto y lo ha resuelto con éxito, por favor?
Gracias.
Debe configurar la interfaz entre k8s y AWS, que es un ws-cloud-provider-controller .
apiVersion: kubeadm.k8s.io/v1beta1 kind: InitConfiguration nodeRegistration: kubeletExtraArgs: cloud-provider: awsSe pueden encontrar más detalles:
Una vez que termine esta configuración, tendrá el lujo de controlar no solo la creación de AWS LB para cada servicio k8s con tipo LoadBalancer.. sino que también podrá controlar muchas cosas usando anotaciones .
apiVersion: v1 kind: Service metadata: name: example namespace: kube-system labels: run: example annotations: service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:xx-xxxx-x:xxxxxxxxx:xxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx #replace this value service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http spec: type: LoadBalancer ports: - port: 443 targetPort: 5556 protocol: TCP selector: app: example