Skip to content

📖 實用指南測驗

1. 使用 virtctl 啟動一個名為 my-vm 的 VM 的指令是?

  • A. kubectl start vm my-vm
  • B. virtctl start my-vm
  • C. kubectl patch vm my-vm --type merge -p 以 JSON 修改 spec.running:true
  • D. kubectl create vm my-vm --run

2. virtctl ssh user@my-vm 連線成功需要滿足哪些主要前提?

  • A. VM 必須有公開的 NodePort Service
  • B. VM 的 SSH Service 已開啟,且已將公鑰注入 VM(透過 cloud-init 或 AccessCredentials)
  • C. 必須先在 VM 上執行 virtctl port-forward 後才能 SSH
  • D. virtctl ssh 只支援 Windows VM,Linux VM 需用 virtctl console

3. virtctl console my-vmi 連接的是什麼?

  • A. VM 的圖形界面(VNC)
  • B. VM 的 Serial Console(串列控制台),可在無圖形界面時操作 OS
  • C. VM 的 UEFI Shell
  • D. VM 的 SSH Session

4. virtctl port-forward vm/my-vm 8080:80 指令的作用是?

  • A. 在 VM 上開啟 8080 port,轉發到外部 80 port
  • B. 將本機 8080 port 轉發到 VM 內部的 80 port
  • C. 建立 NodePort Service 將 8080 暴露到叢集外
  • D. 在 virt-launcher Pod 上設定 iptables 規則

5. 若要強制暫停(freeze)一個正在執行的 VM,應使用哪個 virtctl 指令?

  • A. virtctl stop --grace-period=0 my-vm
  • B. virtctl freeze my-vmi
  • C. virtctl pause vm my-vm
  • D. virtctl suspend my-vm

6. virtctl image-upload 指令的主要用途是什麼?

  • A. 將 VM 的磁碟映像匯出到 S3
  • B. 上傳本地 disk image(如 .qcow2、.raw、.iso)到 CDI PVC 或 DataVolume
  • C. 更新 KubeVirt 元件的容器映像
  • D. 將 OCI 映像轉換為 VM disk

7. KubeVirt HyperConverged (HCO) Operator 的主要作用是什麼?

  • A. 管理 KubeVirt 的高可用性,確保 virt-controller 有多個副本
  • B. 整合管理 KubeVirt、CDI、SSP、NetworkAddonsOperator 等多個相關元件,提供統一的安裝和設定入口
  • C. 提供 VM 的超融合儲存解決方案(將 Ceph 整合到 KubeVirt)
  • D. HCO 已被棄用,官方建議直接安裝 KubeVirt

8. KubeVirt 安裝時,KubeVirtConfig(KubeVirt CR)的 certificateRotateStrategy 預設值是什麼?

  • A. Manual
  • B. External
  • C. None(關閉自動輪換)
  • D. Self(KubeVirt 自動管理)

9. 安裝 KubeVirt 時,若叢集不支援 KVM 硬體虛擬化,需要啟用哪個 Feature Gate?

  • A. SoftEmulation
  • B. UseEmulation
  • C. DisableKVM
  • D. AllowSoftwareEmulation

10. 如何確認 KubeVirt 元件已成功安裝且狀態正常?

  • A. 檢查 kubeadm version 輸出
  • B. 執行 kubectl get kubevirt -n kubevirt 確認 PHASE 為 Deployed
  • C. 檢查 /etc/kubevirt/config.json 設定檔是否存在
  • D. 執行 virtctl version 確認 Client 版本

11. 匯入一個 VMDK(VMware 磁碟格式)到 KubeVirt 最推薦的方法是什麼?

  • A. 直接將 VMDK 掛載為 hostPath Volume
  • B. 使用 CDI DataVolume,source 設為 http/s3/upload,CDI 自動將 VMDK 轉換為 qcow2
  • C. 先在本機將 VMDK 轉換為 raw 格式,再建立 PVC 後使用 kubectl cp 複製
  • D. 只能使用 qcow2 格式,VMDK 必須先在 VMware 上匯出

12. Forklift 工具在 VM 遷移流程中扮演什麼角色?

  • A. 管理 KubeVirt VM 的 Live Migration
  • B. 將 VMware vSphere、oVirt、OVA 等平台的 VM 批量遷移到 KubeVirt/OpenShift Virtualization
  • C. 將 KubeVirt VM 遷移到公有雲(AWS、GCP、Azure)
  • D. 將 Hyper-V VM 遷移到 Docker Container

13. Warm Migration(熱遷移)相比 Cold Migration(冷遷移)的主要優點是什麼?

  • A. Warm Migration 不需要停機,VM 可以無縫切換到 KubeVirt
  • B. Warm Migration 在正式切割前先進行多次增量資料同步(類似 pre-copy),大幅縮短最終停機時間
  • C. Warm Migration 支援更多來源平台格式
  • D. Warm Migration 自動設定 KubeVirt VM 的最佳化參數

14. 為了追蹤 VM 資源使用情況,KubeVirt 提供哪個 Prometheus Metrics 端點?

  • A. virt-handler 在 /metrics 端點暴露每個節點的 VM 指標(CPU、記憶體、網路、磁碟 I/O)
  • B. VM 指標只能透過 VMI 的 status 欄位讀取
  • C. KubeVirt 不原生支援 Prometheus,需要安裝 kube-state-metrics
  • D. 只有 virt-controller 暴露指標,沒有 per-VM 的詳細指標

15. 當 VMI 卡在 Scheduling 狀態很長時間,最可能的排查方向是?

  • A. 查看 virt-api Pod 的 log,因為 API 層面卡住了
  • B. 查看 VMI 的 Events 和相關 Pod 的 Events,確認節點是否有足夠資源(CPU、GPU、HugePages)符合排程要求
  • C. 重啟 virt-controller 通常能解決排程問題
  • D. VMI Scheduling 狀態是正常的初始化過程,不需要排查

16. 收集 KubeVirt 除錯資訊最全面的工具是什麼?

  • A. kubectl get all -n kubevirt
  • B. virtctl adm collect 或 must-gather 工具,自動收集所有 KubeVirt 元件 log 和狀態
  • C. kubectl describe kubevirt -n kubevirt
  • D. 直接 ssh 到所有節點收集 journalctl 輸出

17. KubeVirt Feature Gates 的設定位置在哪裡?

  • A. 每個 VMI 的 spec.domain.features 中設定
  • B. KubeVirt CR(kubevirt/kubevirt)的 spec.configuration.developerConfiguration.featureGates
  • C. /etc/kubevirt/feature-gates.yaml 設定檔
  • D. kubevirt-config ConfigMap 的 feature-gates 欄位

18. 在 VM YAML 中使用 nodeSelector 要求 VM 只排程到 GPU 節點,正確的路徑是?

  • A. spec.nodeSelector
  • B. spec.template.spec.nodeSelector
  • C. spec.template.spec.domain.resources.requests 中指定 GPU
  • D. spec.affinity.nodeAffinity

19. 執行 virtctl migrate my-vm 後,如何確認 Migration 完成且 VM 在新節點上執行?

  • A. 查看 kubectl get vmi my-vm -o yaml 中的 status.nodeName 確認節點改變,以及 kubectl get vmim 確認 Phase 為 Succeeded
  • B. Migration 完成後 VM 會自動重啟,從重啟 Event 可確認
  • C. 執行 virtctl status my-vm 查看遷移狀態
  • D. 查看 virt-controller log 中的 migration completed 訊息

20. 在 Kubernetes 上部署 KubeVirt VM 時,哪個設定可以確保 VM 在節點維護期間自動遷移?

  • A. 在 NodeMaintenance 資源中設定 migrationPolicy
  • B. 在 VMI spec 的 evictionStrategy 設為 LiveMigrate
  • C. 為 VM 建立 PodDisruptionBudget(PDB)
  • D. 在 kubelet 設定 --eviction-hard 相關參數

21. 如何讓 KubeVirt VM 在重啟後保留自訂 cloud-init 設定的使用者密碼?

  • A. cloud-init 資料每次重啟都重新套用,密碼每次都會重設,不應依賴 cloud-init 設定永久密碼
  • B. 在 userData 中使用 ssh_pwauth: true 並設定 chpasswd,首次啟動後密碼寫入 OS,後續重啟不再重設
  • C. 使用 AccessCredentials 資源注入的密碼才能持久保存
  • D. 需要安裝 Guest Agent 才能持久保存 cloud-init 密碼

22. KubeVirt 的 AccessCredentials 資源主要用於解決什麼問題?

  • A. 管理 KubeVirt API 的 RBAC 存取控制
  • B. 在 VM 執行中動態注入 SSH 公鑰,無需修改 cloud-init 或重建 VM
  • C. 管理 VM 存取 PVC 的許可權控制
  • D. 設定 VM 的網路 ACL 規則

23. 為什麼建議在 KubeVirt VM 中安裝 QEMU Guest Agent?

  • A. 沒有 Guest Agent,VM 無法正常啟動
  • B. 提供 IP 地址回報、Application-consistent 快照、SSH 公鑰注入、凍結/解凍等功能,大幅提升 VM 可管理性
  • C. Guest Agent 是 SR-IOV 網路的必要元件
  • D. 沒有 Guest Agent 無法執行 Live Migration

24. KubeVirt 的 DataVolumeTemplates 欄位在 VM spec 中的用途是什麼?

  • A. 定義 VM 使用的 PVC 清單(預先建立好的)
  • B. 讓 VM 自動建立 DataVolume,CDI 負責匯入/填充磁碟,VM 在磁碟就緒後才啟動
  • C. 管理 VM 的儲存配額
  • D. 定義 VM 磁碟的備份排程

25. 執行 kubectl delete vm my-vm 後,關聯的 PVC 會發生什麼?

  • A. PVC 和資料一起被刪除(Kubernetes Cascading Delete)
  • B. 取決於 VM 是否使用 DataVolumeTemplates;用 dataVolumeTemplates 建立的 DataVolume 和 PVC 會被刪除,預先存在的 PVC 不受影響
  • C. PVC 永遠不會被刪除,需要手動清理
  • D. 只有 StorageClass 設為 Retain 時 PVC 才保留

26. 如何確認 KubeVirt 節點已正確啟用 KVM 虛擬化支援?

  • A. 執行 lscpu 確認 CPU 型號
  • B. 確認 /dev/kvm 裝置存在,且 kubectl describe node 中有 devices.kubevirt.io/kvm: 1 資源
  • C. 執行 systemctl status libvirtd 確認服務運行
  • D. 查看 virt-handler log 中的 KVM enabled 訊息

27. KubeVirt 支援的 CPU 模式中,host-passthrough 模式有什麼特別限制?

  • A. host-passthrough 只支援 Intel CPU,不支援 AMD
  • B. 使用 host-passthrough 的 VM 無法執行 Live Migration,因為目標節點可能有不同的 CPU 特性
  • C. host-passthrough 需要 SR-IOV 網路才能使用
  • D. host-passthrough 不支援 Windows VM

28. 在 VM spec 中,如何指定 VM 使用 EFI(UEFI)韌體而非傳統 BIOS?

  • A. spec.domain.firmware.bios: {useSeaBIOS: false}
  • B. spec.domain.firmware: {bootloader: {efi: {}}}
  • C. spec.domain.uefi: {enabled: true}
  • D. spec.domain.features.smm: {enabled: true}

29. 如何設定 VM 只能排程到特定的 Kubernetes 節點群組(例如只在 GPU 節點上運行)?

  • A. 在 KubeVirt CR 的 nodePlacement 設定全域排程限制
  • B. 在 VM spec.template.spec 中設定 nodeSelector 或 affinity,指定目標節點的 Label
  • C. 在 VMI 建立後使用 virtctl node-assign 指定節點
  • D. 設定 VM spec.template.spec.hostname 為目標節點名稱

30. 定期輪換 KubeVirt 內部 TLS 憑證(如 webhook 憑證)的機制是什麼?

  • A. 需要手動重建 KubeVirt Secrets 並重啟相關 Pod
  • B. KubeVirt 的 virt-operator 內建憑證管理功能,定期自動輪換 TLS Secrets,無需人工介入
  • C. 透過外部 cert-manager 強制輪換,KubeVirt 本身不處理憑證輪換
  • D. 憑證有效期設為 100 年,實際上不需要輪換

基於 Apache 2.0 授權