節點一致性測試是一個容器化的測試框架,為節點提供系統驗證與功能測試。 此測試會驗證節點是否符合 Kubernetes 的最低要求;通過測試的節點就有資格加入 Kubernetes 叢集。
要執行節點一致性測試,節點必須滿足與標準 Kubernetes 節點相同的先決條件。 節點應至少安裝以下背景程式:
若要執行節點一致性測試,請執行以下步驟:
確認 kubelet 的 --kubeconfig 選項的值;例如:--kubeconfig=/var/lib/kubelet/config.yaml。
由於測試框架會啟動一個本地控制平面來測試 kubelet,要使用 http://localhost:8080 作為 API 伺服器的網址。
此外,還有一些您可能需要使用的 kubelet 命令列參數:
--cloud-provider:如果您目前使用 --cloud-provider=gce,執行測試時應移除此命令列參數。使用以下指令執行節點一致性測試:
# $CONFIG_DIR 是您 kubelet 的 Pod 設定檔路徑。
# $LOG_DIR 是測試結果的輸出路徑。
sudo docker run -it --rm --privileged --net=host \
-v /:/rootfs -v $CONFIG_DIR:$CONFIG_DIR -v $LOG_DIR:/var/result \
registry.k8s.io/node-test:0.2
Kubernetes 也為其他架構提供了節點一致性測試的 Docker 映像檔:
| 架構 | 映像檔 |
|---|---|
| amd64 | node-test-amd64 |
| arm | node-test-arm |
| arm64 | node-test-arm64 |
要執行特定的測試,需使用您想執行的測試正規表達式來覆寫環境變數 FOCUS。
sudo docker run -it --rm --privileged --net=host \
-v /:/rootfs:ro -v $CONFIG_DIR:$CONFIG_DIR -v $LOG_DIR:/var/result \
-e FOCUS=MirrorPod \ # Only run MirrorPod test
registry.k8s.io/node-test:0.2
若要跳過特定測試,請使用您想跳過的測試正則表達式來覆寫環境變數 SKIP。
sudo docker run -it --rm --privileged --net=host \
-v /:/rootfs:ro -v $CONFIG_DIR:$CONFIG_DIR -v $LOG_DIR:/var/result \
-e SKIP=MirrorPod \ # Run all conformance tests but skip MirrorPod test
registry.k8s.io/node-test:0.2
節點一致性測試是 node e2e test 的容器化版本。 在預設情況下,它會執行所有的一致性測試。
理論上,只要您正確配置容器並掛載必要的卷,您就能執行任何節點端對端測試。 但強烈建議僅執行一致性測試,因為執行非一致性測試所需的配置要複雜得多。