Auf dieser Seite wird beschrieben, wie Sie virtuelle Maschinen in Ihrer mit Google Distributed Cloud verbundenen Bereitstellung verwalten, auf der VM Runtime on Google Distributed Cloud ausgeführt wird. Sie müssen mit der VM Runtime on GDC vertraut sein, bevor Sie die Schritte auf dieser Seite ausführen. Eine Liste der unterstützten Gastbetriebssysteme finden Sie unter Verifizierte Gastbetriebssysteme für VM Runtime auf GDC.
Informationen dazu, wie virtuelle Maschinen als wesentliche Komponente der verbundenen Plattform von Distributed Cloud dienen, finden Sie unter GKE Enterprise erweitern, um lokale Edge-VMs zu verwalten.
Distributed Cloud Connected-Cluster unterstützen Webhooks für virtuelle Maschinen. So kann Distributed Cloud Connected Nutzeranfragen, die an den lokalen Kubernetes API-Server gesendet werden, validieren. Bei abgelehnten Anfragen werden detaillierte Informationen zum Ablehnungsgrund generiert.
Symcloud Storage konfigurieren
Google Distributed Cloud Connected verwendet Rakuten Symcloud Storage als Speicherlösung. Symcloud Storage ist eine Drittanbieterlösung, die als lokale Abstraktionsebene für den Speicher auf jedem mit Distributed Cloud verbundenen Knoten fungiert und den lokalen Speicher für Arbeitslasten verfügbar macht, die auf anderen mit Distributed Cloud verbundenen Knoten ausgeführt werden.
Symcloud Storage wird über den Google Cloud Marketplace bereitgestellt und unterliegt den dort angegebenen Bedingungen. Google bietet eingeschränkten Support für die Verwendung von Symcloud Storage mit Distributed Cloud Connected und wendet sich möglicherweise an den Drittanbieter, um Unterstützung zu erhalten. Softwareupdates für Symcloud Storage sind in den Softwareupdates mit Verbindung zu Distributed Cloud enthalten.
Konfigurieren Sie Ihren Google Distributed Cloud Connected-Cluster so, dass Symcloud Storage für virtuelle Maschinen aktiviert wird. Weitere Informationen finden Sie unter Symcloud Storage auf einem mit Distributed Cloud verbundenen Knoten installieren.
Erstellen Sie den Namespace
robin-adminmit dem folgenden Befehl:kubectl create ns robin-admin
Rufen Sie die Symcloud Storage-Lizenzdatei ab und wenden Sie sie mit dem folgenden Befehl auf den Cluster an:
kubectl apply -f LICENSE_FILE
Ersetzen Sie
LICENSE_FILEdurch den Pfad zur Lizenzdatei.Prüfen Sie mit dem folgenden Befehl, ob Symcloud Storage ausgeführt wird:
kubectl describe robincluster
Die Ausgabe des Befehls sieht in etwa so aus:
Name: robin Namespace: Labels: app.kubernetes.io/instance=robin app.kubernetes.io/managed-by=robin.io app.kubernetes.io/name=robin Annotations: <none> API Version: manage.robin.io/v1 Kind: RobinCluster Metadata: … Spec: … Status: … Phase: Ready …Erstellen Sie die StorageClass
robin-block-immediate, indem Sie die folgende Konfiguration auf den Cluster anwenden:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: robin-block-immediate parameters: faultdomain: host replication: "3" blocksize: "512" provisioner: robin reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true
Erstellen Sie die
robin-snapshotclass-Volume-Snapshot-Klasse, indem Sie die folgende Konfiguration auf den Cluster anwenden:apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: robin-snapshotclass labels: app.kubernetes.io/instance: robin app.kubernetes.io/managed-by: robin.io app.kubernetes.io/name: robin annotations: snapshot.storage.kubernetes.io/is-default-class: "true" driver: robin deletionPolicy: DeleteÄndern Sie das
storageprofilefür die Speicherklasserobin-block-immediatemit dem folgenden Inhalt und wenden Sie es auf Ihren Cluster an:apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: robin-block-immediate spec: claimPropertySets: – accessModes: – ReadWriteMany volumeMode: Block
virtctl-Verwaltungstool installieren
Sie benötigen das Clienttool virtctl, um virtuelle Maschinen in Ihrem mit Distributed Cloud verbundenen Cluster zu verwalten. So installieren Sie das Tool:
Installieren Sie das
virtctl-CLienttool alskubectl-Plug-in.export VERSION=v1.3.1-anthos1.35-gke.39 gcloud storage cp gs://anthos-baremetal-release/virtctl/${VERSION}/linux-amd64/virtctl ./virtctl sudo mv ./virtctl /usr/local/bin/virtctl cd /usr/local/bin sudo ln -s virtctl kubectl-virt sudo chmod a+x virtctl cd -
Überprüfen Sie, ob das Plug-in
virtinstalliert ist:kubectl plugin list
Wenn das Plug-in erfolgreich installiert wurde, wird
kubectl-virtin der Ausgabe des Befehls als eines der Plug-ins aufgeführt.
Cloud Storage-Bucket für VM-Images erstellen
Führen Sie die Schritte in diesem Abschnitt aus, um einen Cloud Storage-Bucket für Ihre VM-Images zu erstellen. Für den Bucket wird die Workload Identity-Föderation verwendet, um ein Kubernetes-Dienstkonto an das entsprechende Google Cloud Dienstkonto zu binden, damit auf den Bucket zugegriffen werden kann. Das Kubernetes-Dienstkonto übernimmt also die Identität des Google CloudDienstkontos. Wenn Sie bereits ein Image-Repository haben, können Sie diesen Abschnitt überspringen.
Um das Risiko von identischen Identitäten in einer Multi-Cluster-Flotte zu verringern, folgen Sie den Richtlinien unter Best Practices für die Workload Identity Federation der Flotte, wenn Sie die Schritte in diesem Abschnitt ausführen.
Führen Sie die Schritte unter Buckets erstellen aus, um einen Bucket zu erstellen.
Erstellen Sie ein Google Cloud Dienstkonto für den Zugriff auf den Bucket:
export GSA_PROJECT_ID=GSA_PROJECT_ID export GSA_NAME=GSA_NAME gcloud iam service-accounts create ${GSA_NAME}
Ersetzen Sie Folgendes:
GSA_NAME: Ein aussagekräftiger Name für dieses Google Cloud Dienstkonto.GSA_PROJECT_ID: die ID des Google Cloud Projekts, in dem sich das Ziel-Google Cloud Dienstkonto befindet.
Gewähren Sie dem Dienstkonto Google Cloud Berechtigungen für den Zugriff auf den Bucket:
export BUCKET_PROJECT_ID=BUCKET_PROJECT_ID export GSA_NAME=GSA_NAME gcloud storage buckets add-iam-policy-binding gs://${BUCKET_PROJECT_ID}-vm-images \ --member="serviceAccount:${GSA_NAME}@${GSA_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.objectViewer" \ --project=${BUCKET_PROJECT_ID}
Ersetzen Sie Folgendes:
GSA_NAME: der Name des Ziel- Google Cloud Dienstkontos.BUCKET_PROJECT_ID: Die ID des Google Cloud -Projekts, in dem sich der Bucket befindet.GSA_PROJECT_ID: die ID des Google Cloud Projekts, in dem sich das Ziel-Google Cloud Dienstkonto befindet.
Erstellen Sie ein Kubernetes-Dienstkonto im Namespace der Ziel-VM, das an Ihr Google Cloud -Dienstkonto gebunden werden soll:
export GSA_PROJECT_ID=GSA_PROJECT_ID export VM_NAMESPACE=NAMESPACE export KSA_NAME=KSA_NAME export GSA_EMAIL=${GSA_NAME}@${GSA_PROJECT_ID}.iam.gserviceaccount.com kubectl create serviceaccount ${KSA_NAME} -n ${VM_NAMESPACE} kubectl annotate serviceaccount ${KSA_NAME} gsaEmail=${GSA_EMAIL} -n ${VM_NAMESPACE}
Ersetzen Sie Folgendes:
GSA_PROJECT_ID: die ID des Google Cloud Projekts, in dem sich das Ziel-Google Cloud Dienstkonto befindet.NAMESPACE: der Namespace der Ziel-VM.KSA_NAME: Ein aussagekräftiger Name für dieses Kubernetes-Dienstkonto.GSA_NAME: der Name des entsprechenden Google Cloud Dienstkontos.
Ermitteln Sie den Namen des Workload Identity-Pools und des Identitätsanbieters Ihres Clusters:
gcloud container fleet memberships describe MEMBERSHIP_ID \ --project=FLEET_PROJECT_ID \ --format="table(authority.identityProvider,authority.workloadIdentityPool,name)"
Ersetzen Sie Folgendes:
MEMBERSHIP_ID: Der Name der Flottenmitgliedschaft des Clusters. Das ist in der Regel der Name Ihres Clusters.FLEET_PROJECT_ID: die ID des Google Cloud Flotten-Hostprojekts.
Die Ausgabe des Befehls sieht in etwa so aus:
IDENTITY_PROVIDER: IDENTITY_PROVIDER WORKLOAD_IDENTITY_POOL: WORKLOAD_IDENTITY_POOLNotieren Sie sich in der Ausgabe die folgenden Werte:
IDENTITY_PROVIDER: Der Identitätsanbieter für diesen Cluster.WORKLOAD_IDENTITY_POOL: ist der Name des Workload Identity-Pools, der mit Ihrer Flotte verknüpft ist. Der Name hat das FormatFLEET_PROJECT_ID.svc.id.goog. Weitere Informationen zum Befehl in diesem Schritt finden Sie unter Identitätsföderation von Arbeitslasten für Flotten in Anwendungen verwenden.
Binden Sie das Kubernetes-Dienstkonto an das Google Cloud -Dienstkonto, um die Identitätsübernahme einzurichten:
export GSA_PROJECT_ID=GSA_PROJECT_ID export GSA_NAME=GSA_NAME export KSA_NAME=KSA_NAME export VM_NAMESPACE=NAMESPACE export WI_POOL=WORKLOAD_IDENTITY_POOL gcloud iam service-accounts add-iam-policy-binding ${GSA_NAME}@${GSA_PROJECT_ID}.iam.gserviceaccount.com \ --project=${GSA_PROJECT_ID} \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${WI_POOL}[${VM_NAMESPACE}/${KSA_NAME}]" \ --condition="IAM_CONDITION" \ --condition-from-file="IAM_CONDITION_FILE"
Ersetzen Sie Folgendes:
GSA_PROJECT_ID: die ID des Google Cloud Projekts, in dem sich das Ziel-Google Cloud Dienstkonto befindet.GSA_NAME: der Name des entsprechenden Google Cloud Dienstkontos.KSA_NAME: Der Name des Kubernetes-Zieldienstkontos.NAMESPACE: der Namespace der Ziel-VM.WORKLOAD_IDENTITY_POOL: der Name des Workload Identity-Pools Ihres Clusters.IAM_CONDITION: optional; gibt die IAM-Bedingungen an, mit denen der Zugriff auf bestimmte Cluster in der Flotte eingeschränkt werden soll. Wenn es weggelassen oder aufNonegesetzt wird, gelten keine IAM-Bedingungen.IAM_CONDITION_FILE: optional; gibt die Datei mit den IAM-Bedingungen an, die verwendet werden sollen, um den Zugriff auf bestimmte Cluster in der Flotte einzuschränken. Wenn es weggelassen wird, gelten keine IAM-Bedingungen, es sei denn, das Flag--conditionist angegeben und auf einen anderen Wert alsNonegesetzt.
Speichern Sie Ihre Bilder im Bucket.
Sie haben auch die Möglichkeit, die alte Methode mit einem Secret zu verwenden, das aus dem aktiven Schlüssel Ihres Google-Dienstkontos generiert wird. Weitere Informationen finden Sie unter Cloud Storage-Bucket für VM-Images erstellen.
Zugriff auf den Bucket mit IAM-Bedingungen einschränken
Mit IAM Conditions können Sie angeben, welche Cluster in der Flotte auf den Bucket zugreifen können. Wenn keine IAM-Bedingungen angegeben sind, können alle Cluster in der Flotte mit demselben Kubernetes-Dienstkonto im selben Namespace auf den Bucket zugreifen, was ein Risiko in Bezug auf die Identitätsgleichheit darstellt. Wenn Sie keine IAM-Bedingungen angeben, können Sie auch auf den alten Zugriffsmechanismus zurückgreifen, bei dem ein Secret verwendet wird, das aus dem aktiven Schlüssel eines Google-Dienstkontos generiert wird. Im Folgenden finden Sie ein Beispiel dafür, wie Sie IAM Conditions einrichten und anwenden, um den Zugriff auf Ihren Bucket einzuschränken:
Erstellen Sie die IAM-Bedingungsdatei:
cat <<EOF > iam_condition.yaml > expression: request.auth.claims.google.providerId == '$IDENTITY_PROVIDER' title: allow_only_this_cluster > EOF
Wenden Sie die IAM-Bedingungsdatei an, wenn Sie das GSA an das KSA binden. Führen Sie den folgenden Befehl in Ihrem GSA Google Cloud -Projekt aus:
gcloud iam service-accounts add-iam-policy-binding "${GSA_NAME}@${GSA_PROJECT_ID}.iam.gserviceaccount.com" \ --project="${GSA_PROJECT_ID}" \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${WI_POOL}[${VM_NAMESPACE}/${KSA_NAME}]" \ --condition-from-file=iam_condition.yaml
VM-Laufwerk aus einem VM-Image erstellen
Führen Sie die Schritte in diesem Abschnitt aus, um ein VM-Laufwerk aus einem VM-Image zu erstellen.
Laufwerk aus einem in Cloud Storage gespeicherten Image erstellen
Erstellen Sie ein VM-Laufwerk aus einer VM, die in Ihrem Cloud Storage-Bucket gespeichert ist, indem Sie die folgende Konfiguration auf Ihren Cluster anwenden:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME namespace: NAMESPACE spec: source: gcs: url: gs://${BUCKET_PROJECT_ID}-vm-images/IMAGE_FILE_PATH serviceAccount: KSA_NAME size: DISK_SIZE storageClassName: robin-block-immediate
Ersetzen Sie Folgendes:
DISK_NAME: der Name dieses VM-Laufwerks.NAMESPACE: der Namespace der Ziel-VM.IMAGE_FILE_PATH: der vollständige Pfad und Name der VM-Image-Datei. Klicken Sie mit der rechten Maustaste auf das Bild in der Google Cloud Console und wählen Sie gsutil-URI kopieren aus, um diesen Pfad zu erhalten.KSA_NAME: das Kubernetes-Dienstkonto zum Herunterladen von VM-Images, die Sie zuvor erstellt haben.DISK_SIZE: Die Größe des Ziellaufwerks. Dieser Wert muss größer sein als dervirtual-size-Wert der VM-Image-Datei. Sie können diesen Wert mit dem Befehlqemu-img info DISK_SIZEermitteln.
Wenn Sie keinen storageClassName-Wert angeben, wird der Standardwert verwendet, der in der VMRuntime-Ressource angegeben ist.
Laufwerk aus einem Image erstellen, das auf einem Drittanbieterdienst gespeichert ist
Sie haben auch die Möglichkeit, http, https, S3 oder eine Image-Registry zum Speichern Ihrer VM-Images zu verwenden. Wenn für den Zugriff auf Ihren Speicherdienst Anmeldedaten erforderlich sind, wandeln Sie diese Anmeldedaten in ein Secret um und geben Sie dieses Secret im Feld secretRef an.
Beispiel:
source: http/s3/registry: url: secretRef: "SECRET_NAME" # optional
Ersetzen Sie SECRET_NAME durch den Namen Ihres Secrets.
Weitere Informationen finden Sie unter HTTP/S3/GCS/Registry-Quelle.
Leeres Laufwerk erstellen
Erstellen Sie ein leeres VM-Laufwerk, indem Sie die folgende Konfiguration auf Ihren Cluster anwenden:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME namespace: NAMESPACE spec: size: DISK_SIZE storageClassName: robin-block-immediate
Ersetzen Sie Folgendes:
DISK_NAME: der Name dieses VM-Laufwerks.NAMESPACE: der Ziel-Namespace.DISK_SIZE: Die gewünschte Laufwerkgröße in Gibibyte. Dieser Wert muss größer sein als dervirtual-size-Wert der VM-Image-Datei. Sie können diesen Wert mit dem Befehlqemu-img info DISK_SIZEabrufen.
Wenn Sie keinen storageClassName-Wert angeben, wird der Standardwert verwendet, der in der VMRuntime-Ressource angegeben ist.
Virtuelles Netzwerk konfigurieren
Folgen Sie der Anleitung unter Networking, um das virtuelle Netzwerk für Ihre virtuellen Maschinen zu konfigurieren.
Virtuelle Maschine erstellen
Führen Sie die Schritte in diesem Abschnitt aus, um eine virtuelle Maschine auf Ihrer Distributed Cloud Connected Server-Bereitstellung zu erstellen. Die Anleitungen in diesem Abschnitt sind Beispiele, die Konfigurationen für verschiedene Szenarien veranschaulichen sollen. Ausführliche Informationen zum Konfigurieren von VMs finden Sie unter Mit VM Runtime on GDC eine VM mit bestimmten CPU- und Arbeitsspeicherressourcen erstellen.
Die Ressourcenzuweisung für VMs ist durch die Hardwareprofile Ihrer mit Distributed Cloud verbundenen Bereitstellung eingeschränkt, z. B. G1- oder G2-Hardware. Sie können eine einzelne VM nicht größer als die physische Distributed Cloud-Maschine machen, auf der sie ausgeführt wird.
Virtuelle Maschine mit der Google Cloud Console erstellen
So erstellen Sie eine VM mit der Google Cloud Console:
Rufen Sie in der Google Cloud Console die Seite Cluster auf.
Wählen Sie das Zielprojekt Google Cloud aus.
Optional: Melden Sie sich im Zielcluster an, falls noch nicht geschehen:
Klicken Sie im linken Navigationsbereich auf Cluster.
Klicken Sie in der Liste Von Anthos verwaltete Cluster auf den Zielcluster.
Klicken Sie im Informationsbereich auf der rechten Seite auf ANMELDEN.
Wählen Sie im angezeigten Pop-up-Dialogfeld Ihre bevorzugte Authentifizierungsmethode aus, geben Sie Ihre Anmeldedaten ein und klicken Sie auf ANMELDEN.
Rufen Sie die Seite Virtuelle Maschinen auf.
Klicken Sie auf ERSTELLEN.
Führen Sie im Abschnitt Grundlagen folgende Schritte aus:
Geben Sie im Feld Name einen aussagekräftigen Namen für die VM ein.
Wählen Sie im Feld Cluster auswählen den Zielcluster für die virtuelle Maschine aus.
Wählen Sie im Feld Namespace den Ziel-Namespace aus.
Wählen Sie im Feld Betriebssystemtyp das Zielbetriebssystem aus.
Optional: Wenn Sie der Konfiguration dieser virtuellen Maschine ein oder mehrere Labels hinzufügen möchten, klicken Sie auf LABEL HINZUFÜGEN.
Führen Sie im Abschnitt Maschinenkonfiguration einen der folgenden Schritte aus:
Wenn Sie die Anzahl der vCPUs und die Größe des Arbeitsspeichers für diese virtuelle Maschine angeben möchten, wählen Sie Benutzerdefinierte Konfiguration aus, geben Sie die Zielwerte ein und klicken Sie auf WEITER.
Wenn Sie eine bestimmte Anzahl von vCPUs und eine bestimmte Menge an Arbeitsspeicher für diese virtuelle Maschine verwenden möchten, wählen Sie Standardkonfiguration aus und wählen Sie in der Drop-down-Liste Maschinentyp eine Maschinenkonfiguration aus. Klicken Sie dann auf WEITER.
Führen Sie im Abschnitt Speicher einen der folgenden Schritte aus:
Wenn Sie ein neues virtuelles Laufwerk für diese VM erstellen möchten, wählen Sie Neues Laufwerk hinzufügen aus und geben Sie im Feld Name einen aussagekräftigen Namen, im Feld GiB eine Größe in Gigabyte und im Feld Image eine URL ein.
Wenn Sie ein vorhandenes virtuelles Laufwerk für diese VM verwenden möchten, wählen Sie Vorhandenes Laufwerk auswählen aus und wählen Sie das Ziellaufwerk-Image aus der Drop-down-Liste Laufwerk auswählen aus.
Geben Sie mit den Kästchen Schreibgeschützt und Automatisch löschen an, ob das Laufwerk schreibgeschützt sein soll und ob es automatisch gelöscht wird, wenn diese VM gelöscht wird.
Geben Sie in der Drop-down-Liste Treiber einen virtuellen Festplattentreiber an.
Wenn Sie dieser VM ein weiteres Laufwerk hinzufügen möchten, klicken Sie im Bereich Zusätzliche Laufwerke auf LAUFWERK HINZUFÜGEN.
Tippen Sie auf Weiter.
Führen Sie im Abschnitt Netzwerk folgende Schritte aus:
Geben Sie im Unterabschnitt Standardnetzwerkschnittstelle im Feld Schnittstellenname den Namen der primären Netzwerkschnittstelle für diese virtuelle Maschine an.
Wählen Sie den entsprechenden Netzwerktyp aus der Drop-down-Liste Network type (Netzwerktyp) aus.
Geben Sie mit dem Kästchen Externen Zugriff erlauben an, ob der externe Zugriff auf diese Netzwerkschnittstelle zulässig sein soll. Wenn Sie diese Option aktivieren, müssen Sie im Feld Exposed ports (Freigegebene Ports) eine durch Kommas getrennte Liste der Ports eingeben, die extern freigegeben werden sollen.
Wenn Sie dieser VM eine oder mehrere sekundäre Netzwerkschnittstellen hinzufügen möchten, klicken Sie auf NETZWERKSCHNITTSTELLE HINZUFÜGEN.
Tippen Sie auf Weiter.
Geben Sie im Abschnitt Erweiterte Optionen mit dem Kästchen Automatisch neu starten bei Update an, ob diese virtuelle Maschine neu gestartet werden soll, nachdem die mit Distributed Cloud verbundene Software im Zielcluster aktualisiert wurde.
Führen Sie im Abschnitt Firmware folgende Schritte aus:
Wählen Sie im Feld Bootloader-Typ den Zielfirmwaretyp aus. Wenn Sie UEFI-Firmware auswählen, können Sie Secure Boot über das Kästchen Secure Boot aktivieren.
Geben Sie im Feld Serial eine Seriennummer für diese virtuelle Maschine an.
Geben Sie im Feld UUID eine Universally Unique Identifier (UUID) für diese virtuelle Maschine an.
Geben Sie im Abschnitt Cloud-init im Feld User data secret (Secret für Nutzerdaten) einen Secret-Wert für Nutzerdaten an.
Klicken Sie auf VM ERSTELLEN, um die virtuelle Maschine zu erstellen.
Virtuelle Maschine aus einer YAML-Datei erstellen
So erstellen Sie eine VM aus einer YAML-Konfigurationsdatei:
Rufen Sie in der Google Cloud Console die Seite Cluster auf.
Wählen Sie das Zielprojekt Google Cloud aus.
Optional: Melden Sie sich im Zielcluster an, falls noch nicht geschehen:
Klicken Sie im linken Navigationsbereich auf Cluster.
Klicken Sie in der Liste Von Anthos verwaltete Cluster auf den Zielcluster.
Klicken Sie im Informationsbereich auf der rechten Seite auf ANMELDEN.
Wählen Sie im angezeigten Pop-up-Dialogfeld Ihre bevorzugte Authentifizierungsmethode aus, geben Sie Ihre Anmeldedaten ein und klicken Sie auf ANMELDEN.
Rufen Sie die Seite Virtuelle Maschinen auf.
Klicken Sie auf MIT YAML ERSTELLEN.
Wählen Sie im Feld Cluster auswählen den Zielcluster für die virtuelle Maschine aus.
Fügen Sie die Konfiguration der virtuellen Maschine im YAML-Format in das YAML-Feld ein. Weitere Informationen zu den unterstützten YAML-Feldern finden Sie in der Referenz zur Spezifikation virtueller Maschinen.
Klicken Sie auf ERSTELLEN.
VM aus einem bootfähigen Laufwerk-Image erstellen
Wenn Sie eine VM aus einem bootfähigen Laufwerk-Image erstellen möchten, wenden Sie die folgende Konfiguration auf Ihren Cluster an. Informationen zum Anpassen dieser Konfiguration, z. B. der CPU-, Arbeitsspeicher- oder Netzwerkoptionen, finden Sie in der Referenz für die Spezifikation virtueller Maschinen:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: my-virtual-machine namespace: NAMESPACE spec: osType: Linux/Windows # guestEnvironment: {} # uncomment this line to disable guest environment priorityClassName: PRIORITY_CLASS compute: cpu: vcpus: 6 memory: capacity: 8Gi interfaces: - name: eth0 networkName: NETWORK_NAME ipAddresses: - IP_ADDRESS/PREFIX disks: - virtualMachineDiskName: DISK_NAME boot: true - virtualMachineDiskName: DISK_NAME
Ersetzen Sie Folgendes:
NAMESPACE: der Ziel-Namespace.PRIORITY_CLASS: Die Prioritätsklasse für diese VM. Eine Prioritätsklasse ist ein Bereich von Prioritätswerten. Eine Liste der unterstützten Prioritätsklassen finden Sie unterkubectl get priorityclass. Eine höhere Planungspriorität verringert die Wahrscheinlichkeit, dass VMs entfernt werden, wenn die Knotenressourcen begrenzt sind. Wird sie weggelassen, erhält die VM den niedrigsten Standardprioritätswert.NETWORK_NAME: der Name des L2-Netzwerks, an das die VM-Schnittstelle angehängt werden soll.DISK_NAME: die Namen der Laufwerke dieser VM.vcpus: die Anzahl der vCPUs, die der VM zugewiesen werden sollen.capacity: die Menge an Arbeitsspeicher, die der VM zugewiesen werden soll. Beispiel:4Gioder8Gi.ipAddresses: optional; weist der VM eine statische IP-Adresse zu. Wenn das zugrunde liegende L2-Netzwerk externes DHCP unterstützt, können SieipAddressesweglassen, um die dynamische Zuweisung zu ermöglichen.
cloud-init-API zum Initialisieren von VMs verwenden
Die cloud-init API ist eine Standardmethode zum Initialisieren einer Cloud-VM. Verwenden Sie cloud-init, um Dateien, Nutzer und andere Aspekte Ihrer VM einzurichten.
Um die Kompatibilität zu gewährleisten, sollten Sie Ihre cloud-init-Startroutinen validieren. Bevor Sie die Konfiguration in der Produktion verwenden, wenden Sie sie auf eine Test-VM an, um sicherzustellen, dass sie erfolgreich initialisiert wird.
Die folgenden Beispiele sind allgemein und müssen in Ihrer Umgebung getestet werden.
VM-Konfiguration mit cloud-init-Nutzerdaten automatisieren
VM Runtime on GDC unterstützt cloud-init-Nutzerdaten für Linux-VMs.
Sie können Nutzerdaten als Klartextstring, als base64-codierten String oder durch Verweisen auf ein Kubernetes-Secret angeben.
Damit Ihre VM richtig initialisiert wird, sollten Sie alle Konfigurationen für Nutzerdaten validieren, bevor Sie sie in einer Produktionsumgebung bereitstellen.
Das folgende Beispiel zeigt ein VirtualMachine-Manifest, das cloud-init-Nutzerdaten im Nur-Text-Format enthält, um beim Starten der VM einen Befehl auszuführen:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: compute: cpu: vcpus: 2 memory: capacity: 4Gi osType: Linux cloudInit: noCloud: userData: | #cloud-config runcmd: - echo "Hello World" > /tmp/hello.txt
Ersetzen Sie VM_NAME durch den Namen der virtuellen Maschine.
Um die VM mit cloud-init-Daten zu erstellen, speichern Sie das Manifest als vm-cloud-init.yaml und wenden Sie es auf Ihren Cluster an, indem Sie den Befehl kubectl apply ausführen:
kubectl apply -f vm-cloud-init.yaml
Fehlerbehebung für cloud-init
Wenn Probleme mit cloud-init auftreten, prüfen Sie die Logs in der VM. Sie finden die Logs in der Regel in den folgenden Verzeichnissen:
/var/log/cloud-init.log/var/log/cloud-init-output.log
VM aus einem optischen ISO-Datenträger-Image erstellen
Sie können eine Windows-VM erstellen, die mit VM Runtime on GDC von einem ISO-Image bootet. Mit dieser Funktion können Sie Legacy-Unternehmensanwendungen auf Windows-Basis, spezielle Drittanbietersoftware oder benutzerdefinierte Kassensysteme direkt zu Ihren mit Distributed Cloud verbundenen Clustern migrieren.
Bilder, die für VM-Laufwerke verwendet werden, werden aus einem mit Distributed Cloud verbundenen Image-Bucket importiert. Bevor Sie die Manifeste erstellen, müssen Sie das Windows-Installations-ISO und das KubeVirt-ISO mit virtio-Treibern herunterladen und in Ihren Image-Bucket hochladen. Wir empfehlen, eine bestätigte Kopie der Treiber-ISO in einem internen Repository zu speichern oder in Cloud Storage vorzubereiten, um zuverlässige, wiederholbare Builds virtueller Maschinen zu gewährleisten.
Manifeste erstellen
Wenn Sie von einem Windows-ISO-Image booten möchten, benötigen Sie die folgenden Manifeste:
- Eine
VirtualMachineDiskmit der Windows-ISO. - Ein
VirtualMachineDiskmit den KubeVirt Windows-Treibernvirtio. - Ein leeres
VirtualMachineDisk, das als Bootlaufwerk dient, auf dem Windows installiert wird.
Die folgenden Beispiele zeigen die VirtualMachineDisk-Manifeste für die drei erforderlichen Laufwerke.
Ersetzen Sie in den Manifesten Folgendes:
BUCKET_PROJECT_ID: Die Projekt-ID des Projekts, in dem sich Ihr Image-Bucket befindet.KSA_NAME: Das Kubernetes-Dienstkonto mit Berechtigungen zum Lesen aus dem Bucket.
Die im Manifest angeforderte PVC size muss immer größer oder gleich der genauen virtuellen Größe des ISO-Images sein.
Windows-ISO-Datenträger
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-iso spec: size: 10Gi storageClassName: robin-block-immediate diskType: cdrom source: gcs: url: gs://BUCKET_PROJECT_ID-vm-images/windows.iso serviceAccount: KSA_NAME
VirtIO-Treiber-Disk
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: virtio-driver spec: size: 1Gi storageClassName: robin-block-immediate diskType: cdrom source: gcs: url: gs://BUCKET_PROJECT_ID-vm-images/virtio-win.iso serviceAccount: KSA_NAME
Leeres Bootlaufwerk
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-vm-boot-dv spec: size: 40Gi storageClassName: robin-block-immediate
Laufwerke erstellen
Speichern Sie die VirtualMachineDisk-Manifeste und wenden Sie sie auf Ihren Cluster an, indem Sie den Befehl kubectl apply ausführen, um diese Laufwerke zu erstellen:
kubectl apply -f windows-iso.yaml
kubectl apply -f virtio-driver.yaml
kubectl apply -f windows-vm-boot-dv.yaml
Erstellen Sie eine Windows-VM:
Wenn Sie eine Windows-VM erstellen möchten, erstellen Sie ein Manifest, in dem die VM definiert und auf die Laufwerke verwiesen wird. Die VM wird vom ISO-Laufwerk gebootet, um die Installation zu starten.
Das folgende Beispiel zeigt ein VirtualMachine-Manifest:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: windows-vm name: windows-vm spec: osType: Windows disks: - virtualMachineDiskName: windows-vm-boot-dv boot: true - virtualMachineDiskName: windows-iso - virtualMachineDiskName: virtio-driver compute: cpu: vcpus: 2 memory: capacity: 4Gi interfaces: - name: eth0 networkName: NETWORK_NAME default: true ipAddresses: - IP_ADDRESS/PREFIX
Speichern Sie das Manifest als windows-vm.yaml und wenden Sie es auf Ihren Cluster an, indem Sie den Befehl kubectl apply ausführen, um die VM zu erstellen:
kubectl apply -f windows-vm.yaml
Verbinden und Installation abschließen
So stellen Sie eine Verbindung her und schließen die Installation ab:
Für den Zugriff auf die VM mit VNC verwenden Sie das Tool
virtctloder das Plug-inkubectl virt:virtctl vnc windows-vmOder, wenn Sie
virtctlalskubectl-Plug-in installiert haben:kubectl virt vnc windows-vmWeitere Informationen zu
virtctlfinden Sie in der KubeVirt-Dokumentation.Folgen Sie der Anleitung des Windows-Installationsprogramms. Wählen Sie bei Aufforderung Benutzerdefinierte Installation aus.
Wenn Sie dazu aufgefordert werden, laden Sie die
virtio-Treiber für Speicher und Netzwerk, indem Sie auf die angehängtevirtio-driver-Festplatte zugreifen.Schließen Sie die Installation ab.
Zugriff über Remote Desktop Protocol
Nachdem Sie Remote Desktop Protocol (RDP) im Gastbetriebssystem installiert und aktiviert haben, können Sie über RDP auf die VM zugreifen.
Da die VM an ein L2-Netzwerk angehängt ist, ist sie über ihre zugewiesene IP-Adresse (z. B. 10.223.237.10) direkt von außerhalb des Clusters erreichbar. Stellen Sie über einen RDP-Client eine Verbindung zu dieser IP-Adresse auf Port 3389 her. Achten Sie darauf, dass die interne IP-Adresse der L2-Instanz über Ihre Unternehmensfirewall und Routingregeln von Ihrem Clientcomputer aus erreichbar ist.
Virtuelle Maschine mit GPU-Unterstützung erstellen
Führen Sie die auf dieser Seite beschriebenen Schritte aus, um eine virtuelle Maschine zu erstellen, die Ihren geschäftlichen Anforderungen entspricht. Führen Sie dann die Schritte unter Virtuelle Maschine für die Verwendung von GPU-Ressourcen konfigurieren aus.
Referenz für die Spezifikation virtueller Maschinen
In der folgenden Tabelle werden die wichtigsten Felder in der VirtualMachine-Spezifikation beschrieben. Verwenden Sie diese Felder, wenn Sie ein YAML-Manifest für eine virtuelle Maschine konfigurieren, das mit kubectl apply auf Ihren Cluster angewendet werden soll, oder wenn Sie die Option Mit YAML erstellen in der Google Cloud -Konsole verwenden.
| Feld | Beschreibung | Erforderlich |
|---|---|---|
apiVersion |
Muss vm.cluster.gke.io/v1 lauten. |
Erforderlich |
kind |
Muss VirtualMachine lauten. |
Erforderlich |
metadata.name |
Ein eindeutiger Name für die virtuelle Maschine. | Erforderlich |
metadata.namespace |
Der Kubernetes-Namespace, in dem die VM ausgeführt wird. | Erforderlich |
spec.osType |
Der Typ des Gastbetriebssystems. Unterstützte Werte: Linux und Windows. |
Erforderlich |
spec.guestEnvironment |
Konfiguriert die Gastumgebung. Wenn keine Angabe gemacht wird, ist die Gastumgebung standardmäßig aktiviert. Setzen Sie den Wert auf {}, um sie zu deaktivieren. |
Optional |
spec.priorityClassName |
Die Prioritätsklasse für die VM. Eine höhere Priorität verringert die Wahrscheinlichkeit, dass die VM entfernt wird. | Optional |
spec.compute |
Konfiguriert die Rechenressourcen für die VM. | Erforderlich |
spec.compute.cpu.vcpus |
Anzahl der zuzuweisenden vCPUs. Zulässige Werte sind 1 bis 96. | Erforderlich |
spec.compute.memory.capacity |
Arbeitsspeicherkapazität, z. B. 8Gi. |
Erforderlich |
spec.interfaces |
Liste der Netzwerkschnittstellen für die VM. | Erforderlich |
spec.interfaces[].name |
Name der Schnittstelle, z. B. eth0. |
Erforderlich |
spec.interfaces[].networkName |
Name des Subnetzwerks, mit dem eine Verbindung hergestellt werden soll. Dies entspricht einer Network-Ressource im Cluster. |
Erforderlich |
spec.interfaces[].ipAddresses |
Statische IP-Adressen, die dieser Schnittstelle zugewiesen werden sollen. Wenn für das Subnetz kein DHCP aktiviert ist, müssen Sie eine statische IP-Adresse angeben. | Optional |
spec.disks |
Liste der Laufwerke, die an die VM angehängt werden sollen. | Erforderlich |
spec.disks[].virtualMachineDiskName |
Name der VirtualMachineDisk-Ressource. |
Erforderlich |
spec.disks[].boot |
Legen Sie diese Option für das Bootlaufwerk auf true fest. Nur ein Laufwerk kann als bootfähig markiert werden. |
Optional |
Auf eine virtuelle Maschine zugreifen
Führen Sie die Schritte in diesem Abschnitt aus, um auf eine virtuelle Maschine zuzugreifen, die auf Ihrer Distributed Cloud Connected-Serverbereitstellung ausgeführt wird.
Netzwerkanforderungen für den direkten Zugriff
Wenn Sie direkt über Ihr lokales Netzwerk auf eine VM zugreifen möchten, ohne einen Kubernetes-LoadBalancer-Dienst zu verwenden, müssen Sie die logischen und physischen Netzwerkkomponenten konfigurieren. Distributed Cloud Connected verwaltet automatisch Netzwerkressourcen im Cluster, Sie müssen jedoch das externe Netzwerk und die VM-Schnittstelle konfigurieren.
Subnetzwerk (VLAN) konfigurieren: Erstellen Sie ein Subnetzwerk mit einer bestimmten VLAN-ID über die Distributed Cloud Edge Network API mit
gcloudoder der API. Distributed Cloud Connected synchronisiert diese Konfiguration automatisch mit Ihrem Cluster. Sie müssen keine Kubernetes-Netzwerkressourcen manuell erstellen. Weitere Informationen finden Sie unter Subnetzwerke erstellen und verwalten.Lokales Netzwerk konfigurieren: Ihr Netzwerkadministrator muss die physischen Switches und Router, die mit den mit Distributed Cloud verbundenen Servern verbunden sind, so konfigurieren, dass:
- Lassen Sie die konfigurierte VLAN-ID auf den Switch-Ports zu (VLAN-Trunking).
- Aktivieren Sie das Routing zwischen Ihrem lokalen Netzwerk und dem Subnetz. Wenn Border Gateway Protocol (BGP), ein dynamisches Routingprotokoll, auf Ihren mit Distributed Cloud verbundenen Routern konfiguriert ist, werden diese Routen automatisch beworben, nachdem das Subnetzwerk erstellt wurde. Andernfalls müssen Sie statische Routen auf Ihren physischen Routern konfigurieren, um den Traffic für den IP-Bereich (CIDR) des Subnetzwerks an die mit Distributed Cloud verbundenen Knoten weiterzuleiten.
VM-Schnittstelle konfigurieren: Konfigurieren Sie in Ihrer
VirtualMachine-YAML-Konfiguration die VM für die Verwendung dieses Subnetzes, indem Sie den Netzwerknamen im Feldspec.interfacesangeben. Weitere Informationen finden Sie in der Referenz zu VM-Spezifikationen.
Anmeldedaten für den Zugriff auf Linux-VMs abrufen
Wenn Sie noch keine Anmeldedaten für den Zugriff auf die virtuelle Maschine haben, führen Sie die Schritte in diesem Abschnitt aus, um sie mithilfe der Linux-Gastumgebung zu erhalten.
Aktivieren Sie die Linux-Gastumgebung für die Ziel-VM, indem Sie die folgende Konfiguration auf Ihren Cluster anwenden:
kind: VirtualMachine metadata: name: my-virtual-machine namespace: my-vm-namespace spec: osType: Linux guestEnvironment: // enabled by default; disable with guestEnvironment: {} accessManagement: enable: true
Generieren Sie mit dem folgenden Befehl eine
id_rsa.pub-Datei, die ein SSH-Schlüsselpaar enthält:ssh-keygen -t rsaErstellen Sie eine
VirtualMachineAccessRequest-Ressource, indem Sie die folgende Konfiguration auf Ihren Cluster anwenden:apiVersion: vm.cluster.gke.io/v1alpha1 kind: VirtualMachineAccessRequest metadata: name: RESOURCE_NAME namespace: NAMESPACE spec: vm: VM_NAME user: USER_NAME ssh: key: RSA_KEY ttl: 2h
Ersetzen Sie Folgendes:
RESOURCE_NAME: Ein beschreibender Name für diese Ressource der VM-Zugriffsanfrage.NAMESPACE: der Ziel-Namespace.VM_NAMEist der Name der Ziel-VM.USER_NAME: der Name des Nutzers, dem Zugriff gewährt wird.RSA_KEY: der Inhalt der Dateiid_rsa.pub, die Sie im vorherigen Schritt generiert haben.
Führen Sie den Befehl
kubectl getaus, um den Status der Zugriffsanfrage zu prüfen:kubectl get vmar
Wenn der Befehl den Status
Configuredzurückgibt, fahren Sie mit dem nächsten Schritt fort.Greifen Sie über SSH auf die VM zu. Wenn die VM mit Ihrem lokalen Netzwerk verbunden ist, greifen Sie direkt über SSH darauf zu:
ssh USERNAME@VM_IP_ADDRESS -i PATH_TO_KEY
Ersetzen Sie Folgendes:
USERNAME: Der Nutzername, mit dem Sie sich anmelden, z. B. der Nutzer, der in derVirtualMachineAccessRequest-Ressource konfiguriert ist.VM_IP_ADDRESS: die IP-Adresse Ihrer VM.PATH_TO_KEY: Der Pfad zum privaten SSH-Schlüssel, der dem in den vorherigen Schritten generierten öffentlichen Schlüssel entspricht.
Über RDP auf eine Windows-VM zugreifen
Wenn Sie über Ihr lokales Netzwerk mit Remote Desktop Protocol (RDP) auf eine Windows-VM zugreifen möchten, müssen Sie RDP im Gastbetriebssystem aktivieren, dafür sorgen, dass die VM über das Netzwerk erreichbar ist, und Nutzeranmeldedaten einrichten.
Vorbereitung
RDP in Windows aktivieren: RDP muss im Windows-Gastbetriebssystem aktiviert sein.
Wenn RDP noch nicht aktiviert ist, verwenden Sie eine VNC-Konsole (Virtual Network Computing), um direkt auf den VM-Bildschirm zuzugreifen und RDP zu aktivieren. Mit dem Befehl kubectl virt vnc wird ein grafisches Viewer-Fenster auf Ihrer lokalen Workstation geöffnet. Dazu muss ein VNC-Viewer-Client wie Remote Viewer oder VNC Viewer auf Ihrer Workstation installiert sein:
kubectl virt vnc VM_NAME -n NAMESPACE
Ersetzen Sie Folgendes:
VM_NAME: der Name Ihrer Windows-VM.NAMESPACE: der Namespace der VM.
Verbindung über RDP herstellen
Führen Sie den Befehl
kubectl getaus, um die IP-Adresse der VM abzurufen:kubectl get vmi VM_NAME -n NAMESPACE -o jsonpath='{.status.interfaces[*].ipAddress}'
Ersetzen Sie Folgendes:
VM_NAME: der Name Ihrer Windows-VM.NAMESPACE: der Namespace der VM.
Notieren Sie sich die IP-Adresse, die zu Ihrem gerouteten Subnetz gehört.
Verwenden Sie einen Standard-RDP-Client wie die Remotedesktopverbindung unter Windows oder Remmina unter Linux, um eine Verbindung zur abgerufenen IP-Adresse über Port
3389herzustellen.Melden Sie sich mit dem Nutzernamen und dem Passwort an.
Virtuelle Maschine starten, neu starten oder stoppen
Verwenden Sie die folgenden Befehle, um eine virtuelle Maschine zu starten, neu zu starten oder zu stoppen:
- Virtuelle Maschine starten:
kubectl virt start vmVM_NAME-nNAMESPACE - Virtuelle Maschine neu starten:
kubectl virt restart vmVM_NAME-nNAMESPACE - Virtuelle Maschine beenden:
kubectl virt stop vmVM_NAME-nNAMESPACE
Ersetzen Sie Folgendes:
VM_NAMEist der Name der Ziel-VM.NAMESPACE: der Ziel-Namespace.
Virtuelle Maschine über die Google Cloud Console starten oder stoppen
Rufen Sie in der Google Cloud Console die Seite Cluster auf.
Wählen Sie das Zielprojekt Google Cloud aus.
Optional: Melden Sie sich im Zielcluster an, falls noch nicht geschehen:
Klicken Sie im linken Navigationsbereich auf Cluster.
Klicken Sie in der Liste Von Anthos verwaltete Cluster auf den Zielcluster.
Klicken Sie im Informationsbereich auf der rechten Seite auf ANMELDEN.
Wählen Sie im angezeigten Dialogfeld Ihre bevorzugte Authentifizierungsmethode aus, geben Sie Ihre Anmeldedaten ein und klicken Sie auf ANMELDEN.
Rufen Sie die Seite Virtuelle Maschinen auf.
Wählen Sie in der Liste der virtuellen Maschinen die Kästchen für die Ziel-VMs aus.
Klicken Sie oben auf der Seite auf START oder STOP.
Status einer virtuellen Maschine mit der Google Cloud Console aufrufen
Rufen Sie in der Google Cloud Console die Seite Cluster auf.
Wählen Sie das Zielprojekt Google Cloud aus.
Optional: Melden Sie sich im Zielcluster an, falls noch nicht geschehen:
Klicken Sie im linken Navigationsbereich auf Cluster.
Klicken Sie in der Liste Von Anthos verwaltete Cluster auf den Zielcluster.
Klicken Sie im Informationsbereich auf der rechten Seite auf ANMELDEN.
Wählen Sie im angezeigten Pop-up-Dialogfeld Ihre bevorzugte Authentifizierungsmethode aus, geben Sie Ihre Anmeldedaten ein und klicken Sie auf ANMELDEN.
Rufen Sie die Seite Virtuelle Maschinen auf.
Klicken Sie auf die Ziel-VM.
Klicken Sie auf der angezeigten Seite auf die Tabs Details, Ereignisse und YAML, um die entsprechenden Informationen zu dieser virtuellen Maschine aufzurufen.
Virtuelle Maschine ändern
Wenn Sie eine VM ändern möchten, müssen Sie sie löschen und mit der aktualisierten Konfiguration neu erstellen.
Virtuelle Maschine mit der Google Cloud Console löschen
Rufen Sie in der Google Cloud Console die Seite Cluster auf.
Wählen Sie das Zielprojekt Google Cloud aus.
Optional: Melden Sie sich im Zielcluster an, falls noch nicht geschehen:
Klicken Sie im linken Navigationsbereich auf Cluster.
Klicken Sie in der Liste Von Anthos verwaltete Cluster auf den Zielcluster.
Klicken Sie im Informationsbereich auf der rechten Seite auf ANMELDEN.
Wählen Sie im angezeigten Dialogfeld Ihre bevorzugte Authentifizierungsmethode aus, geben Sie Ihre Anmeldedaten ein und klicken Sie auf ANMELDEN.
Rufen Sie die Seite Virtuelle Maschinen auf.
Klicken Sie in der Liste der virtuellen Maschinen das Kästchen für die Ziel-VM an.
Klicken Sie oben auf der Seite auf LÖSCHEN.
Geben Sie im nun eingeblendeten Bestätigungsdialog den Namen der virtuellen Maschine ein und klicken Sie auf LÖSCHEN.
Nächste Schritte
- Arbeitslasten in Distributed Cloud Connected bereitstellen
- GPU-Arbeitslasten verwalten
- Zonen verwalten
- Maschinen verwalten
- Cluster verwalten
- Knotenpools verwalten