Cluster VPC: perché un servizio Kubernetes LoadBalancer non riesce senza IP?
Cloud privato virtuale
Hai reso accessibile la tua app creando un servizio Kubernetes LoadBalancer nel tuo cluster VPC, ma il servizio non riesce a essere configurato perché non sono disponibili indirizzi IP sulle tue sottoreti.
Hai reso accessibile la tua app creando un servizio Kubernetes LoadBalancer nel tuo cluster VPC.
Quando si esegue il comando oc describe svc <kubernetes_lb_service_name>``, nella sezione " Eventi " viene visualizzato un messaggio di avviso simile a uno dei seguenti:
The subnet with ID(s) '<subnet_id>' has insufficient available ipv4 addresses.
Quando crei un servizio LoadBalancer Kubernetes nel tuo cluster, un programma di bilanciamento del carico VPC viene automaticamente creato nel tuo VPC.
Il programma di bilanciamento del carico VPC inserisce un indirizzo IP mobile per il tuo servizio LoadBalancer Kubernetes dietro a un nome host con cui puoi accedere alla tua applicazione.
Nei cluster VPC, ai servizi e ai nodi di lavoro vengono assegnati degli indirizzi IP dalle stesse sottoreti. L'instradamento del traffico è abilitato tra le sottoreti, per cui quando tutti gli indirizzi IP in una sottorete per una zona sono utilizzati
dai servizi o dai nodi di lavoro, puoi ancora creare dei nuovi servizi o nodi di lavoro in tale zona perché vengono utilizzati gli indirizzi IP dalle sottoreti in altre zone. Tuttavia, se tutti gli indirizzi IP di tutte le sottoreti sono già
in uso, non è possibile configurare correttamente un nuovo servizio Kubernetes LoadBalancer.
Una volta creata una sottorete VPC, non è possibile modificarne le dimensioni né cambiare l'intervallo di indirizzi IP.
Invece, devi creare una sottorete VPC più grande in una o più zone in cui disponi di nodi di lavoro. A questo punto, si crea un nuovo pool di worker utilizzando le sottoreti più grandi.
-
Crea una nuova sottorete VPC all’interno della stessa VPC e in una o più zone in cui il tuo cluster dispone di nodi di lavoro. Assicurati di creare una sottorete che può supportare il numero di servizi e di nodi di lavoro che intendi creare nel tuo cluster. La dimensione CIDR predefinita di ogni sottorete VPC è
/24, che può supportare fino a 253 servizi e nodi di lavoro. Per verificare la VPC e le zone del tuo cluster, esegui il comandoibmcloud oc cluster get --cluster <cluster_name_or_ID>``. -
Crea un nuovo pool di lavoro nel tuo cluster.
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> -
Utilizzando gli ID delle nuove sottoreti create nel passaggio precedente, aggiungi le zone al pool di worker. Ripetere questo comando per ogni zona e sottorete.
ibmcloud oc zone add vpc-gen2 --zone <zone> --subnet-id <subnet_id> --cluster <cluster_name_or_ID> --worker-pool <worker_pool_name> -
Dopo alcuni minuti, verifica che il provisioning del tuo servizio
LoadBalancersia avvenuto correttamente in una delle nuove sottoreti. Se il servizio viene attivato correttamente, nella sezione Eventi non vengono visualizzati eventi di tipo “Warning” o “Error”.oc describe svc <kubernetes_lb_service_name>