Auf dieser Seite wird beschrieben, wie Sie einen Administrator- und einen Nutzercluster erstellen.
SSH-Verbindung zur Administrator-Workstation herstellen
Stellen Sie eine SSH-Verbindung zu Ihrer Administrator-Workstation her:
ssh -i ~/.ssh/vsphere_workstation ubuntu@[IP_ADDRESS]
Dabei ist [IP_ADDRESS] die IP-Adresse der Administrator-Workstation.
Führen Sie alle verbleibenden Schritte in diesem Thema auf Ihrer Administrator-Workstation aus.
Anmelden
Melden Sie sich mit den Anmeldedaten Ihres Google Cloud-Nutzerkontos in Google Cloud an. Das Nutzerkonto muss mindestens die IAM-Rolle "Betrachter" haben:
gcloud auth login
Registrieren Sie gcloud
als Credential Helper für Docker.
Weitere Informationen zu diesem Befehl:
gcloud auth configure-docker
Statische IP-Adressen für den Administratorcluster konfigurieren
Erstellen Sie eine Hostkonfigurationsdatei mit dem Namen admin-hostconfig.yaml
, um die statischen IP-Adressen anzugeben, die Sie für Ihren Administratorcluster verwenden möchten. Für diese Übung müssen Sie fünf IP-Adressen angeben, die vom Administratorcluster verwendet werden sollen.
Im Folgenden finden Sie ein Beispiel für eine Hostkonfigurationsdatei mit fünf Hosts:
hostconfig: dns: 172.16.255.1 tod: 192.138.210.214 otherdns: - 8.8.8.8 - 8.8.4.4 othertod: - ntp.ubuntu.com searchdomainsfordns: - "my.local.com" blocks: - netmask: 255.255.252.0 gateway: 110.116.232.1 ips: - ip: 172.16.20.10 hostname: admin-host1 - ip: 172.16.20.11 hostname: admin-host2 - ip: 172.16.20.12 hostname: admin-host3 - ip: 172.16.20.13 hostname: admin-host4 - ip: 172.16.20.14 hostname: admin-host5
Das Feld ips
enthält ein Array von IP-Adressen und Hostnamen. Dies sind die IP-Adressen und Hostnamen, die GKE On-Prem den Knoten Ihres Administratorclusters zuweist.
In der Hostkonfigurationsdatei geben Sie auch die Adressen der DNS-Server, der Zeitserver und des Standard-Gateways an, die von den Knoten des Administratorclusters verwendet werden.
Das Feld searchdomainsfordns
ist ein Array von DNS-Suchdomains, die im Cluster verwendet werden sollen. Diese Domains werden als Teil einer Domainsuchliste verwendet.
Statische IP-Adressen für den Nutzercluster konfigurieren
Erstellen Sie zur Angabe der statischen IP-Adressen, die Sie für Ihren Nutzercluster verwenden möchten, eine Hostkonfigurationsdatei mit dem Namen user-hostconfig.yaml
.
Im Folgenden finden Sie ein Beispiel für eine Hostkonfigurationsdatei mit drei Hosts:
hostconfig: dns: 172.16.255.1 tod: 192.138.210.214 otherdns: - 8.8.8.8 - 8.8.4.4 othertod: - ntp.ubuntu.com searchdomainsfordns: - "my.local.com" blocks: - netmask: 255.255.252.0 gateway: 110.116.232.1 ips: - ip: 172.16.20.15 hostname: user-host1 - ip: 172.16.20.16 hostname: user-host2 - ip: 172.16.20.17 hostname: user-host3
Das Feld ips
enthält ein Array von IP-Adressen und Hostnamen. Dies sind die IP-Adressen und Hostnamen, die GKE On-Prem den Knoten Ihrer Nutzerclusters zuweist.
Das Feld searchdomainsfordns
ist ein Array von DNS-Suchdomains, die im Cluster verwendet werden sollen. Diese Domains werden als Teil einer Domainsuchliste verwendet.
GKE On-Prem-Konfigurationsdatei erstellen
Kopieren Sie die folgende YAML-Datei in eine Datei mit dem Namen config.yaml
.
bundlepath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.2.2-gke.2-full.tgz" vcenter: credentials: address: "" username: "" password: "" datacenter: "" datastore: "" cluster: "" network: "" resourcepool: "" datadisk: "" cacertpath: "" proxy: url: "" noproxy: "" admincluster: ipblockfilepath: "admin-hostconfig.yaml" bigip: credentials: &bigip-credentials address: "" username: "" password: "" partition: "" vips: controlplanevip: "" ingressvip: "" serviceiprange: 10.96.232.0/24 podiprange: 192.168.0.0/16 usercluster: ipblockfilepath: "user-hostconfig.yaml" bigip: credentials: *bigip-credentials partition: "" vips: controlplanevip: "" ingressvip: "" clustername: "initial-user-cluster" masternode: cpus: 4 memorymb: 8192 replicas: 1 workernode: cpus: 4 memorymb: 8192 replicas: 3 serviceiprange: 10.96.0.0/12 podiprange: 192.168.0.0/16 lbmode: Integrated gkeconnect: projectid: "" registerserviceaccountkeypath: "" agentserviceaccountkeypath: "" stackdriver: projectid: "" clusterlocation: "" enablevpc: false serviceaccountkeypath: "" gcrkeypath: ""
Konfigurationsdatei ändern
Ändern Sie config.yaml
wie in den folgenden Abschnitten beschrieben:
vcenter.credentials.address
Das Feld vcenter.credentials.address
enthält die IP-Adresse oder den Hostnamen Ihres vCenter-Servers.
Bevor Sie das Feld vsphere.credentials.address field
ausfüllen, laden Sie das bereitgestellte Zertifikat Ihres vCenter-Servers herunter und prüfen Sie es. Geben Sie den folgenden Befehl ein, um das Zertifikat herunterzuladen und in einer Datei namens vcenter.pem
zu speichern:
true | openssl s_client -connect [VCENTER_IP]:443 -showcerts 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' > vcenter.pem
Dabei ist [VCENTER_IP] die IP-Adresse Ihres vCenter-Servers.
Öffnen Sie die Zertifikatsdatei, um den "Subject Common Name" und den "Subject Alternative Name" festzustellen:
openssl x509 -in vcenter.pem -text -noout
Die Ausgabe enthält den Subject
Common Name (CN). Dies kann eine IP-Adresse oder ein Hostname sein. Beispiel:
Subject: ... CN = 203.0.113.100
Subject: ... CN = my-host.my-domain.example
Die Ausgabe kann auch unter Subject Alternative Name
einen oder mehrere DNS-Namen enthalten:
X509v3 Subject Alternative Name: DNS:vcenter.my-domain.example
Wählen Sie den Common Name Subject
oder einen der DNS-Namen unter Subject Alternative Name
als Wert für vcenter.credentials.address
in Ihrer Konfigurationsdatei aus. Beispiel:
vcenter: credentials: address: "203.0.113.1" ...
vcenter: credentials: address: "my-host.my-domain.example" ...
Sie müssen einen Wert auswählen, der im Zertifikat angezeigt wird. Wenn die IP-Adresse beispielsweise nicht im Zertifikat enthalten ist, können Sie sie nicht für vcenter.credentials.address
verwenden.
vcenter.credentials
GKE On-Prem muss den Nutzernamen und das Passwort Ihres vCenter-Servers kennen. Legen Sie dazu die Werte username
und password
unter vcenter.credentials
fest. Beispiel:
vcenter: credentials: ... username: "my-name" password: "my-password"
vcenter.datacenter
, .datastore
, .cluster
, .network
GKE On-Prem benötigt einige Informationen zur Struktur Ihrer vSphere-Umgebung. Legen Sie dazu die Werte unter vcenter
fest.
Beispiel:
vcenter: ... datacenter: "MY-DATACENTER" datastore: "MY-DATASTORE" cluster: "MY-VSPHERE-CLUSTER" network: "MY-VIRTUAL-NETWORK"
vcenter.resourcepool
Ein vSphere-Ressourcenpool ist eine logische Gruppierung von vSphere-VMs in Ihrem vSphere-Cluster. Wenn Sie einen anderen Ressourcenpool als den Standardpool verwenden, geben Sie seinen Namen in vcenter.resourcepool
an. Beispiel:
vcenter: ... resourcepool: "my-pool"
Wenn Sie möchten, dass GKE On-Prem seine Knoten im Standardressourcenpool des vSphere-Clusters bereitstellt, geben Sie für vcenter.resourcepool
einen leeren String an. Beispiel:
vcenter: ... resourcepool: ""
vcenter.datadisk
GKE On-Prem erstellt ein VM-Laufwerk (VMDK), das die Kubernetes-Objektdaten für den Administratorcluster enthält. Das Installationsprogramm erstellt das VMDK für Sie, aber Sie müssen im Feld vcenter.datadisk
einen Namen für das VMDK angeben.
Beispiel:
vcenter: ... datadisk: "my-disk.vmdk"
- vSAN-Datenspeicher: Ordner für das VMDK erstellen
Wenn Sie einen vSAN-Datenspeicher verwenden, müssen Sie das VMDK in einem Ordner ablegen. Sie müssen den Ordner im Voraus manuell erstellen. Erstellen Sie dazu mit
govc
einen Ordner:govc datastore.mkdir -namespace=true my-gke-on-prem-folder
Legen Sie dann
vcenter.datadisk
auf den Pfad des VMDK einschließlich des Ordners fest. Beispiel:vcenter: ... datadisk: "my-gke-on-prem-folder/my-disk.vmdk"
In Version 1.1.1 ist es aufgrund eines bekannten Problems erforderlich, dass Sie den UUID-Pfad (Universally Unique Identifier) des Ordners und nicht den Dateipfad für
vcenter.datadisk
angeben. Kopieren Sie dies aus der Ausgabe des obigengovc
-Befehls.Geben Sie dann die UUID des Ordners in das Feld
vcenter.datadisk
ein. Fügen Sie keinen Schrägstrich vor der UUID ein. Beispiel:vcenter: ... datadisk: "14159b5d-4265-a2ba-386b-246e9690c588/my-disk.vmdk"
Dieses Problem wurde ab der Version 1.1.2 behoben.
vcenter.cacertpath
Wenn ein Client wie GKE On-Prem eine Anfrage an vCenter-Server sendet, muss der Server seine Identität gegenüber dem Client durch Vorlage eines Zertifikats oder eines Zertifikatpakets bestätigen. Zum Prüfen des Zertifikats oder Pakets muss GKE On-Prem das Root-Zertifikat in der Vertrauenskette haben.
Legen Sie für vcenter.cacertpath
den Pfad des Root-Zertifikats fest. Beispiel:
vcenter: ... cacertpath: "/my-cert-folder/the-root.crt"
Ihre VM-Installation hat eine Zertifizierungsstelle (Certificate Authority, CA), die ein Zertifikat für Ihren vCenter-Server ausstellt. Das Root-Zertifikat in der Vertrauenskette ist ein selbst signiertes Zertifikat, das von VMware erstellt wurde.
Wenn Sie nicht die VMware-Standardzertifizierungsstelle verwenden möchten, können Sie VMware so konfigurieren, dass eine andere Zertifizierungsstelle genutzt wird.
Sollte Ihr vCenter-Server ein von der VMware-Standardzertifizierungsstelle ausgestelltes Zertifikat verwenden, gibt es mehrere Möglichkeiten, das Root-Zertifikat abzurufen:
curl -k "https://[SERVER_ADDRESS]/certs/download.zip" > download.zip
Dabei ist [SERVER_ADDRESS] die Adresse Ihres vCenter-Servers.
Geben Sie in einem Browser die Adresse Ihres vCenter-Servers ein. Klicken Sie im grauen Feld rechts auf Vertrauenswürdige Root-CA-Zertifikate herunterladen.
Geben Sie den folgenden Befehl ein, um das bereitgestellte Zertifikat abzurufen:
true | openssl s_client -connect [SERVER_ADDRESS]:443 -showcerts
Suchen Sie in der Ausgabe nach einer URL wie dieser: https://[SERVER_ADDRESS]/afd/vecs/ca. Geben Sie die URL in einen Browser ein. Dadurch wird das Root-Zertifikat heruntergeladen.
Die heruntergeladene Datei heißt download.zip
.
Richten Sie den Befehl "unzip" ein und entpacken Sie die Datei:
sudo apt-get install unzip unzip download.zip
Wenn der Befehl zum Entpacken beim ersten Mal nicht funktioniert, geben Sie ihn noch einmal ein.
Suchen Sie nach der Zertifikatsdatei in certs/lin
.
proxy
Wenn sich Ihr Netzwerk hinter einem Proxyserver befindet, legen Sie proxy.url
auf die Adresse Ihres Proxyservers fest.
Geben Sie für proxy.noproxy
eine Liste von IP-Adressen, IP-Adressbereichen, Hostnamen und Domainnamen an. Wenn GKE On-Prem eine Anfrage an eine dieser Adressen, Hosts oder Domains sendet, wird die Anfrage direkt gesendet. Die Anfrage wird nicht an den Proxyserver gesendet. Beispiel:
proxy: url: "https://my-proxy.example.local" noproxy: "10.151.222.0/24, my-host.example.local,10.151.2.1"
admincluster.ipblockfilepath
Da Sie statische IP-Adressen verwenden, benötigen Sie eine Hostkonfigurationsdatei, wie unter Statische IP-Adressen konfigurieren beschrieben. Geben Sie den Pfad zu Ihrer Hostkonfigurationsdatei im Feld admincluster.ipblockfilepath
ein. Beispiel:
admincluster: ipblockfilepath: "/my-config-directory/admin-hostconfig.yaml"
admincluster.bigip.credentials
GKE On-Prem benötigt die IP-Adresse oder den Hostnamen, den Nutzernamen und das Passwort Ihres F5 BIG-IP-Load-Balancers. Legen Sie die Werte unter admincluster.bigip
fest, um diese Informationen anzugeben. Beispiel:
admincluster: ... bigip: credentials: address: "203.0.113.2" username: "my-admin-f5-name" password: "rJDlm^%7aOzw"
admincluster.bigip.partition
Zuvor haben Sie eine BIG-IP-Partition für Ihren Administratorcluster erstellt. Legen Sie admincluster.bigip.partition
auf den Namen Ihrer Partition fest. Beispiel:
admincluster: ... bigip: partition: "my-admin-f5-partition"
admincluster.vips
Setzen Sie den Wert von admincluster.vips.controlplanevip
auf die IP-Adresse, die Sie für den Load-Balancer für den Kubernetes API-Server des Administratorclusters konfiguriert haben. Legen Sie den Wert von ingressvip
auf die IP-Adresse fest, die Sie auf dem Load-Balancer für den Dienst für eingehenden Traffic des Administratorclusters konfiguriert haben. Beispiel:
admincluster: ... vips: controlplanevip: 203.0.113.3 ingressvip: 203.0.113.4
admincluster.serviceiprange
und admincluster.podiprange
Der Administratorcluster muss einen Bereich von IP-Adressen für Dienste und einen Bereich von IP-Adressen für Pods haben. Diese Bereiche werden durch die Felder admincluster.serviceiprange
und admincluster.podiprange
angegeben. Diese Felder werden ausgefüllt, wenn Sie gkectl create-config
ausführen. Sie können die Werte auch ändern.
Die Bereich für Dienste und Pods dürfen sich nicht überschneiden. Außerdem dürfen sich diese beiden Bereiche nicht mit IP-Adressen überschneiden, die für Knoten in einem Cluster verwendet werden.
Beispiel:
admincluster: ... serviceiprange: 10.96.232.0/24 podiprange: 192.168.0.0/16
usercluster.bigip.partition
Zuvor haben Sie eine BIG-IP-Partition für Ihren Nutzercluster erstellt. Legen Sie usercluster.bigip.partition
auf den Namen Ihrer Partition fest. Beispiel:
usercluster: ... bigip: partition: "my-user-f5-partition" ...
usercluster.vips
Setzen Sie den Wert von usercluster.vips.controlplanevip
auf die IP-Adresse, die Sie für den Load-Balancer für den Kubernetes API-Server des Nutzerclusters konfiguriert haben. Legen Sie den Wert von ingressvip
auf die IP-Adresse fest, die Sie auf dem Load-Balancer für den Dienst für eingehenden Traffic des Nutzerclusters konfiguriert haben. Beispiel:
usercluster: ... vips: controlplanevip: 203.0.113.6 ingressvip: 203.0.113.7
usercluster.serviceiprange
und usercluster.podiprange
Der Nutzercluster muss einen IP-Adressbereich für Dienste und einen IP-Adressbereich für Pods haben. Diese Bereiche werden durch die Felder usercluster.serviceiprange
und usercluster.podiprange
angegeben. Diese Felder werden ausgefüllt, wenn Sie gkectl create-config
ausführen. Sie können die Werte auch ändern.
Die Bereich für Dienste und Pods dürfen sich nicht überschneiden. Außerdem dürfen sich diese beiden Bereiche nicht mit IP-Adressen überschneiden, die für Knoten in einem Cluster verwendet werden.
Beispiel:
usercluster: ... serviceiprange: 10.96.233.0/24 podiprange: 172.16.0.0/12
VMware DRS-Anti-Affinitätsregeln deaktivieren
Ab Version 1.1.0-gke.6 erstellt GKE On-Prem automatisch Anti-Affinitätsregeln des Typs Distributed Resource Scheduler (DRS) für die Knoten Ihres Nutzerclusters, sodass sie auf mindestens drei physische Hosts in Ihrem Rechenzentrum verteilt werden. Ab Version 1.1.0-gke.6 wird diese Funktion automatisch für neue und vorhandene Cluster aktiviert.
Für diese Funktion muss die vSphere-Umgebung die folgenden Bedingungen erfüllen:
- VMware DRS ist aktiviert. Für VMware DRS ist die vSphere Enterprise Plus-Lizenzversion erforderlich. Informationen zum Aktivieren von DRS finden Sie unter Enabling VMware DRS in a cluster.
- Das im Feld
vcenter
angegebene vSphere-Nutzerkonto hat die BerechtigungHost.Inventory.EditCluster
. - Es sind mindestens drei physische Hosts verfügbar.
Wenn Sie eine vSphere Standard-Lizenz haben, können Sie VMware DRS nicht aktivieren.
Wenn Sie DRS nicht aktiviert haben oder nicht mindestens drei Hosts haben, für die vSphere VMs geplant werden können, fügen Sie Ihrer Konfigurationsdatei usercluster.antiaffinitygroups.enabled: false
hinzu.
Beispiel:
usercluster: ... antiaffinitygroups: enabled: false
gkeconnect
Die gkeconnect
-Spezifikation enthält Informationen, die GKE On-Prem benötigt, um die Verwaltung Ihrer lokalen Cluster über die Google Cloud Console einzurichten.
Legen Sie für gkeconnect.projectid
die Projekt-ID des Google Cloud-Projekts fest, in dem Sie Ihre lokalen Cluster verwalten möchten.
Legen Sie den Wert von gkeconnect.registerserviceaccountkeypath
auf den Pfad der JSON-Schlüsseldatei für Ihr Registrierungsdienstkonto fest.
Legen Sie den Wert von gkeconnect.agentserviceaccountkeypath
auf den Pfad der JSON-Schlüsseldatei für Ihr Verbindungsdienstkonto fest.
Beispiel:
gkeconnect: projectid: "my-project" registerserviceaccountkeypath: "/my-key-directory/register-key.json" agentserviceaccountkeypath: "/my-key-directory/connect-key.json"
stackdriver
Die stackdriver
-Spezifikation enthält Informationen, die GKE On-Prem zum Speichern von Logeinträgen benötigt, die von Ihren lokalen Clustern generiert wurden.
Setzen Sie stackdriver.projectid
auf die Projekt-ID des Google Cloud-Projekts, das Sie mit der Operations-Suite von Google Cloud verknüpfen möchten. Connect exportiert über dieses Projekts Clusterlogs aus Stackdriver.
Legen Sie stackdriver.clusterlocation
auf eine Google Cloud-Region fest, in der Logs gespeichert werden sollen. Es empfiehlt sich, eine Region in der Nähe Ihres lokalen Rechenzentrums auszuwählen.
Legen Sie für stackdriver.proxyconfigsecretname
ein Kubernetes-Secret fest, das Sie im Namespace kube-system
definieren. Dieses Secret sollte einen einzelnen Wert haben, mit dem https_proxy_url
definiert wird. Das Standard-Secret stackdriver-proxy-config
ist unveränderlich und dient lediglich als Beispiel.
Setzen Sie stackdriver.enablevpc
auf true
, wenn das Netzwerk Ihres Clusters durch eine VPC gesteuert wird. So wird gewährleistet, dass alle Telemetriedaten über die eingeschränkten IP-Adressen von Google übertragen werden.
Setzen Sie stackdriver.serviceaccountkeypath
auf den Pfad der JSON-Schlüsseldatei für Ihr Dienstkonto der Operations-Suite von Google Cloud.
Beispiel:
stackdriver: projectid: "my-project" clusterlocation: "us-west1" enablevpc: false serviceaccountkeypath: "/my-key-directory/stackdriver-key.json"
gcrkeypath
Setzen Sie den Wert von gcrkeypath
auf den Pfad der JSON-Schlüsseldatei für Ihr Dienstkonto auf der Zulassungsliste. Beispiel: Hinweis: Weitere Informationen zu diesem Befehl finden Sie unter Vorabprüfungen ausführen.
gcrkeypath: "/my-key-directory/whitelisted-key.json"
Konfigurationsdatei validieren
Nachdem Sie die Konfigurationsdatei geändert haben, führen Sie gkectl check-config
aus, um zu prüfen, ob die Datei gültig ist und für die Installation verwendet werden kann:
gkectl check-config --config config.yaml
Wenn der Befehl FAILURE
-Meldungen zurückgibt, beheben Sie die Probleme und validieren Sie die Datei noch einmal.
Wenn Sie die zeitaufwendigeren Validierungen überspringen möchten, übergeben Sie das Flag --fast
.
Verwenden Sie die Flags --skip-validation-xxx
, um einzelne Validierungen zu überspringen. Weitere Informationen zum Befehl check-config
finden Sie unter Vorabprüfungen ausführen.
gkectl prepare
ausführen
Führen Sie gkectl prepare
aus, um Ihre vSphere-Umgebung zu initialisieren:
gkectl prepare --config config.yaml --skip-validation-all
Administrator- und Nutzercluster erstellen
Erstellen Sie den Administratorcluster und den Nutzercluster.
gkectl create cluster --config config.yaml --skip-validation-all
Mit dem Befehl gkectl create cluster
wird im aktuellen Verzeichnis die Datei kubeconfig
erstellt. In der GKE On-Prem-Dokumentation wird der Platzhalter [ADMIN_CLUSTER_KUBECONFIG] verwendet, um auf diese Datei zu verweisen.
Geben Sie den folgenden Befehl ein, um zu überprüfen, ob der Administratorcluster erstellt wurde:
kubectl get nodes --kubeconfig [ADMIN_CLUSTER_KUBECONFIG]
Die Ausgabe zeigt die Knoten des Administratorclusters.
Mit dem Befehl gkectl create cluster
wird im aktuellen Verzeichnis eine Datei namens init-user-cluster-kubeconfig
erstellt. In der GKE On-Prem-Dokumentation wird der Platzhalter [USER_CLUSTER_KUBECONFIG] verwendet, um auf diese Datei zu verweisen.
Prüfen Sie mit dem folgenden Befehl, ob der Nutzercluster erstellt wurde:
kubectl get nodes --kubeconfig [USER_CLUSTER_KUBECONFIG]
Die Ausgabe zeigt die Knoten des Nutzerclusters. Beispiel:
NAME STATUS ROLES AGE VERSION xxxxxx-1234-ipam-15008527 Ready <none> 12m v1.14.7-gke.24 xxxxxx-1234-ipam-1500852a Ready <none> 12m v1.14.7-gke.24 xxxxxx-1234-ipam-15008536 Ready <none> 12m v1.14.7-gke.24