应急预案:专有云敏捷PaaS V3.7环境中重拉redis-middleware Pod的方法

应急预案:专有云敏捷PaaS V3.7环境中重拉redis-middleware Pod的方法

更新时间:2020-09-04 13:48:33

1. 概述

本文主要介绍在专有云敏捷PaaS V3.7环境中,redis-middleware Pod异常无法修复时,如何重拉redis-middleware Pod。

1.1. 适用范围

  • 专有云敏捷PaaS V3.7,EDAS

1.2. 用户告知

  • 适用平台:x86、ARM
  • 授权级别:L1(一线驻场工程师)、L2(二线技术支持工程师)
  • 临时或固化方案:固化
  • 操作复杂度:中
  • 预估执行时长:20分钟
  • 业务影响:是
    说明:极端情况下,可能对EDAS发布单发布和CSB的服务发布造成影响。建议在做此变更时不要进行CSB服务发布和EDAS发布单操作,建议在业务低峰期操作。操作过程中,需要先删除redis-middleware备库,待被删除的备库重新拉起,正常运行后,再删除redis-middleware主库。
  • 风险等级:中

2. 问题描述

在专有云敏捷PaaS V3.7环境,此方案适用于redis-middleware Pod异常无法修复时使用,此方案操作对AHAS、EDAS无影响,在有CSB的场景,请联系阿里云技术支持进行确认后,慎重操作。

3. 解决方案

3.1. 环境检查

确认appset下Redis的状态

登录任意一台Master,使用root用户,执行以下命令,查看Redis状态是否为Ready。

kubectl get appset -n ark-system

系统显示类似如下。

确认statefulsets管控的redis-middleware状态

  1. 执行以下命令,查看redis-middleware的Ready项数量。
    kubectl get sts
    系统显示类似如下。
  2. 执行以下命令,查看statefulsets管控的redis-middleware的replicas定义的数量。
    kubectl get sts redis-middleware -o yaml
    系统显示类似如下。
  3. 执行以下命令,确认redis-middleware Pod状态。
    kubectl get pod --all-namespaces|grep redis
    系统显示类似如下。

3.2. 实施步骤

  1. 登录Master,执行以下命令,备份statefulsets管控的redis-middleware的YAML配置文件。
    cp redis-middleware.yaml [$File]
    说明:[$File]为备份文件的路径。
  2. 依次执行以下命令,删除redis-middleware备库。
    说明:需要删除redis-middleware时应删除备库,redis-middleware-1与redis-middleware-2为备库,redis-middleware-0为主库。
    kubectl delete pod -n default redis-middleware-1
    kubectl delete pod -n default redis-middleware-2
  3. 待被删除的备库重新拉起,正常运行后,再执行以下命令,删除redis-middleware主库。
    kubectl delete pod -n default redis-middleware-0

3.3. 结果验证

验证Pod是否被重新拉起

  1. 删除Pod后,等待两三分钟,执行以下命令,确认被删除的Pod重新被拉起,查看拉起的Pod数量是否与statefulsets管控的redis-middleware的YAML配置文件中replicas定义的数量一致,并为Running状态且容器已就绪。
    kubectl get pod --all-namespaces|grep redis
    系统显示类似如下。
  2. 执行以下命令,查看statefulsets管控的redis-middleware是否准备就绪,Ready项的数量是否与statefulsets管控的redis-middleware的YAML配置文件中replicas定义的数量一致。
    kubectl get sts
    系统显示类似如下。

查看appset下的redis-0的状态是否为Ready

执行以下命令,确认appset下的redis-0的状态为Ready。

kubectl get appset -n ark-system

系统显示类似如下。

4. 回滚方案

若删除Pod后,导致statefulsets下无redis-middleware。

  1. 登录Master,进入备份redis-middleware的YAML文件所在的目录,执行以下命令。
    kubectl apply -f ./redis-middleware.yaml
    系统显示类似如下。
  2. 执行以下命令,查看statefulsets管控的redis-middleware是否准备就绪,Ready项的数量是否与statefulsets管控的redis-middleware的YAML配置文件中replicas定义的数量一致。
    kubectl get sts