VPC-Cluster: Warum schlägt ein Kubernetes-Service vom Typ LoadBalancer ohne IPs fehl?
Virtuelle Private Cloud
Sie haben Ihre App veröffentlicht, indem Sie in Ihrem VPC-Cluster einen „ Kubernetes “-Dienst ( LoadBalancer ) eingerichtet haben, doch die Bereitstellung des Dienstes schlägt fehl, da in Ihren Subnetzen keine IP-Adressen verfügbar
sind.
Sie haben Ihre App zugänglich gemacht, indem Sie einen Kubernetes Service vom Typ LoadBalancer (Lastausgleich) in Ihrem VPC-Cluster erstellt haben.
Beim Ausführen von oc describe svc <kubernetes_lb_service_name> wird im Abschnitt Ereignisse eine Warnung ähnlich der folgenden angezeigt:
The subnet with ID(s) '<subnet_id>' has insufficient available ipv4 addresses.
Wenn Sie einen Kubernetes Service vom Typ LoadBalancer in Ihrem Cluster erstellen, wird die VPC-Lastausgleichsfunktion automatisch in Ihrer VPC erstellt.
Die VPC-Lastausgleichsfunktion setzt eine variable IP-Adresse für Ihren Kubernetes Service vom Typ LoadBalancer hinter einen Hostnamen, durch den Sie auf Ihre App zugreifen können.
In VPC-Clustern werden Workerknoten und Services IP-Adressen aus denselben Teilnetzen zugewiesen. Die Datenverkehrsweiterleitung ist zwischen Teilnetzen aktiviert, sodass Sie, auch wenn alle IP-Adressen in einem Teilnetz für eine Zone von Workerknoten
oder Services verwendet werden, immer noch neue Workerknoten und Services in dieser Zone erstellen können, da diese IP-Adressen aus Teilnetzen in anderen Zonen verwenden. Wenn jedoch alle IP-Adressen in allen Teilnetzen im Gebrauch sind, kann
kein neuer Kubernetes LoadBalancer-Service erfolgreich bereitgestellt werden.
Nachdem Sie ein VPC-Teilnetz erstellt haben, können Sie die Größe und den IP-Bereich des Teilnetzes nicht mehr ändern.
Stattdessen müssen Sie ein größeres VPC-Teilnetz in einer oder mehreren Zonen erstellen, in denen Sie Workerknoten haben. Anschließend erstellen Sie einen neuen Worker-Pool unter Verwendung der größeren Subnetze.
-
Erstellen Sie ein neues VPC-Subnetz in derselben VPC und in einer oder mehreren Zonen, in denen sich die Worker-Knoten Ihres Clusters befinden. Stellen Sie sicher, dass Sie ein Teilnetz erstellen, dass die Anzahl sowohl der Workerknoten als auch der Services unterstützen kann, deren Erstellung Sie in Ihrem Cluster planen. Die CIDR-Standardgröße jedes VPC-Teilnetzes beträgt
/24und kann bis zu 253 Workerknoten und Services unterstützen. Um die VPC und die Zonen Ihres Clusters zu überprüfen, führen Sie den Befehl „ibmcloud oc cluster get --cluster <cluster_name_or_ID>“ aus. -
Erstellen Sie einen neuen Worker-Pool in Ihrem 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> -
Fügen Sie die Zonen unter Verwendung der IDs der neuen Subnetze, die Sie im vorherigen Schritt erstellt haben, zum Worker-Pool hinzu. Wiederholen Sie diesen Befehl für jede Zone und jedes Subnetz.
ibmcloud oc zone add vpc-gen2 --zone <zone> --subnet-id <subnet_id> --cluster <cluster_name_or_ID> --worker-pool <worker_pool_name> -
Überprüfen Sie nach einigen Minuten, ob Ihr Service vom Typ
LoadBalancererfolgreich in einem der neuen Teilnetze bereitgestellt wurde. Wenn der Dienst erfolgreich bereitgestellt wurde, werden im Abschnitt „Ereignisse“ keine Ereignisse vom Typ „Warning“ oder „Error“ angezeigt.oc describe svc <kubernetes_lb_service_name>