联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
9.7.3 Master 节点故障应急处理
更新时间:9/27/2023, 9:33:48 AM
适用场景

ArgoDB 集群 Master 节点发生如下故障且无法快速修复故障节点时的情况:

  • 主机电源故障

  • 主机网卡故障导致网络彻底中断

  • 主机操作系统故障

  • raid 卡或磁盘故障导致系统异常

故障确认

确认上述故障已发生,如:

  • 物理机通过 BMC,虚拟机 Iaas 平台确认。

  • 在正常的 master 节点 ping 故障节点不通。

  • 在正常的 master 节点获取故障 node 状态为 node-ready。

    kubectl get nodes
    复制
驱逐故障节点上的服务
  1. 获取故障节点上的所有 Pod:

    kubectl get po -owide -A |grep <node_hostname>
    复制
  2. 将仍为 Running 状态的 Pod 驱逐:

    kubectl -n <node_hostname> delete po <pod_name> --grace-period=0 --force
    复制
    • <node_hostname>:为故障节点的 hostname。

    • <pod_name>:处于 Running 状态的 Pod 名称。

恢复异常的系统服务

服务之间存在依赖关系,在恢复某个服务之前请确保所依赖的服务可以正常访问。

ETCD

  1. 检查 etcd 状态,具体请参考 etcd 状态检查

  2. 如果出现单台 Master 节点宕机,此时 etcd 能够正常提供服务,只需临时将故障节点 etcd 移出集群,具体请参考 删除 etcd 节点

  3. 如果整个 etcd 集群宕机,此时 etcd 已经无法正常提供服务,需要适用备份数据镜像恢复,具体请参考《Transwarp ArgoDB 运维指南》的备份与恢复章节,恢复完成之后需再次进行 etcd 状态检查。

Registry 镜像仓库

Tos registry 默认部署在第一台 Master 节点上,所以本节只针对 registry 所在 master 节点宕机分析。

ArgoDB 5.2 版本中,Tos registry 是通过 Deployment 方式部署的,副本为 1,在 registry 数据目录存在的情况下,可以修改 registry yaml 文件下的 nodeSelector 调度到待迁移节点。

  1. 确保待迁移节点上 gencerts 和 registry 的 image 正常存在:

    docker images | grep registry   ## 若是不存在,需要从其他节点拷贝过来,参考 docker save,docker load 命令
    
    docker images | grep gencerts   ## 若是不存在,需要从其他节点拷贝过来,参考 docker save,docker load 命令
    复制
  2. 确保原 registry 数据在该节点存在:

    ls /var/lib/registry_data/      ## 此目录下放置原 registry 的数据的备份数据,若是不存在,部署完成后 registry 下的镜像为空
    复制
  3. 修改 nodeSelector 指向待迁移节点 hostname:

    kubectl edit deploy registry -n kube-system
    复制
  4. 查看 pod 状态,确保 registry 正常 Running:

    kubectl get po -n kube-system | grep registry
    复制
  5. 修改 docker 配置,集群所有节点都需要修改:

    1. 打开配置文件 docker-registry:

      vi /etc/sysconfig/docker-registry
      复制
    2. 然后修改 docker-registry 文件如下:

      REGISTRY_OPTS="--registry-mirror https://<hostname>:5000   --insecure-registry https://<hostname>:5000 "
      复制
    3. 重启 docker

      systemctl daemon-reload  && systemctl restart docker
      复制
  6. 测试

    docker pull transwarp/coredns:tos-2.1.2     ## docker pull 原 registry 存在 image
    复制