啟用 NSX Network Detection and Response 時預先檢查失敗。

問題

nsx-ndr-precheck 工作的記錄中包含以下錯誤:

2022-10-04 19:43:44,954 - nsx_api_client.nsx_api_client - ERROR - communication error: HTTPSConnectionPool(host='external-nsx-manager', port=443): Max retries exceeded with url: /api/v1/licenses (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),))

在這些記錄中,與主機 "external-nsx-manager" 的連線存在特定問題資訊清單,其錯誤字串為 "CERTIFICATE_VERIFY_FAILED"

若要瞭解有關如何存取這些記錄的詳細資訊,請參閱 NSX Network Detection and Response 啟用預先檢查失敗 中的步驟 4 b。

原因

發生此問題的原因是,NSX Manager 叢集的憑證設定有問題。

解決方案

  1. 若要解決此問題,請確定您已為 NSX Manager 叢集中的每個節點以及該叢集本身正確設定憑證。具體而言,請驗證:
    • 每個憑證都有一個一般名稱,並與用到它的完整網域名稱相符。
    • 不會有兩個憑證使用相同的一般名稱。
  2. 若要驗證憑證設定是否正確,建議採用以下兩種方法。
    1. 使用 Web 瀏覽器:

      在 Web 瀏覽器中,分別使用 NSX Manager 節點的完整網域名稱來造訪各節點,此外亦造訪叢集網域名稱。在每個網域中,使用瀏覽器工具檢視憑證資訊,尤其是憑證的一般名稱。確認一般名稱與瀏覽器 URL 列中所造訪的網域名稱完全相符。

    2. 使用命令列工具:
      在 Shell 中,針對其中一個 NSX Manager 節點,執行以下命令:
      • 從 Kubernetes 平台擷取受信任的 CA 憑證。
      napp-k get secret/nsx-ndr-precheck-ccpchk-nsx-manager-truststore   -o
                        jsonpath='{.data.ca\.crt}'| base64 -d > /tmp/ca.crt
      該命令會從 Kubernetes 平台將受信任的憑證授權機構擷取到 /tmp/ca.crt 檔案。
      • 檢視受信任憑證的 subject
      openssl storeutl -noout -certs --text /tmp/ca.crt |grep "Subject:" 
             Subject: C=US, ST=CA, L=Palo Alto,
                          O=VMware Inc., OU=NSX,   CN=k8s-platform-ca
             Subject: C=US, ST=CA, L=Palo Alto,
                          O=VMware Inc., OU=NSX,
                      CN=vmnsxt-mgmt-p01.example.com
             Subject: C=US, ST=CA, L=Palo Alto,
                          O=VMware Inc., OU=NSX,
                      CN=vmnsxt-mgmt-p02.example.com
             Subject: C=US, ST=CA, L=Palo Alto,
                          O=VMware Inc., OU=NSX,
                      CN=vmnsxt-mgmt-p03.example.com
             Subject: C=US, ST=CA, L=Palo Alto,
                          O=VMware Inc., OU=NSX,
                      CN=vmnsxt-mgmt-p01.example.com

      該命令會剖析這些憑證,並列印出每個憑證的 subject。該命令也會包含憑證的一般名稱,在範例中,該名稱位於 "CN=" 後面。

      確認顯示的一般名稱都不相同,且它們與 NSX Manager 叢集的節點以及該叢集本身的預期完整網域名稱相符。

      在前面的範例中,一般名稱 vmnsxt-mgmt-p01.example.com 出現兩次。這表示範例的設定有誤。NSX Manager 叢集的完整網域名稱為 vmnsxt-mgmt.example.com,但憑證使用了錯誤的一般名稱 vmnsxt-mgmt-p01.example.com