本文介紹Logtail組件升級的操作步驟。
升級說明
一般情況下,推薦您使用自動升級方式。如果您在logtail-ds的DaemonSet中或者在alibaba-log-controller的Deployment中修改過參數(例如環境變量),那么為了使您的修改不被重置,建議使用手動升級方式。
建議在升級前,對Logtail組件相關描述文件進行備份。具體操作,請參見附錄一:備份和回滾說明。
重要 升級期間(數秒內),因Logtail容器重啟,可能出現少量數據被重復或丟失采集的情況。
自動升級
重要 自動升級會重置您在logtail-ds和alibaba-log-controller中手動修改的配置。
阿里云Kubernetes集群
- 登錄容器服務管理控制臺。
- 在左側導航欄中,單擊集群。
- 在集群列表頁面中,單擊目標集群。
- 在左側導航欄中,選擇 。
- 在日志與監控頁簽中,找到logtail-ds,然后單擊升級。
- 在升級組件對話框中,單擊確定。
重要 如果無法升級到最新版本的Logtail,說明您的Kubernetes集群版本太舊。請先升級Kubernetes集群或者使用手動升級方式。執行升級操作后,您可以在容器服務管理控制臺上查看logtail-ds pod狀態。如果logtail-ds pod狀態都為running,表示升級成功。
自建Kubernetes集群
重新安裝Logtail組件,即可完成自動升級。具體操作,請參見自建Kubernetes集群。
手動升級
重要 手動升級不會根據最新版本的Logtail組件更新您的配置,部分特性優化可能不可用。
阿里云Kubernetes集群
手動升級包括升級logtail-ds和alibaba-log-controller。一般情況下,您只需要升級logtail-ds即可獲取新版本Logtail提供的采集能力。當您需要獲取新版Logtail CRD方式的采集能力時,需要升級alibaba-log-controller。以下步驟以logtail-ds為例。
- 登錄容器服務管理控制臺。
- 在左側導航欄中,單擊集群。
- 在集群列表頁面中,單擊目標集群。
- 在左側導航欄中,選擇
。說明 當您要升級alibaba-log-controller時,請選擇 kube-system命名空間下,找到alibaba-log-controller,完成升級。,然后在
- 選擇命名空間為kube-system,然后單擊logtail-ds對應的編輯。
- 檢查如下環境是否存在。
如果不存在ALIYUN_LOGTAIL_CONFIG、ALIYUN_LOGTAIL_USER_ID、ALIYUN_LOGTAIL_USER_DEFINED_ID這三個環境變量,可能是因為您的Logtail版本太舊,您可以提交 工單咨詢升級方法。
- 單擊鏡像Tag對應的選擇鏡像Tag。
- 在鏡像Tag對話框中,單擊最新版本,然后單擊確定。
- 在頁面右側,單擊更新。
執行升級操作后,您可以在容器服務管理控制臺上查看logtail-ds pod狀態。如果logtail-ds pod狀態都為running,表示升級成功。
自建Kubernetes集群
- 登錄您的Kubernetes集群。
- 升級logtail-ds。
執行升級操作后,您可以通過
kubectl describe -n kube-system ds logtail-ds | grep Status:
命令查看logtail-ds pod狀態。如果返回結果都為Running,表示升級成功。 - 升級alibaba-log-controller。
執行升級操作后,您可以通過
kubectl describe -n kube-system deployment alibaba-log-controller | grep Replicas:
命令查看alibaba-log-controller pod狀態。如果返回結果都為updated,表示升級成功。
附錄一:備份和回滾說明
備份
建議在升級前,對Logtail組件相關描述文件進行備份。示例如下所示。
kubectl get ds -n kube-system logtail-ds -o yaml > logtail-ds.yaml
kubectl get deployment -n kube-system alibaba-log-controller -o yaml > alibaba-log-controller.yaml
kubectl get crd aliyunlogconfigs.log.alibabacloud.com -o yaml > aliyunlogconfigs-crd.yaml
kubectl get cm -n kube-system alibaba-log-configuration -o yaml > alibaba-log-configuration.yaml
回滾
如果您要回滾到某個版本,可參考如下步驟。
說明 升級前備份的YAML文件中包含不少冗余信息,需要您手動刪除后,才能用于恢復Logtail配置。您可以使用kubectl-neat工具完成此操作。需要刪除的字段為metadata.creationTimestamp、metadata.generation、metadata.resourceVersion、metadata.uid和status。
- 刪除備份文件中的冗余信息。
cat logtail-ds.yaml | kubectl-neat > neat-logtail-ds.yaml cat alibaba-log-controller.yaml | kubectl-neat > neat-alibaba-log-controller.yaml cat aliyunlogconfigs-crd.yaml | kubectl-neat > neat-aliyunlogconfigs-crd.yaml cat alibaba-log-configuration.yaml | kubectl-neat > neat-alibaba-log-configuration.yaml
- 應用精減后的備份文件,恢復Logtail配置。
kubectl apply -f neat-logtail-ds.yaml kubectl apply -f neat-alibaba-log-controller.yaml kubectl apply -f neat-aliyunlogconfigs-crd.yaml kubectl apply -f neat-alibaba-log-configuration.yaml
附錄二:升級Logtail latest版本
由于Logtail latest版本對應的YAML文件太舊,當您使用該版本時,升級和體驗新功能都可能遇到問題,推薦您升級到最新版本。操作步驟如下:
- 存儲已有的AliyunLogConfig CRD。
請根據實際情況替換log-crds.yaml。
kubectl get AliyunLogConfig -A -o yaml > log-crds.yaml
- 卸載logtail-ds組件。
- 安裝logtail-ds組件。
- 部署您已存儲的AliyunLogConfig CRD。
請根據實際情況替換log-crds.yaml。
kubectl apply -f log-crds.yaml