啟用 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 叢集的憑證設定有問題。
解決方案
- 若要解決此問題,請確定您已為 NSX Manager 叢集中的每個節點以及該叢集本身正確設定憑證。具體而言,請驗證:
- 每個憑證都有一個一般名稱,並與用到它的完整網域名稱相符。
- 不會有兩個憑證使用相同的一般名稱。
- 若要驗證憑證設定是否正確,建議採用以下兩種方法。
- 使用 Web 瀏覽器:
在 Web 瀏覽器中,分別使用 NSX Manager 節點的完整網域名稱來造訪各節點,此外亦造訪叢集網域名稱。在每個網域中,使用瀏覽器工具檢視憑證資訊,尤其是憑證的一般名稱。確認一般名稱與瀏覽器 URL 列中所造訪的網域名稱完全相符。
- 使用命令列工具:
在 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
。
- 使用 Web 瀏覽器: