华为云CCE集群纳管GPU裸金属服务器由于CloudInit导致纳管失败的解决方案
1. 问题描述
笔者创建出3台GPU 裸金属服务器, 使用A节点制作镜像,用于在CCE纳管裸金属服务器时,使用该镜像; 但是纳管后发现服务器A纳管失败、剩下两台服务器纳管成功。
2. 问题定位
在CCE纳管过程中,需要通过cloudinit userdata机制拉取cce-agent, 但是在服务器上查看没有拉cce-agent的动作,理论上该动作是cloudinit中的脚本在创建时自动执行的,那可能是安装脚本没有注入userdata或者注入了但未执行。
经查看是userdata未执行, 那问题原因应该是服务器A制作镜像时没有清理残留目录导致,详细描述如下:
镜像里面/var/lib/cloud/instances残留了制作镜像机器(后面称模板机)的实例ID信息,如果制作镜像不清理/var/lib/cloud/* 就会导致用该镜像再重装“模板机”时cloud-init根据残留目录(含实例ID)判断已经执行过一次,进而不会再执行user-data里面的脚本。
而使用该镜像的服务器B和C,由于实例ID信息和镜像中残留的服务器A实例ID不同, 就会执行user-data, 所以CCE能纳管成功。
3. 解决方案
核心的修复方法参考 https://support.huaweicloud.com/bpicg-bms/zh-cn_topic_0000001409069597.html
制作镜像前,清理/var/lib/cloud/目录下的所有信息,然后再制作镜像。CCE重新纳管服务器A时, 使用最新制作的镜像即可。
最后附上通过BMS制作私有镜像时,需要清理的文件:
执行下面命令,清理用户登录记录。
echo > /var/log/wtmp
echo > /var/log/btmp
执行下面命令,清理相应目录下的临时文件。
rm -rf /var/log/cloud-init*
rm -rf /var/lib/cloud/*
rm -rf /var/log/network-config.log
执行下面命令,清理残留配置信息。
SUSE操作系统:查看“/etc/sysconfig/network/”文件夹下有哪些以“ifcfg”开头的文件,删除除了“ifcfg-lo及ifcfg.template”以外的以“ifcfg”开头的文件。
查看文件命令:ll /etc/sysconfig/network/
删除文件命令:rm -rf /etc/sysconfig/network/ifcfgxxx
RedHat/CentOS/Oracle/Euler操作系统:查看“/etc/sysconfig/network-scripts/”文件夹下有哪些以“ifcfg”开头的文件,删除除了“ifcfg-lo”以外的以“ifcfg”开头的文件。
查看文件命令:ll /etc/sysconfig/network-scripts/
删除文件命令:rm -rf /etc/sysconfig/network-scripts/ifcfgxxx
Ubuntu操作系统:rm -rf /etc/network/interfaces.d/50-cloud-init.cfg
执行下面命令清除历史操作记录。
history -w;echo > /root/.bash_history;history -c;history -c;history -c;
- 点赞
- 收藏
- 关注作者
评论(0)