本頁說明如何管理 Google Distributed Cloud connected 機架上的虛擬機器,這些機架執行 Google Distributed Cloud 的 VM 執行階段。完成本頁的步驟前,請務必先熟悉 GDC 上的 VM 執行階段。如需支援的客層作業系統清單,請參閱 GDC 上 VM 執行階段的已驗證客層作業系統。
如要瞭解虛擬機器如何做為 Distributed Cloud connected 平台的重要元件,請參閱「擴充 GKE Enterprise,管理內部部署邊緣 VM」。
Distributed Cloud 連線叢集支援虛擬機器 Webhook。這項功能可讓 Distributed Cloud 連線驗證向本機 Kubernetes API 伺服器發出的使用者要求。遭拒的要求會產生詳細資訊,說明遭拒原因。
在 Distributed Cloud connected 上啟用 GDC 支援的 VM 執行階段
根據預設,Distributed Cloud connected 會停用 GDC 虛擬機器的 VM Runtime 支援功能。如要啟用這項功能,請完成本節中的步驟。本節的操作說明假設您已具備功能完整的 Distributed Cloud connected 叢集。
使用下列內容修改
VMRuntime自訂資源,並套用至叢集:apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: # Enable Anthos VM Runtime support enabled: true # vmImageFormat defaults to "raw" if not set vmImageFormat: "raw" # Set node grace period to 55 seconds; haPolicy: defaultRecoveryStrategy: Reschedule nodeHeartbeatInterval: 15s nodeMonitorGracePeriod: 55s
請勿變更
vmImageFormat參數的值。 Distributed Cloud Connected 不支援任何其他虛擬磁碟格式。這項程序通常需要幾分鐘才能完成。
請勿變更
vmImageFormat參數的值。 Distributed Cloud Connected 不支援任何其他虛擬磁碟格式。這項程序通常需要幾分鐘才能完成。
使用下列指令,確認
VMRuntime自訂資源已套用至叢集:kubectl get vmruntime -o yaml
指令會傳回類似以下範例的輸出內容:
- apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime ... spec: enabled: true vmImageFormat: raw status: ... ready: true ...使用下列指令,確認叢集已啟用 GDC 虛擬機器支援的 VM Runtime:
kubectl get pods -n vm-system
指令會傳回輸出內容,顯示叢集上執行的 GDC 子系統 Pod 的 VM 執行階段,類似以下範例:
NAME READY STATUS RESTARTS AGE cdi-apiserver-6c76c6cf7b-n68wn 1/1 Running 0 132m cdi-deployment-f78fd599-vj7tv 1/1 Running 0 132m cdi-operator-65c4df9647-fcb9d 1/1 Running 0 134m cdi-uploadproxy-7765ffb694-6j7bf 1/1 Running 0 132m macvtap-fjfjr 1/1 Running 0 134m virt-api-77dd99dbbb-bs2fb 1/1 Running 0 132m virt-api-77dd99dbbb-pqc27 1/1 Running 0 132m virt-controller-5b44dbbbd7-hc222 1/1 Running 0 132m virt-controller-5b44dbbbd7-p8xkk 1/1 Running 0 132m virt-handler-n76fs 1/1 Running 0 132m virt-operator-86565697d9-fpxqh 2/2 Running 0 134m virt-operator-86565697d9-jnbt7 2/2 Running 0 134m vm-controller-controller-manager-7844d5fb7b-72d8m 2/2 Running 0 134m vmruntime-controller-manager-845649c847-m78r9 2/2 Running 0 175m
安裝 virtctl 管理工具
您需要 virtctl 用戶端工具,才能管理 Distributed Cloud connected 叢集中的虛擬機器。如要安裝這項工具,請完成下列步驟:
將
virtctl用戶端工具安裝為kubectl外掛程式:export VERSION=v0.59.0-anthos1.28-gke.8 gcloud storage cp gs://anthos-baremetal-release/virtctl/${VERSION}/linux-amd64/virtctl /usr/local/bin/virtctl cd /usr/local/bin sudo ln -s virtctl kubectl-virt sudo chmod a+x virtctl cd -
確認已安裝
virt外掛程式:kubectl plugin list
如果外掛程式安裝成功,指令輸出內容會將
kubectl-virt列為外掛程式之一。
在 Distributed Cloud connected 上佈建虛擬機器
本節提供設定範例,說明如何使用 Symcloud Storage 抽象層,在 Distributed Cloud 連線叢集上佈建 Linux 虛擬機器和 Windows 虛擬機器。
請注意,您無法使用 kubectl virt 指令,直接在 Distributed Cloud 連線叢集上建立虛擬機器,因為 Distributed Cloud 連線叢集不會為虛擬機器提供檔案系統儲存空間。
完成本節中的步驟前,請先完成「設定 Distributed Cloud connected for Symcloud Storage」中的步驟。如果之後停用叢集上的 Symcloud Storage,設定為使用 Symcloud Storage 的虛擬機器就會失敗。
在 Distributed Cloud connected 上佈建 Linux 虛擬機器
以下範例說明如何佈建 Linux 虛擬機器,並在 Ubuntu Server 22.04 上執行 Symcloud Storage。安裝來源是 Ubuntu Server 22.04 ISO 磁碟映像檔。
使用下列內容建立 Ubuntu Server 安裝光碟映像檔的
VirtualMachineDisk資源,然後將其套用至叢集:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: ubuntu-iso-disk spec: size: 20Gi storageClassName: robin diskType: cdrom source: http: url: https://releases.ubuntu.com/jammy/ubuntu-22.04.3-live-server-amd64.iso
為虛擬機器的虛擬硬碟建立
VirtualMachineDisk資源,內容如下,然後將其套用至叢集:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: "ubuntu-main-disk" spec: size: 200Gi storageClassName: robin
建立
VirtualMachineType資源,其中包含指定虛擬機器設定的下列內容,然後將該資源套用至叢集:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineType metadata: name: small-2-20 spec: cpu: vcpus: 2 memory: capacity: 20Gi
建立
VirtualMachine資源,其中包含在叢集上例項化及啟動虛擬機器的內容,然後將該資源套用至叢集:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: ubu-vm name: ubu-vm # Propagate the virtual machine name to the VMI spec: osType: Linux compute: virtualMachineTypeName: small-2-20 interfaces: - name: eth0 networkName: my-network default: true disks: - virtualMachineDiskName: ubuntu-main-disk boot: true - virtualMachineDiskName: ubuntu-iso-disk
您也必須在叢集上設定下列功能:
在虛擬機器上安裝 Ubuntu Server:
- 等待
importerPod 下載 Ubuntu Server 安裝光碟映像檔。 檢查虛擬機器的狀態:
kubectl get gvm VM_NAME
將
VM_NAME替換為虛擬機名稱,在本例中為ubu-vm。使用 SSH 或遠端桌面登入虛擬機器。
完成 Ubuntu Linux 安裝步驟。
- 等待
清除所用資源:
停止虛擬機器:
kubectl virt stop VM_NAME
將
VM_NAME替換為虛擬機名稱,在本例中為ubu-vm。編輯虛擬機器的 YAML 檔案,移除安裝光碟映像檔的參照:
kubectl edit gvm VM_NAME
將
VM_NAME替換為虛擬機名稱,在本例中為ubu-vm。啟動虛擬機器:
kubectl virt start VM_NAME
將
VM_NAME替換為虛擬機名稱,在本例中為ubu-vm。刪除安裝光碟映像檔的
VirtualMachineDisk資源:kubectl delete virtualmachinedisk ubuntu-iso-disk
在 Distributed Cloud connected 上佈建 Windows 虛擬機器
以下範例說明如何使用 Symcloud Storage 佈建 Windows 虛擬機器。步驟與佈建 Linux 虛擬機器類似,但需要額外新增 virtio 驅動程式磁碟映像檔,這是安裝 Windows 的必要條件。
取得 Windows 授權副本和安裝媒體映像檔。
為 Windows 安裝光碟映像檔建立
VirtualMachineDisk資源,其中包含下列內容,然後將其套用至叢集:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-iso-disk namespace: default spec: size: 5Gi storageClassName: robin diskType: cdrom source: http: url: WINDOWS_ISO_URL
將
NAT_GATEWAY替換為目標 Windows 安裝 ISO 磁碟映像檔的完整網址。為
virtio驅動程式建立VirtualMachineDisk資源,並加入以下內容,然後將其套用至叢集:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-virtio-driver namespace: default spec: size: 1Gi storageClassName: robin diskType: cdrom source: http: url: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
為虛擬機器的虛擬硬碟建立
VirtualMachineDisk資源,內容如下,然後將其套用至叢集:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-main-disk namespace: default spec: size: 15Gi storageClassName: robin
建立
VirtualMachineType資源,其中包含指定虛擬機器設定的下列內容,然後將該資源套用至叢集:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineType metadata: name: small-2-20 spec: cpu: vcpus: 2 memory: capacity: 20Gi
建立
VirtualMachine資源,其中包含在叢集上例項化及啟動虛擬機器的內容,然後將該資源套用至叢集:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: win-vm name: win-vm # Propagate the virtual machine name to the VMI spec: osType: Windows compute: virtualMachineTypeName: my-vmt interfaces: - name: eth0 networkName: my-network default: true disks: - virtualMachineDiskName: windows-main-disk boot: true - virtualMachineDiskName: windows-iso-disk - virtualMachineDiskName: win-virtio-driver
您也必須在叢集上設定下列功能:
在虛擬機器上安裝 Windows:
- 等待
importerPod 下載 Windows 安裝光碟映像檔。 檢查虛擬機器的狀態:
kubectl get gvm VM_NAME
將
VM_NAME替換為虛擬機名稱,在本例中為win-vm。按照「連線至 Windows VM 並完成 OS 安裝程序」中的步驟,完成 Windows 安裝程序。
- 等待
清除所用資源:
停止虛擬機器:
kubectl virt stop VM_NAME
將
VM_NAME替換為虛擬機名稱,在本例中為win-vm。完成「卸載 ISO 映像檔和驅動程式磁碟」中的步驟。
管理在 Distributed Cloud connected 上執行的虛擬機器
如要瞭解如何管理在 Distributed Cloud connected 上執行的虛擬機器,請參閱下列 GDC VM Runtime 說明文件:
如要管理在 Distributed Cloud 連結網路方案上執行的虛擬機器,請先設定kubectl連線。
在 Distributed Cloud connected 上停用 GDC 的 VM Runtime
請按照本節的步驟,在 Distributed Cloud connected 上停用 GDC 的 VM 執行階段。如要在 Distributed Cloud 連結網路方案上停用 GDC 的 VM Runtime,請務必先停止並刪除 Distributed Cloud 連結網路叢集上的所有虛擬機器,詳情請參閱「刪除 VM」。
如要在 Distributed Cloud Connected 上的 GDC 停用 VM 執行階段,請將 VMRuntime 自訂資源的 enabled 規格參數設為 false,如下所示,然後套用至叢集:
apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: # Disable Anthos VM Runtime enabled: false # vmImageFormat defaults to "raw" if not set vmImageFormat: "raw"
後續步驟
- 管理 Distributed Cloud 連線伺服器上的虛擬機器
- 在 Distributed Cloud connected 上部署工作負載
- 管理 GPU 工作負載
- 管理區域
- 管理機器
- 管理叢集
- 管理節點集區