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

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

问题描述

在符合如下条件的Alibaba Cloud Linux 2系统的ECS实例中,出现无法正常删除Pod的情况,进程处于D状态(不可中断的睡眠状态)。

  • 镜像:Alibaba Cloud Linux 2.1903 LTS 64位

  • 内核:4.19.91-24.1.al7.x86_64及之前的内核版本

系统进程出现如下调用栈信息:

[<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。

解决方案

当遇到该问题时,您可以参考以下方案解决上述问题。

  1. 登录ECS实例。

    具体操作,请参见连接方式概述

  2. 执行以下命令,确认系统内核版本适用此方案。

    uname -r

    系统显示类似如下。

    4.19.91-18.al7.x86_64
  3. 更新内核版本。

    1. 更新操作系统版本至最新的内核版本。

      yum update kernel
    2. 重启服务器生效。

      reboot
    3. 更新内核热补丁。

      若最新内核版本的操作系统同样存在该问题,请执行以下命令,更新内核热补丁(内核热补丁名称为:cgroup:freeze: fix coredump & unfreeze conflict)。

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