Mit dem OpenStack Cloud Provider für Kubernetes können Sie OpenStack Load Balancing für einen Cluster verwenden, der auf OpenStack-VMs ausgeführt wird.
Nachdem Sie den Anbieter installiert und konfiguriert haben, erhält jeder Dienst vom Typ LoadBalancer einen OpenStack Octavia-Load-Balancer und eine externe IP-Adresse aus Ihrem Floating-IP-Netzwerk. In diesem Dokument prüfen Sie die Integration, indem Sie eine Beispielanwendung freigeben.
Vorbereitung
In diesem Leitfaden wird davon ausgegangen, dass Sie einen mit Google Distributed Cloud erstellten Cluster in Ihrer OpenStack-Umgebung ausführen. Die Einrichtung ähnelt der im Leitfaden Bare-Metal-Cluster auf OpenStack bereitstellen. Folgen Sie zuerst dieser Anleitung, bevor Sie die folgenden Schritte ausführen.

Anbieter konfigurieren
Im folgenden Abschnitt wird davon ausgegangen, dass Sie von einem Terminalfenster auf Ihrer lokalen Workstation aus beginnen.
Verwenden Sie als Quelle die OpenStack-Clientkonfigurationsdatei (
openrc). Sie können sie über die OpenStack WebUI herunterladen.source PATH_TO_OPENRC_FILE/openrcErstellen Sie die Konfigurationsdatei für den OpenStack Kubernetes Cloud Provider.
cat > cloud.conf << EOF [Global] auth-url=${OS_AUTH_URL} username=${OS_USERNAME} password=${OS_PASSWORD} region=RegionOne tenant-name=admin domain-id=default # this is for using a self-signed cert if your using a CA then comment this line # and point to the CA certificate using the "ca-file" arg tls-Insecure=true [LoadBalancer] use-octavia=true # this is generally the public network on OpenStack floating-network-id=PUBLIC_NETWORK_ID # this should be private network subnet where vip is allocated for the ABM nodes subnet-id=ABM_NETWORK_SUBNET_ID [BlockStorage] bs-version=v2 EOFDabei gilt:
OS_AUTH_URL,OS_USERNAME,OS_PASSWORD: Diese Variablen sollten bereits in der Umgebung festgelegt sein, indem Sie die Dateiopenrcals Quelle verwenden. Daher werden sie automatisch erfasst.PUBLIC_NETWORK_ID: Dies ist das öffentlich zugängliche Netzwerk in Ihrer OpenStack-Bereitstellung, von dem Floating-IP-Adressen zugewiesen werden. Aus diesem Netzwerk werden dieLoadBalancer IPsfür die Kubernetes-Dienste zugewiesen. Sie können einen einzeiligen Befehl verwenden, um diese IP-Adresse aus Ihrer OpenStack-Umgebung abzurufen.ABM_NETWORK_SUBNET_ID: Dies ist das Subnetz im privaten Netzwerk in Ihrer OpenStack-Bereitstellung, von dem IP-Adressen für die VMs zugewiesen werden, die Google Distributed Cloud (nur Software) ausführen. Sie können einen Befehl wie ID des öffentlichen Netzwerks in OpenStack abrufen verwenden, um diese IP-Adresse aus Ihrer OpenStack-Umgebung abzurufen.
Rufen Sie die öffentliche Floating-IP-Adresse der
abm-ws-VM ab.export OPENSTACK_IPS=$(openstack floating ip list --tags=abm_ws_floatingip -f json) export FLOATING_IP=$(jq -c '.[]."Floating IP Address"' <<< $OPENSTACK_IPS | tr -d '"')Kopieren Sie die Datei
cloud.confin dieabm-ws-VM in OpenStack.scp ./cloud.conf ubuntu@$FLOATING_IP:~Stellen Sie eine sichere SSH-Verbindung zur
abm-ws-VM her und melden Sie sich alsroot-Nutzer an.Der
root-Nutzer gemäß der Konfiguration durch die Terraform-Skripts istabm.ssh ubuntu@$FLOATING_IP sudo -u abm -iKopieren Sie die
cloud.conf-Dateien in das$HOME-Verzeichnis desroot-Nutzers.cp /home/ubuntu/cloud.conf $HOMEErstellen Sie ein
Kubernetes Secretmit der Konfiguration.# make sure the kubectl client is pointing towards your cluster export KUBECONFIG=~/bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig # store the provider configurations as a Kubernetes secret kubectl create secret -n kube-system generic cloud-config --from-file=cloud.confInstallieren Sie den OpenStack Cloud Provider für Kubernetes.
# create the necessary roles for the OpenStack provider kubectl apply -f https://raw.githubusercontent.com/kubernetes/cloud-provider-openstack/master/manifests/controller-manager/cloud-controller-manager-roles.yaml # create the required role-bindings for the OpenStack provider kubectl apply -f https://raw.githubusercontent.com/kubernetes/cloud-provider-openstack/master/manifests/controller-manager/cloud-controller-manager-role-bindings.yaml # create the OpenStack controller manager kubectl apply -f https://raw.githubusercontent.com/kubernetes/cloud-provider-openstack/master/manifests/controller-manager/openstack-cloud-controller-manager-ds.yaml
OpenStack-Integration validieren
Stellen Sie die Point-Of-Sales-Anwendung bereit.
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales.yamlPrüfen Sie, ob die Anwendungs-Pods ausgeführt werden.
kubectl get podsErwartete Ausgabe:
NAME READY STATUS RESTARTS AGE api-server-7db4777f7f-zflk5 1/1 Running 0 74s inventory-58c6fb5568-dqk2x 1/1 Running 0 74s payments-68d5d65d5c-5mjl6 1/1 Running 0 74sDie Anwendung über einen Dienst vom Typ
LoadBalancerverfügbar gemacht.kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales-service.yamlVersuchen Sie, über einen Browser auf den Dienst zuzugreifen.
# wait for the external IP to be assigned kubectl get service api-server-lb NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE api-server-lb LoadBalancer 10.203.77.215 172.29.249.159 80:32378/TCP 4m12sPoint-Of-Sales-Anwendung, die über die
EXTERNAL-IPaufgerufen wird.
Sie sehen, dass in OpenStack ein neuer OpenStack-Load-Balancer erstellt wird, indem Sie die OpenStack WebUI aufrufen.
