在被克隆的机器上编辑 /etc/netplan/xx-installer-config.yaml

文件。

network:
  ethernets:
    ens33:
      dhcp4: true
      dhcp-identifier: mac # 加上这一行。
  version: 2

这样每次从这台机器进行的克隆都会有唯一的 ip 地址。

原因分析

  • Ubuntu 网络组件使用 systemd-networkd
  • Centos 网络组件使用 dhclient

这就是他们默认策略不同的原因, systemd-networkd 默认使用 /etc/machine-id 来识别,当虚拟机克隆的时候,他们都有一样的 /etc/machine-idDHCP server,因此返回的都是同一个 ip 了。

root@k8s-arm64-f-k8s-master1:~# cat /etc/machine-id
d79a8bd69d39428eaea36e7ddebee560
root@k8s-arm64-f-k8s-worker1:~# cat /etc/machine-id
d79a8bd69d39428eaea36e7ddebee560

实测确实 machine-id 克隆后一样,但是 production-id 是不一样,因此不影响 k8s 部署:

root@wz-k8s-arm64-f-k8s-master1:~# cat /sys/class/dmi/id/product_uuid
7ad08708-3c74-456e-ad49-007f0b3027d1
root@wz-k8s-arm64-f-k8s-worker1:~# cat /sys/class/dmi/id/product_uuid
8ac730d3-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 通常用于标识系统本身,并在分布式系统、日志记录、软件许可等需要唯一标识机器的场景中使用。

使用场景

  • 系统初始化过程
  • 日志记录和监控系统
  • 分布式系统中节点的唯一标识
  • 软件许可和激活

生成方法

  • 这个文件通常由系统的初始化脚本在系统第一次启动时生成,可以通过 systemdsystemd-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 的方法

除了上述两个标识符,还有其他一些用于标识机器的方法:

  1. MAC 地址

    • 每个网络接口卡(NIC)都有一个唯一的 MAC 地址,可以用来标识设备。
    • 用途:网络设备管理,网络层面的机器识别。
  2. 系统序列号(似乎不好用):

    • 通过 DMI 信息获取,如 /sys/class/dmi/id/product_serial
    • 用途:硬件资产管理,客户支持和保修服务。
  3. 硬盘序列号

    • 可以通过命令 lsblkhdparm 获取硬盘的唯一序列号。
    • 用途:存储设备管理,备份和恢复系统。
  4. BIOS 版本和固件信息

    • 通过 DMI 信息获取,如 /sys/class/dmi/id/bios_version
    • 用途:系统更新和维护,硬件兼容性检查。

这些标识符在不同的应用场景中有不同的作用,可以根据具体需求选择合适的标识方法来实现系统和硬件的唯一标识和管理。

References

最后修改:2024 年 09 月 05 日
如果觉得我的文章对你有用,请随意赞赏