本文介紹Logtail組件升級的操作步驟。

升級說明

一般情況下,推薦您使用自動升級方式。如果您在logtail-ds的DaemonSet中或者在alibaba-log-controller的Deployment中修改過參數(例如環境變量),那么為了使您的修改不被重置,建議使用手動升級方式。

建議在升級前,對Logtail組件相關描述文件進行備份。具體操作,請參見附錄一:備份和回滾說明。

重要 升級期間(數秒內),因Logtail容器重啟,可能出現少量數據被重復或丟失采集的情況。

自動升級

重要 自動升級會重置您在logtail-ds和alibaba-log-controller中手動修改的配置。

阿里云Kubernetes集群

  1. 登錄容器服務管理控制臺
  2. 在左側導航欄中,單擊集群。
  3. 集群列表頁面中,單擊目標集群。
  4. 在左側導航欄中,選擇運維管理 > 組件管理。
  5. 日志與監控頁簽中,找到logtail-ds,然后單擊升級
  6. 升級組件對話框中,單擊確定。
    重要 如果無法升級到最新版本的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為例。

  1. 登錄容器服務管理控制臺。
  2. 在左側導航欄中,單擊集群
  3. 集群列表頁面中,單擊目標集群。
  4. 在左側導航欄中,選擇工作負載 > 守護進程集
    說明 當您要升級alibaba-log-controller時,請選擇 工作負載 > 無狀態,然后在 kube-system命名空間下,找到alibaba-log-controller,完成升級。
  5. 選擇命名空間kube-system,然后單擊logtail-ds對應的編輯
  6. 檢查如下環境是否存在。
    如果不存在ALIYUN_LOGTAIL_CONFIG、ALIYUN_LOGTAIL_USER_ID、ALIYUN_LOGTAIL_USER_DEFINED_ID這三個環境變量,可能是因為您的Logtail版本太舊,您可以提交 工單咨詢升級方法。
  7. 單擊鏡像Tag對應的選擇鏡像Tag
  8. 鏡像Tag對話框中,單擊最新版本,然后單擊確定。
  9. 在頁面右側,單擊更新
    執行升級操作后,您可以在容器服務管理控制臺上查看logtail-ds pod狀態。如果logtail-ds pod狀態都為running,表示升級成功。

自建Kubernetes集群

  1. 登錄您的Kubernetes集群。
  2. 升級logtail-ds。
    1. 執行如下命令,進入配置模式。
      kubectl edit ds -n kube-system logtail-ds
    2. 修改image字段。
      您可以通過 logtail-ds鏡像倉庫查看最新鏡像版本。
    執行升級操作后,您可以通過 kubectl describe -n kube-system ds logtail-ds | grep Status:命令查看logtail-ds pod狀態。如果返回結果都為Running,表示升級成功。
  3. 升級alibaba-log-controller。
    1. 執行如下命令,進入配置模式。
      kubectl edit deployment -n kube-system alibaba-log-controller
    2. 修改image字段。
      您可以通過 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。
  1. 刪除備份文件中的冗余信息。
    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
  2. 應用精減后的備份文件,恢復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文件太舊,當您使用該版本時,升級和體驗新功能都可能遇到問題,推薦您升級到最新版本。操作步驟如下:

  1. 存儲已有的AliyunLogConfig CRD。
    請根據實際情況替換log-crds.yaml。
    kubectl get AliyunLogConfig -A -o yaml > log-crds.yaml
  2. 卸載logtail-ds組件。
    在阿里云容器服務管理控制臺的 日志與監控頁簽中,找到 logtail-ds,然后單擊 卸載。具體操作入口,請參見 自動升級
  3. 安裝logtail-ds組件。
    在阿里云容器服務管理控制臺的 日志與監控頁簽中,找到 logtail-ds,然后單擊 安裝。具體操作入口,請參見 自動升級
  4. 部署您已存儲的AliyunLogConfig CRD。
    請根據實際情況替換log-crds.yaml。
    kubectl apply -f  log-crds.yaml