針對 Azure Stack Hub 上的 AKS 引擎進行疑難排解

在 Azure Stack Hub 上部署或使用 AKS 引擎時,您可能會發現問題。 本文將探討針對 AKS 引擎部署進行疑難排解的步驟。 您可以收集 AKS 引擎的相關資訊、收集 Kubernetes 記錄,並檢閱自訂指令碼延伸模組錯誤碼。 您也可以開啟 AKS 引擎的 GitHub 問題。

注意

針對 AKSe 0.75.3 版和更新版本,下列命令會以 aks-engine-azurestack 開頭, aks-engine 而不是 aks-engine

為 AKS 引擎的安裝進行疑難排解

如果先前的安裝步驟失敗,您可以使用 GoFish 套件管理員來安裝 AKS 引擎。 GoFish 形容自己是跨平台的 Homebrew。

您可以在這裡找到 使用 GoFish 安裝 AKS 引擎的指示

收集節點和叢集記錄檔

您可以在擷取節點和叢集記錄檔 (英文) 中,找到有關收集節點和叢集記錄檔的指示。

必要條件

本指南假設您已下載 Azure CLIAKS 引擎

本指南也假設您已使用 AKS 引擎部署叢集。 如需詳細資訊,請參閱 在 Azure Stack Hub 上使用 AKS 引擎部署 Kubernetes 叢集

擷取記錄

您可以使用 aks-engine get-logs 命令,針對叢集的問題進行疑難排解。 此命令會產生、收集和下載一組檔案到您的工作站。 這些檔案包含節點設定、叢集狀態和設定,以及安裝記錄檔。

概括而言:此命令的運作方式是建立每個節點的 SSH 工作階段、執行記錄收集指令碼來收集和壓縮相關檔案,然後將 .ZIP 檔案下載至您的本機電腦。

SSH 驗證

您將需要有效的 SSH 私密金鑰,才能建立叢集 Linux 節點的 SSH 工作階段。 Windows 認證會儲存在 API 模型中,並從該處載入。 將 windowsprofile.sshEnabled 設定為 true,以在您的 Windows 節點中啟用 SSH。

將記錄上傳至儲存體帳戶容器

成功擷取叢集記錄檔之後,如果設定了選擇性參數 --upload-sas-url,AKS 引擎就可以將其儲存在 Azure 儲存體帳戶容器上。 AKS 引擎預期容器名稱是所提供 SAS URL 的一部分。 預期的格式為 https://{blob-service-uri}/{container-name}?{sas-token}

注意

目前不支援自訂雲端上使用 AD FS 識別提供者的儲存體帳戶。

節點無法加入叢集

根據預設,aks-engine get-logs 會從已成功加入叢集的節點收集記錄。 若要從無法加入叢集的 VM 中收集記錄,請設定旗標 --vm-names

--vm-name k8s-pool-01,k8s-pool-02

aks-engine get-logs 的使用方式

假設您已部署叢集,且原先用來部署該叢集的 API 模型儲存在 _output/<dnsPrefix>/apimodel.json 中,則您可以執行如下所示的命令來收集記錄:

aks-engine get-logs \
    --location <location> \
    --api-model _output/<dnsPrefix>/apimodel.json \
    --ssh-host <dnsPrefix>.<location>.cloudapp.azure.com \
    --linux-ssh-private-key ~/.ssh/id_rsa

參數

參數 必要 說明
--location Yes 叢集資源群組的 Azure 位置。
--api-model Yes 為叢集產生的 API 模型路徑。
--ssh-host Yes 可連絡叢集中所有節點的 SSH 接聽程式 FQDN 或 IP 位址。
--linux-ssh-private-key Yes SSH 私密金鑰的路徑,可用來在叢集 Linux 節點上建立遠端工作階段。
--output-directory No 衍生自 --api-model 的輸出目錄 (若遺漏)。
--control-plane-only No 只會從控制平面節點收集記錄。
--vm-names No 只會從指定的 VM (逗點分隔名稱) 收集記錄。
--upload-sas-url No 用來上傳所收集記錄的目的地 Azure 儲存體帳戶 SAS URL。

檢閱自訂的指令碼擴充功能錯誤碼

AKS 引擎會為每部 Ubuntu Server 產生指令碼,以作為自訂指令碼延伸模組 (CSE) 的資源來執行部署工作。 如果指令碼擲回錯誤,則會在 /var/log/azure/cluster-provision.log 中記錄錯誤。 這些錯誤會顯示在入口網站中。 錯誤碼可能有助於了解問題案例。 如需 CSE 結束代碼的詳細資訊,請參閱 cse_helpers.sh (英文)。

提供 Kubernetes 記錄給 Microsoft 支援工程師

如果在收集和檢查記錄之後仍無法解決問題,您可以啟動建立支援票證的流程,並提供您所收集到的記錄。

您的操作員可能會將您所產生的記錄,與 Microsoft 支援服務可能需要的其他系統記錄檔結合。 操作員可將其提供給 Microsoft 使用。

您可以透過數種方式提供 Kubernetes 記錄:

  • 您可以連絡 Azure Stack Hub 操作員。 您的操作員會使用儲存在 .ZIP 檔案中記錄的資訊來建立支援案例。
  • 如果您有可上傳 Kubernetes 記錄之儲存體帳戶的 SAS URL,您可以包含下列命令並加上 SAS URL 旗標,以將記錄儲存至儲存體帳戶:
    aks-engine get-logs -upload-sas-url <SAS-URL>
    
    如需相關指示,請參閱將記錄上傳至儲存體帳戶容器
  • 如果您是雲端操作員,您可以:

開啟 GitHub 問題

如果您無法解決部署錯誤,則可以開啟 GitHub 問題。

  1. 在 AKS 引擎存放庫中開啟 GitHub 問題

  2. 使用下列格式新增標題:CSE 錯誤:exit code <INSERT_YOUR_EXIT_CODE>

  3. 在問題中包含下列資訊:

    • 用來部署叢集的叢集設定檔 apimodel.json。 在將設定檔貼到 GitHub 之前,請先移除所有秘密和金鑰。

    • 下列 kubectl 命令 的輸出。

    • 來自狀況不良節點的 /var/log/azure/cluster-provision.log 內容。

後續步驟