針對 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 引擎的指示。
收集節點和叢集記錄檔
您可以在擷取節點和叢集記錄檔 (英文) 中,找到有關收集節點和叢集記錄檔的指示。
必要條件
本指南也假設您已使用 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>
- 如果您是雲端操作員,您可以:
- 使用 Azure Stack Hub 管理入口網站中的 [說明 + 支援] 刀鋒視窗來上傳記錄。 如需相關指示,請參閱使用管理員入口網站立即傳送記錄。
- 透過具有特殊權限的端點 (PEP) 使用 Get-AzureStackLog PowerShell Cmdlet。如需相關指示,請參閱使用 PowerShell 立即傳送記錄。
開啟 GitHub 問題
如果您無法解決部署錯誤,則可以開啟 GitHub 問題。
在 AKS 引擎存放庫中開啟 GitHub 問題。
使用下列格式新增標題:CSE 錯誤:
exit code <INSERT_YOUR_EXIT_CODE>
。在問題中包含下列資訊:
用來部署叢集的叢集設定檔
apimodel.json
。 在將設定檔貼到 GitHub 之前,請先移除所有秘密和金鑰。下列 kubectl 命令 的輸出。
來自狀況不良節點的
/var/log/azure/cluster-provision.log
內容。