在被克隆的机器上编辑 /etc/netplan/xx-installer-config.yaml
文件。
123456 | network: ethernets: ens33: dhcp4: true dhcp-identifier: mac # 加上这一行。 version: 2 |
---|
这样每次从这台机器进行的克隆都会有唯一的 ip 地址。
原因分析
- Ubuntu 网络组件使用
systemd-networkd
- Centos 网络组件使用
dhclient
这就是他们默认策略不同的原因, systemd-networkd
默认使用 /etc/machine-id
来识别,当虚拟机克隆的时候,他们都有一样的 /etc/machine-id
和 DHCP server
,因此返回的都是同一个 ip 了。
1234 | root@k8s-arm64-f-k8s-master1:~# cat /etc/machine-idd79a8bd69d39428eaea36e7ddebee560root@k8s-arm64-f-k8s-worker1:~# cat /etc/machine-idd79a8bd69d39428eaea36e7ddebee560 |
---|
实测确实 machine-id
克隆后一样,但是 production-id
是不一样,因此不影响 k8s 部署:
1234 | root@wz-k8s-arm64-f-k8s-master1:~# cat /sys/class/dmi/id/product_uuid7ad08708-3c74-456e-ad49-007f0b3027d1root@wz-k8s-arm64-f-k8s-worker1:~# cat /sys/class/dmi/id/product_uuid8ac730d3-3326-4c59-be99-e57ec56af976 |
---|
Centos
所使用的 dhclient
组件,采用默认策略就是使用链路层地址,虽然虚拟机进行了文件克隆,但是他们的链路层地址是由虚拟机进行分配的所以并不一样。
id 含义
本节内容由 chatgpt 生成,问题为: linux 中的 /etc/machine-id /sys/class/dmi/id/product_uuid 这两个值分别是什么意思,有什么意义,在什么项目中被用到过,还有没有其他类似的标记机器 id 的方法
在 Linux 系统中,/etc/machine-id
和 /sys/class/dmi/id/product_uuid
都是用于标识机器的唯一标识符,它们在不同的应用和场景中有不同的用途。
/etc/machine-id
含义与用途:
/etc/machine-id
文件包含一个唯一的机器 ID,这个 ID 是在系统安装时生成的,并且在整个系统的生命周期内保持不变。- 这个 ID 通常用于标识系统本身,并在分布式系统、日志记录、软件许可等需要唯一标识机器的场景中使用。
使用场景:
- 系统初始化过程
- 日志记录和监控系统
- 分布式系统中节点的唯一标识
- 软件许可和激活
生成方法:
- 这个文件通常由系统的初始化脚本在系统第一次启动时生成,可以通过
systemd
的systemd-machine-id-setup
工具生成。
/sys/class/dmi/id/product_uuid
含义与用途:
/sys/class/dmi/id/product_uuid
文件包含的是来自于 DMI(桌面管理接口)信息的产品 UUID,这是由硬件制造商在生产时写入到系统固件(BIOS/UEFI)中的唯一标识符。- 这个 UUID 通常用于硬件层面的唯一标识,因此在涉及硬件配置、资产管理和硬件认证的场景中非常有用。
- 也可以通过
dmidecode -s system-uuid
获取到
使用场景:
- 硬件资产管理
- 系统硬件配置
- 物理服务器和虚拟机的唯一标识
- 云计算中的实例识别
生成方法:
- 这个 UUID 由硬件制造商在制造硬件时写入,通常无法轻易更改。
其他类似的标记机器 ID 的方法
除了上述两个标识符,还有其他一些用于标识机器的方法:
- MAC 地址:
- 每个网络接口卡(NIC)都有一个唯一的 MAC 地址,可以用来标识设备。
- 用途:网络设备管理,网络层面的机器识别。
- 系统序列号(似乎不好用):
- 通过 DMI 信息获取,如
/sys/class/dmi/id/product_serial
。 - 用途:硬件资产管理,客户支持和保修服务。
- 通过 DMI 信息获取,如
- 硬盘序列号:
- 可以通过命令
lsblk
或hdparm
获取硬盘的唯一序列号。 - 用途:存储设备管理,备份和恢复系统。
- 可以通过命令
- BIOS 版本和固件信息:
- 通过 DMI 信息获取,如
/sys/class/dmi/id/bios_version
。 - 用途:系统更新和维护,硬件兼容性检查。
- 通过 DMI 信息获取,如
这些标识符在不同的应用场景中有不同的作用,可以根据具体需求选择合适的标识方法来实现系统和硬件的唯一标识和管理。
References
- 解决Ubuntu 20.04 虚拟机克隆出多台造成的IP地址冲突的问题
- chatgpt4