管理容器深入解析代理程式
容器深入解析會使用適用於 Linux 的 Log Analytics 代理程式容器化版本。 初始部署之後,您可能需要在其生命週期期間執行一些例行性或選擇性工作。 本文將解釋如何手動升級代理程式,並停用從特定容器收集環境變數。
注意
如果您已部署 AKS 叢集,並使用 Azure CLI 或 Resource Manager 範本啟用監視,則無法使用 kubectl
升級、刪除、重新部署或部署代理程式。 範本必須部署在叢集所在的資源群組。
升級容器深入解析代理程式
容器深入解析會使用適用於 Linux 的 Log Analytics 代理程式容器化版本。 發行新版代理程式之後,該代理程式會在您裝載於 Azure Kubernetes Service (AKS) 和已啟用 Azure Arc 的 Kubernetes 中的受控 Kubernetes 叢集上自動升級。
如果代理程式在裝載於 AKS 的叢集上升級失敗,本文也說明手動升級代理程式的程序。 若要遵循所發行的版本,請參閱代理程式發行公告。
升級 AKS 叢集上的代理程式
在 AKS 叢集上升級代理程式的流程包含兩個步驟。 第一個步驟是使用 Azure CLI 停用容器深入解析所進行的監視。 請遵循在 Kubernetes 叢集上停用容器深入解析一文中所述的步驟。 透過使用 Azure CLI 從叢集中的節點移除代理程式,將不會影響解決方案和儲存在工作區中的對應資料。
注意
在執行此維護活動時,叢集中的節點不會轉送收集的資料。 在您移除代理程式並安裝新版本的空窗期間,效能檢視不會顯示資料。
第二個步驟是安裝新版本的代理程式。 請遵循使用 Azure CLI 啟用監視中所述的步驟來完成此流程。
啟用監視之後,可能需要約 15 分鐘的時間才能檢視叢集的更新健康情況計量。 驗證代理程式已成功升級的方法有兩種:
- 執行
kubectl get pod <ama-logs-agent-pod-name> -n kube-system -o=jsonpath='{.spec.containers[0].image}'
命令。 在傳回的狀態中,記下輸出 [容器] 區段中 Azure 監視器代理程式的 [映像] 底下的值。 - 在 [節點] 索引標籤上,選取叢集節點。 在右側的 [屬性] 窗格上,記下 [代理程式映射標籤] 底下的值。
顯示的代理程式版本應該符合 [版本歷程記錄] 頁面上所列的最新版本。
升級混合式 Kubernetes 叢集上的代理程式
請執行以下步驟,以在下列位置執行的 Kubernetes 叢集上升級代理程式:
- 使用 AKS 引擎裝載於 Azure 的自我管理 Kubernetes 叢集。
- 使用 AKS 引擎裝載於 Azure Stack 或內部部署環境的自我管理 Kubernetes 叢集。
如果 Log Analytics 工作區位於商用 Azure,請執行下列命令:
$ helm upgrade --set omsagent.secret.wsid=<your_workspace_id>,omsagent.secret.key=<your_workspace_key>,omsagent.env.clusterName=<my_prod_cluster> incubator/azuremonitor-containers
如果 Log Analytics 工作區位於由 21Vianet 營運的 Microsoft Azure,請執行下列命令:
$ helm upgrade --set omsagent.domain=opinsights.azure.cn,omsagent.secret.wsid=<your_workspace_id>,omsagent.secret.key=<your_workspace_key>,omsagent.env.clusterName=<your_cluster_name> incubator/azuremonitor-containers
如果 Log Analytics 工作區位於 Azure 美國政府,請執行下列命令:
$ helm upgrade --set omsagent.domain=opinsights.azure.us,omsagent.secret.wsid=<your_workspace_id>,omsagent.secret.key=<your_workspace_key>,omsagent.env.clusterName=<your_cluster_name> incubator/azuremonitor-containers
在容器上停用收集環境變數
容器深入解析會從在 Pod 中執行的容器收集環境變數,並在 [容器] 檢視內所選取容器的屬性窗格中顯示。 您可以藉由在 Kubernetes 叢集部署期間,或在設定環境變數 AZMON_COLLECT_ENV
之後,停用對特定容器進行收集。 此功能可從代理程式版本 ciprod11292018 和更新版本中取得。
若要在新的或現有容器上停用收集環境變數,請在您的 Kubernetes 部署 YAML 設定檔中,將變數 AZMON_COLLECT_ENV
的值設定為 False
。
- name: AZMON_COLLECT_ENV
value: "False"
執行下列命令,將變更套用至 Azure Red Hat OpenShift 以外的 Kubernetes 叢集:kubectl apply -f <path to yaml file>
。 若要編輯 ConfigMap 並將此變更套用到 Azure Red Hat OpenShift 叢集,請執行以下命令:
oc edit configmaps container-azm-ms-agentconfig -n openshift-azure-logging
此命令會開啟您的預設文字編輯器。 設定變數後,請在編輯器中儲存檔案。
若要確認設定變更已生效,在容器深入解析中選取 [容器] 檢視中的容器。 在 [屬性] 面板中,展開 [環境變數]。 區段應該只會顯示稍早建立的變數,也就是 AZMON_COLLECT_ENV=FALSE
。 對於所有其他容器,[環境變數] 區段應該會列出探索到的所有環境變數。
若要重新探索環境變數,請套用您稍早使用的相同流程,並將該值從 False
變更為 True
。 接著重新執行 kubectl
命令以更新容器。
- name: AZMON_COLLECT_ENV
value: "True"
容器深入解析代理程式的語意版本更新
容器深入解析已將映射版本和命名慣例轉移至 [semver 格式] (https://semver.org/)。 SemVer 可協助開發人員追蹤在開發階段對軟體執行的每項變更,並確保軟體版本設定一致且有意義。 舊版本的格式為 ciprod<timestamp>-<commitId> 和 win-ciprod<timestamp>-<commitId>,我們的第一個使用 Semver 格式的映射版本是 3.1.4 (Linux 版) 以及 win-3.1.4 (Windows 版)。
Semver 是以 MAJOR.MINOR.PATCH 格式定義的通用軟體版本設定結構描述,遵循下列條件約束:
- 當您進行不相容的 API 變更時,請遞增 MAJOR (主要) 版本。
- 當您以回溯相容的方式新增功能時,請遞增 MINOR (次要) 版本。
- 當您進行回溯相容錯誤修正時,請遞增 PATCH (修補程式) 版本。
隨著 Kubernetes 和 OSS 生態系統興起,容器深入解析會移轉為使用 semver 映像,遵循 K8s 建議的標準,即在推出每個次要版本時,都必須公開記錄每個 Kubernetes 新版本的所有重大變更。
修復重複的代理程式
如果您在 2022 年 10 月之前使用自訂方法手動啟用 Container Insights,則可能導致同時執行多個版本的代理程式。 請遵循下列步驟來清除此重複項目。
收集任何自訂設定的詳細資料,例如 omsagent 容器上的記憶體和 CPU 限制。
檢閱 ama-logs 的預設資源限制,並判斷是否符合您的需求。 如果沒有預設值,您可能需要建立支援主題以協助調查和切換記憶體/CPU 限制。 這有助於解決某些客戶先前所遇到導致 OOMKilled 例外狀況的規模限制問題。
OS 控制器名稱 預設限制 Linux ds-cpu-limit-linux 500m Linux ds-memory-limit-linux 750Mi Linux rs-cpu-limit 1 Linux rs-memory-limit 1.5Gi Windows ds-cpu-limit-windows 500m Windows ds-memory-limit-windows 1Gi 清除先前上線的資源:
如果您先前使用 Helm Chart 上線:
使用下列命令列出命名空間的所有版本:
helm list --all-namespaces
使用下列命令清除為容器深入解析安裝的 Chart:
helm uninstall <releaseName> --namespace <Namespace>
如果您先前使用 yaml 部署上線:
使用下列命令下載先前的自訂部署 yaml 檔案:
curl -LO raw.githubusercontent.com/microsoft/Docker-Provider/ci_dev/kubernetes/omsagent.yaml
使用下列命令清除舊的 omsagent Chart:
kubectl delete -f omsagent.yaml
使用停用 Kubernetes 叢集上的容器深入解析中的指引,停用容器深入解析以清除所有相關資源
使用在 Kubernetes 叢集上啟用容器深入解析中的指引重新上線至容器深入解析
下一步
如果您在升級代理程式時遇到問題,請檢閱疑難排解指南以取得支援。