In dieser Anleitung wird erläutert, wie Sie den OpenStack Cloud Provider für Kubernetes in Ihrem GKE on Bare Metal-Cluster konfigurieren. Der OpenStack Cloud Provider muss so konfiguriert sein, dass Kubernetes-Dienste mithilfe des OpenStack LBaaS verfügbar gemacht werden.
Vorbereitung
In dieser Anleitung wird davon ausgegangen, dass Sie einen GKE on Bare Metal-Cluster in Ihrer OpenStack-Umgebung mit einer ähnlichen Einrichtung wie in der Anleitung GDCV für Bare Metal auf OpenStack bereitstellen ausführen. Befolgen Sie diese Anleitung, bevor Sie diese Schritte ausführen.
![GKE on Bare Metal in OpenStack installiert.](https://cloud.google.com/anthos/clusters/docs/bare-metal/1.16/images/openstack-setup.png?hl=de)
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/openrc
Erstellen 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 EOF
Ersetzen Sie Folgendes:
OS_AUTH_URL
,OS_USERNAME
,OS_PASSWORD
: Diese Variablen sollten bereits in der Umgebung festgelegt sein, indem Sie die Dateiopenrc
als Quelle verwenden. Daher werden sie automatisch erfasst.PUBLIC_NETWORK_ID
: Dies ist das öffentlich zugängliche Netzwerk in Ihrer OpenStack-Bereitstellung, über das Floating-IP-Adressen zugewiesen werden. Aus diesem Netzwerk werden dieLoadBalancer IPs
für die Kubernetes-Dienste zugewiesen. Sie können diese IP-Adresse mit einem Befehl wie diesem aus Ihrer OpenStack-Umgebung abrufen.ABM_NETWORK_SUBNET_ID
: Dies ist das Subnetz im privaten Netzwerk in Ihrer OpenStack-Bereitstellung, über das den VMs, auf denen GKE on Bare Metal ausgeführt wird, IP-Adressen zugewiesen werden. Sie können diese IP-Adresse mit einem Befehl wie diesem aus Ihrer OpenStack-Umgebung abrufen.
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.conf
in dieabm-ws
-VM in OpenStack.scp ./cloud.conf ubuntu@$FLOATING_IP:~
Melden Sie sich sicher über SSH in der
abm-ws
-VM an und melden Sie sich alsroot
-Nutzer an. Der von den Terraform-Skripts konfigurierteroot
-Nutzer istabm
.ssh ubuntu@$FLOATING_IP sudo -u abm -i
Kopieren Sie die
cloud.conf
-Dateien in das$HOME
-Verzeichnis desroot
-Nutzers.cp /home/ubuntu/cloud.conf $HOME
Erstellen Sie ein
Kubernetes Secret
mit der Konfiguration.# make sure the kubectl client is pointing towards your Anthos on bare metal 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.conf
Installieren 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.yaml
Prüfen Sie, ob die Anwendungs-Pods ausgeführt werden.
kubectl get pods
Erwartete 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 74s
Stellen Sie die Anwendung über einen Dienst vom Typ
LoadBalancer
bereit.kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales-service.yaml
Versuchen 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 4m12s
Point-Of-Sales-Anwendung, die über die
EXTERNAL-IP
aufgerufen wird.Sie sehen, dass in OpenStack ein neuer OpenStack-Load-Balancer erstellt wird, indem Sie die OpenStack WebUI aufrufen.