Clústeres de VPC: ¿Por qué un servicio de Kubernetes LoadBalancer falla sin ninguna IP?
Nube privada virtual
Has publicado tu aplicación creando un servicio de Kubernetes LoadBalancer en tu clúster de VPC, pero el servicio no se puede aprovisionar porque no hay direcciones IP disponibles en tus subredes.
Ha expuesto su app creando un servicio de Kubernetes LoadBalancer en el clúster VPC.
Cuando ejecuta oc describe svc <kubernetes_lb_service_name>, verá un mensaje de aviso en la sección Sucesos similar a uno de los siguientes:
The subnet with ID(s) '<subnet_id>' has insufficient available ipv4 addresses.
Cuando se crea un servicio LoadBalancer de Kubernetes en el clúster, se crea automáticamente un equilibrador de carga de VPC en la VPC.
El equilibrador de carga de VPC coloca una dirección IP flotante para el servicio LoadBalancer de Kubernetes detrás de un nombre de host a través del cual puede acceder a la app.
En clústeres de VPC, tanto los nodos trabajadores como los servicios tienen asignadas direcciones IP de las mismas subredes. El direccionamiento del tráfico está habilitado entre subredes, por lo que, cuando los nodos trabajadores o los servicios
utilizan todas las direcciones IP de una subred para una zona, todavía puede crear nuevos nodos trabajadores o servicios en esa zona porque utilizan direcciones IP de subredes en otras zonas. Sin embargo, si todas las direcciones IP de todas
las subredes se están utilizando, no se puede suministrar satisfactoriamente un nuevo servicio de LoadBalancer de Kubernetes.
Después de crear una subred de VPC, no puede cambiarse el tamaño ni su rango de IP.
Debe crear una subred de VPC mayor en una o más zonas en las que tenga nodos trabajadores. A continuación, se crea un nuevo grupo de trabajadores utilizando las subredes más grandes.
-
Crea una nueva subred de VPC en la misma VPC y en una o varias zonas en las que tu clúster tenga nodos de trabajo. Asegúrese de crear una subred que pueda dar soporte tanto al número de nodos trabajadores como a los servicios que tiene previsto crear en el clúster. El tamaño de CIDR predeterminado de cada subred de VPC es
/24, que puede dar soporte a un máximo de 253 nodos trabajadores y servicios. Para comprobar la VPC y las zonas de tu clúster, ejecutaibmcloud oc cluster get --cluster <cluster_name_or_ID>. -
Cree una nueva agrupación de nodos trabajadores en el clúster.
ibmcloud oc worker-pool create vpc-gen2 --name <name> --cluster <cluster_name_or_ID> --flavor <flavor> --size-per-zone <number_of_worker_nodes> --label <key>=<value> -
Utilizando los ID de las nuevas subredes que has creado en el paso anterior, añade las zonas al grupo de trabajadores. Repite este comando para cada zona y subred.
ibmcloud oc zone add vpc-gen2 --zone <zone> --subnet-id <subnet_id> --cluster <cluster_name_or_ID> --worker-pool <worker_pool_name> -
Transcurridos unos minutos, verifique que el servicio
LoadBalancerse ha suministrado correctamente en una de las nuevas subredes. Si el servicio se ha activado correctamente, en la sección «Eventos» no aparecerán eventos de tipo «Warning» ni «Error».oc describe svc <kubernetes_lb_service_name>