Estoy corriendo
kubectl get nodes -o yaml | grep ExternalIP -C 1Pero no encuentro ninguna IP externa. Aparecen varios comentarios sobre problemas con configuraciones que no son en la nube.
Estoy siguiendo este documento https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/
con microk8s en un escritorio.
Si configura el clúster k8s en la nube, Kubernetes detectará automáticamente la IP externa por usted. ExternalIP será una dirección IP de equilibrio de carga. Pero si lo configura en las instalaciones o en su escritorio. Puede establecer una dirección IP externa implementando su balance de carga, como MetaLB. Puedes conseguirlo aquí
En resumen: de mi respuesta Kubernetes Ingress nginx en Minikube falla .
Por defecto, todas las soluciones como minikube no le proporcionan LoadBalancer. Las soluciones en la nube como EKS, Google Cloud, Azure lo hacen por usted automáticamente girando en segundo plano LB separado. Es por eso que ve el estado Pendiente.
En su caso, lo más probable es que haya tomado la decisión correcta de investigar los complementos de MicroK8 . Hay un complemento: MetalLB :
Gracias a @Matt con su equilibrador de carga externo MetalLB en la edición comunitaria de docker-desktop en la respuesta de la infraestructura de Kubernetes de un solo nodo de Windows 10 y la información investigada.
MetalLB Loadbalancer es una implementación de LB de red que intenta "simplemente trabajar" en clústeres bare metal.
Cuando habilite este complemento, se le pedirá un grupo de direcciones IP del que MetalLB entregará las IP:
microk8s enable metallbPara el equilibrio de carga en un clúster de MicroK8s, MetalLB puede utilizar Ingress para equilibrar correctamente todo el clúster (asegúrese de haber habilitado también el ingreso en MicroK8s primero, con microk8s para habilitar el ingreso). Para hacer esto, requiere un servicio. Un servicio de entrada adecuado se define aquí:
apiVersion: v1 kind: Service metadata: name: ingress namespace: ingress spec: selector: name: nginx-ingress-microk8s type: LoadBalancer # loadBalancerIP is optional. MetalLB will automatically allocate an IP # from its pool if not specified. You can also specify one manually. # loadBalancerIP: xyza ports: - name: http protocol: TCP port: 80 targetPort: 80 - name: https protocol: TCP port: 443 targetPort: 443Puede guardar este archivo como
ingress-service.yamly luego aplicarlo con:
microk8s kubectl apply -f ingress-service.yamlAhora hay un equilibrador de carga que escucha en una IP arbitraria y dirige el tráfico hacia uno de los controladores de entrada de escucha.