ACK 集群中 Ubuntu 节点初始化过程中写入的网络配置与 systemd 软件包升级过程存在兼容性风险,导致 systemd 软件包升级过程中 Kubernetes 容器网络依赖的网卡配置被覆盖,继而造成 Pod 无法访问外部网络。
影响说明
阿里云已于 2025 年 06 月 11 日修复了该问题。新扩容的 Ubuntu 节点不受影响,但存量 Ubuntu 节点在部分场景下仍会触发此问题。
部分早期(2024年12月15日前)添加至 ACK 集群或由 ACK 集群扩容的 Ubuntu 节点默认开启了 apt 软件包自动升级功能。这些节点自动升级 systemd 软件包时可能触发此问题。
登录 ACK 集群的 Ubuntu 节点后,通过
apt
命令手动执行 systemd 软件包升级时可能触发此问题。
您可执行以下脚本判断 Ubuntu 节点是否受到影响。
执行上述脚本后,如果返回/etc/systemd/network/99-default.link is correct
和auto upgrade is disabled
,则表明 Ubuntu 节点不受影响。
解决方案
对 Ubuntu 节点池进行扩缩容替换
新添加到 ACK 集群或从 ACK 集群扩容的 Ubuntu 节点将无上述异常风险。您可以将 Ubuntu 节点移除再通过添加已有节点的方式重新添加到集群中,以规避上述异常风险。
逐个 Ubuntu 节点修复
您也可通过以下方式对每个 Ubuntu 节点进行检测和修复。
控制台
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
单击受影响的节点池名称,在节点管理页签,勾选待修复的 Ubuntu 节点, 然后单击批量运维,选择执行 Shell 命令,单击确定。
在基本信息页面,保持默认配置,单击下一步:设置参数,在设置参数页面,填入以下 Shell 脚本,然后按照页面提示完成任务的提交。
#!/bin/bash set -e set -x cat > /etc/systemd/network/99-default.link<< EOF [Match] OriginalName=* [Link] NamePolicy=keep kernel database onboard slot path AlternativeNamesPolicy=database onboard slot path MACAddressPolicy=none EOF systemctl disable --now apt-daily.service systemctl disable --now apt-daily.timer systemctl disable --now apt-daily-upgrade.service systemctl disable --now apt-daily-upgrade.timer
提交任务后,在系统运维管理 OOS控制台的任务执行管理页面,查看任务执行情况。
命令行
您可以通过 SSH 等方式连接受影响的 Ubuntu 节点,执行以下修复脚本。
#!/bin/bash
set -e
set -x
cat > /etc/systemd/network/99-default.link<< EOF
[Match]
OriginalName=*
[Link]
NamePolicy=keep kernel database onboard slot path
AlternativeNamesPolicy=database onboard slot path
MACAddressPolicy=none
EOF
systemctl disable --now apt-daily.service
systemctl disable --now apt-daily.timer
systemctl disable --now apt-daily-upgrade.service
systemctl disable --now apt-daily-upgrade.timer
上述修复步骤完成后,新增调度到节点上的 Pod 将不受该问题影响。如果您发现节点上已有 Pod 存在网络联通性问题,您可手动重新部署该 Pod 进行修复。