虚拟化

什么是cloud-init?

定义

cloud-init is the standard mechanism for configuring a virtual machine on first boot, using metadata supplied by the platform. It handles SSH key injection, hostname, network configuration and arbitrary user scripts, which is what makes fully automated provisioning possible.

为什么cloud-init很重要

它处理SSH密钥注入、主机名、网络配置和任意用户脚本,这使完全自动化的配置成为可能。

cloud-init的实际应用

在全新启动时,cloud-init 在您的服务启动之前运行。您应查看控制台中的“正在运行模块”并检查 /var/log/cloud-init-output.log。配置错误的 user-data 脚本可能导致启动挂起或 SSH 被锁定。您应先在一次性实例中测试。您可以使用 'cloud-init clean' 并重新启动来重新运行。如果出错,代价是从面板重新部署,或通过 VNC 会话手动修复。

人们对cloud-init常见的误解

常见的错误是认为 cloud-init 每次启动都会重新运行。它只在首次启动时运行一次。如果你在 user-data 中添加脚本并期望它在重启时生效,那是不会的。纠正:只在初始配置时使用它,或者显式调用 'cloud-init clean' 来重置状态以便重新运行。

cloud-init —— 常见问题

如何将 user-data 传递给 cloud-init?

在面板或 API 中开通时,你可以提供 user-data 字段。它会通过元数据注入,cloud-init 在首次启动时应用它。根据需要,将其作为 shell 脚本或 cloud-config YAML 格式提供。

我可以将 cloud-init 用于自定义 ISO 吗?

可以,只要 ISO 中安装了 cloud-init。例如,主流发行版的云镜像都包含它。你也可以上传自己的包含 cloud-init 的镜像。确保实例是 KVM 而非容器,因为 cloud-init 依赖平台提供的元数据。

更多来自虚拟化

KVM
KVM 是内置于 Linux 内核的完全硬件虚拟化技术,每个客户机都有自己的内核,并通过硬件强制与其他租户隔离。
OpenVZ
OpenVZ 是基于容器的虚拟化技术,每个实例共享主机内核,因此客户机无法加载内核模块或运行不同的操作系统。
LXC
LXC 是 Linux 原生的容器化技术,通过命名空间和 cgroups 隔离进程,同时共享主机内核。
虚拟机监控程序
虚拟机监控程序是创建和运行虚拟机的软件层,在它们之间分配物理 CPU、内存和 I/O。
嵌套虚拟化
嵌套虚拟化允许虚拟机自身运行虚拟机,通过将处理器虚拟化扩展暴露给客户机来实现。
vCPU
vCPU是呈现给客户机的虚拟处理器,由物理核心或线程上的调度时间提供支持。