Alibaba Cloud Linux 2系统的ECS实例无法正常删除Pod,如何处理?

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍了Alibaba Cloud Linux 2系统的ECS实例无法正常删除Pod的原因及解决方案。

问题描述

在满足以下条件的Alibaba Cloud Linux 2实例中,出现无法正常删除Pod的情况,进程处于D状态(不可中断的睡眠状态),并出现如下调用栈信息。

  • 镜像:Alibaba Cloud Linux 2.1903 LTS 64位。

  • 内核:4.19.91-24.1.al7.x86_64及之前的内核版本。您可以通过uname -r命令查看。

[<0>] __refrigerator+0x75/0x160
[<0>] do_exit+0x224/0xc60
[<0>] do_group_exit+0x3a/0xa0
[<0>] get_signal+0x156/0x8c0
[<0>] do_signal+0x36/0x610
[<0>] exit_to_usermode_loop+0x95/0x100
[<0>] do_syscall_64+0x178/0x1a0
[<0>] entry_SYSCALL_64_after_hwframe+0x44/0xa9

问题原因

在进程coredump发生前任务所在cgroup已经被挂起,进程coredump发生后所有线程进入了exiting状态,cgroup遍历会忽略此任务,错过cgroup的恢复,从而导致进程无法退出,无法正常删除Pod。

解决方案

警告
  • 升级内核可能会出现兼容性和稳定性问题,建议您查看Alibaba Cloud Linux 2镜像发布记录了解具体内核功能后谨慎进行操作。

  • 重启实例将导致您的实例暂停运行,这可能引发业务中断和数据丢失。因此,建议您在执行此操作之前备份关键数据,并选择在非业务高峰期进行。

  • 4.19.91-24.1.al7.x86_64及之前的版本。

    1. 执行以下命令,升级内核到最新版本。

      sudo yum update kernel
    2. 执行以下命令,重启实例使配置生效。

      sudo reboot
  • 4.19.91-19.1.al7.x86_64(包含)4.19.91-24.1.al7.x86_64(包含)版本,执行以下命令,安装内核热补丁。

sudo yum install -y kernel-hotfix-3915544-`uname -r | awk -F"-" '{print $NF}'`