Skip to content

🏗️ 基礎架構測驗

1. KubeVirt 的設計準則「KubeVirt Razor」的核心精神是什麼?

  • A. 如果某個功能對 Pod 也有用,就不應該只為 VM 實作它
  • B. 所有 VM 功能都必須獨立於 Kubernetes 之外自行實作
  • C. KubeVirt 應該取代 Kubernetes 的排程器來管理 VM
  • D. VM 必須使用與 Pod 完全隔離的專屬網路和儲存層

2. virt-handler 在 Kubernetes 叢集中以哪種部署型態運行?

  • A. StatefulSet(每節點一個固定 Pod)
  • B. Deployment(≥2 副本,高可用)
  • C. DaemonSet(每節點一個)
  • D. Job(按需執行後終止)

3. VMI 正常關機(Guest OS 執行乾淨關機)後,會進入哪個 Phase?

  • A. Stopped
  • B. Halted
  • C. Succeeded
  • D. Terminated

4. 在 KubeVirt 的 CRD 中,哪個資源代表「正在執行的 VM 實例」,且關機後會被刪除?

  • A. VirtualMachineInstance (VMI):暫態物件,代表執行中的 VM
  • B. VirtualMachine (VM):持久存在,停止後資料保留
  • C. VirtualMachinePool:高階 VM 池管理
  • D. VirtualMachineInstanceReplicaSet:VM 水平擴展

5. virt-launcher Pod 內部執行哪兩個核心程式來實際運行 VM?

  • A. containerd 與 runc
  • B. Docker 與 KVM 模組
  • C. libvirtd 與 QEMU
  • D. virsh 與 systemd-nspawn

6. 在建立 VM 的資料流中,哪個元件負責建立 VirtualMachineInstance (VMI) CR?

  • A. virt-controller(VM 控制器,pkg/virt-controller/watch/vm/vm.go)
  • B. virt-api(Admission Webhook 處理後)
  • C. virt-handler(節點代理)
  • D. virt-operator(安裝管理器)

7. RunStrategy 設定為 Always 時,virt-controller 的行為是什麼?

  • A. 等待使用者手動執行 virtctl start 才啟動 VM
  • B. 僅在 VMI 因錯誤失敗時才重啟,正常關機後不重啟
  • C. 只啟動一次,停止後永遠不再重啟
  • D. VMI 停止後(無論原因)自動重新建立 VMI

8. virt-api、virt-controller 與 virt-operator 各自以哪種型態部署,最少需要幾個副本以確保高可用?

  • A. 三者皆為 DaemonSet,每節點一個
  • B. 三者皆為 Deployment,≥1 副本
  • C. 三者皆為 Deployment,≥2 副本
  • D. virt-api 為 StatefulSet,其他為 Deployment,≥2 副本

9. KubeVirt 採用「協作 (Choreography)」而非「編排 (Orchestration)」模式,各元件透過什麼共享狀態進行協調?

  • A. KubeVirt CR(安裝設定物件)
  • B. virt-controller 的 ConfigMap
  • C. VMI CR(VirtualMachineInstance 物件)
  • D. virt-handler 的 DaemonSet 狀態

10. virt-api 的 Mutating Webhook 在處理 VM 建立時,預設補齊的 terminationGracePeriodSeconds 值為多少秒?

  • A. 30 秒
  • B. 60 秒
  • C. 120 秒
  • D. 180 秒

11. virt-handler 在節點上運行時,具有哪些特殊的宿主機存取權限?

  • A. HostPID 與 HostNetwork
  • B. HostIPC 與 HostPID
  • C. HostNetwork 與 HostIPC
  • D. 僅 HostNetwork,不需要其他特殊權限

12. UIDTrackingControllerExpectations 機制的主要目的是什麼?

  • A. 追蹤 VMI 的 UUID 以便在叢集中快速查詢定位
  • B. 管理 virt-launcher Pod 的最大存活時間(TTL)
  • C. 記錄每次 VM Phase 轉換的時間戳以供 SLA 監控
  • D. 防止控制器在 Informer 尚未確認之前重複建立相同的 Pod

13. KubeVirt 的 CA 憑證有效期限為多長?各元件(virt-api、virt-handler 等)的憑證有效期限又是多長?

  • A. CA 30 天,元件憑證 7 天
  • B. CA 7 天,元件憑證 24 小時
  • C. CA 365 天,元件憑證 30 天
  • D. CA 24 小時,元件憑證 1 小時

14. virt-controller 的 Leader Election 中,Lease 的有效期 (DefaultLeaseDuration) 預設為多少秒?

  • A. 5 秒
  • B. 10 秒
  • C. 15 秒
  • D. 30 秒

15. KubeVirt 控制器使用的 DefaultTypedControllerRateLimiter 令牌桶算法,預設每秒可處理多少個操作?突發量(burst)為多少?

  • A. 每秒 10 個操作,突發量 100
  • B. 每秒 5 個操作,突發量 50
  • C. 每秒 20 個操作,突發量 200
  • D. 每秒 100 個操作,突發量 1000

16. 在 KubeVirt 的兩階段網路配置中,Phase 1 由哪個元件執行?網路配置快取存放在哪個路徑格式下?

  • A. virt-launcher 執行 Phase 1,快取於 /etc/kubevirt/network/
  • B. virt-handler 執行 Phase 1,快取於 /var/run/kubevirt-private/vif-cache-xxx.json
  • C. virt-controller 執行 Phase 1,快取於 /run/kubevirt/vif/
  • D. virt-api 執行 Phase 1,快取於 /var/lib/kubevirt/network/

17. virt-operator 的 Install Strategy 使用哪種 Kubernetes 資源類型來儲存各版本的完整部署資訊?

  • A. Secret(加密儲存敏感配置)
  • B. CustomResourceDefinition(擴展 API 定義)
  • C. Deployment Annotation(版本標記)
  • D. ConfigMap(儲存各版本所有需要部署的資源定義)

18. 記憶體熱插拔中,標準記憶體的對齊要求常數 HotplugBlockAlignmentBytes 的值是多少?

  • A. 2 MiB (0x200000)
  • B. 4 KiB (0x1000)
  • C. 1 MiB (0x100000)
  • D. 4 MiB (0x400000)

19. VMI 在什麼情況下會進入 WaitingForSync Phase?

  • A. 等待 PVC 綁定完成,儲存尚未就緒
  • B. 作為 Live Migration 接收端,等待來源端資料同步完成
  • C. 與 virt-handler 通訊中斷,無法確認當前狀態
  • D. DataVolume 資料準備中,尚未達到 Ready 狀態

20. VirtualMachineInstancetype 與 VirtualMachineClusterInstancetype 的主要差異是什麼?

  • A. Instancetype 管理 CPU 規格,ClusterInstancetype 管理記憶體規格
  • B. Instancetype 用於開發環境,ClusterInstancetype 用於生產環境
  • C. Instancetype 是 namespace-scoped,ClusterInstancetype 是 cluster-scoped
  • D. 兩者功能完全相同,只是命名長度不同

21. VM 的 PrintableStatus(kubectl get vm 所見狀態)中,哪個狀態表示 VM 正在等待 DataVolume 準備完成?

  • A. Initializing(初始化中)
  • B. WaitingForVolumeBinding(等待 PVC 綁定)
  • C. Starting(正在啟動中)
  • D. Provisioning(等待 DataVolume 準備)

22. KubeVirt 整體安裝與設定的 Custom Resource 的 Kind 名稱是什麼?

  • A. KubeVirtConfig
  • B. KubeVirt
  • C. KubeVirtOperator
  • D. VirtualizationCluster

23. virt-handler 透過什麼通訊方式與 virt-launcher 互動來管理 libvirt domain?

  • A. Unix Domain Socket(本地 Socket 通訊,搭配 TLS)
  • B. HTTP REST API(透過 Pod ClusterIP)
  • C. gRPC over TCP(透過 Kubernetes Service)
  • D. 共享記憶體(mmap)

24. VMI Phase 常數(VmPhaseUnset、Pending、Running 等)的型別定義位於 KubeVirt 原始碼的哪個檔案路徑?

  • A. staging/src/kubevirt.io/api/core/v1/types.go
  • B. pkg/virt-controller/watch/vmi/vmi.go
  • C. pkg/virt-handler/controller.go
  • D. cmd/virt-api/main.go

25. 執行 kubectl delete vm 後,virt-handler 預設等待 QEMU 優雅關機的 grace period 為多少秒?超時後如何處理?

  • A. 30 秒,超時後發送 SIGTERM 給 QEMU
  • B. 60 秒,超時後直接刪除 virt-launcher Pod
  • C. 120 秒,超時後重試發送 ACPI 關機訊號
  • D. 180 秒,超時後強制終止 QEMU 程序

26. 在 KubeVirt 建立 VM 的資料流中,哪個元件負責選定 virt-launcher Pod 的執行節點?

  • A. virt-controller(VMI 控制器,依 nodeSelector 選節點)
  • B. kube-scheduler(Kubernetes 原生排程器)
  • C. virt-handler(節點代理,主動爭搶)
  • D. kubelet(節點 Agent,本地決策)

27. VMI 狀態更新的完整鏈路,從底層事件到使用者可見狀態,正確的順序是哪一個?

  • A. virt-handler 更新 → virt-launcher 通知 → API Server → virt-controller 同步
  • B. virt-controller 觸發 → API Server 記錄 → virt-handler 執行 → virt-launcher 回報
  • C. API Server watch → virt-controller 協調 → virt-handler 同步 → virt-launcher 執行
  • D. QEMU 域事件 → virt-launcher 偵測 → virt-handler 更新 API Server → virt-controller 更新 VM

28. virt-operator 的 Install Strategy 快取中,用於判斷快取是否仍有效的 key 格式是什麼?

  • A. {namespace}/{version} 格式(命名空間加版本號)
  • B. {version}-{resourceVersion} 格式(版本號加 ConfigMap 的 resourceVersion)
  • C. {name}-{imageTag} 格式(元件名稱加映像檔標籤)
  • D. {version}/{timestamp} 格式(版本號加時間戳)

29. virt-controller 的 Leader Election 中,預設使用的 Lease 資源名稱(DefaultLeaseName)是什麼?

  • A. kubevirt-controller
  • B. virt-controller-leader
  • C. virt-controller
  • D. kubevirt-leader

30. 在 KubeVirt 的 CPUDomainConfigurator 中,哪個欄位用來判斷當前平台是否支援 CPU 熱插拔功能?

  • A. isCPUPinningEnabled
  • B. allowCPULiveUpdate
  • C. isHotplugSupported
  • D. hotplugCPUEnabled

基於 Apache 2.0 授權