本文介绍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