对于跨云迁移后cloud-init超时,禁用cloud-init
myluzh 发布于 阅读:12
关闭前至少确认:
ip addr
ip route
systemctl is-enabled NetworkManager systemd-networkd 2>/dev/null
grep -R "dhcp" /etc/netplan /etc/NetworkManager/system-connections 2>/dev/null
务必保证网卡不是绑定阿里云旧 MAC 地址、旧接口名或固定 IP,否则关闭 cloud-init 后可能启动很快,但网络起不来。
如果要确认十几分钟是否真是它造成的,可在卡顿后的系统中查看:
systemd-analyze blame | head -30
journalctl -b \
-u cloud-init-local.service \
-u cloud-init.service \
-u cloud-config.service \
-u cloud-final.service \
--no-pager
如果日志里持续出现 datasource、AliYun、metadata、169.254.169.254、timeout 或
retry,基本就能确认是跨云后元数据探测超时。cloud-init 的 Local 和 Network 阶段本来就可能阻塞启动流程。cloud-init
启动阶段说明 (https://cloudinit.readthedocs.io/en/21.2/topics/boot.html)
如果目标云不依赖 cloud-init,可以直接彻底禁用。使用“禁用文件 + disable + mask”:
mkdir -p /etc/cloud
touch /etc/cloud/cloud-init.disabled
systemctl disable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
systemctl mask cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
systemctl daemon-reload
ls -l /etc/cloud/cloud-init.disabled
systemctl is-enabled cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
# 服务显示 masked 后,重启
sync && reboot