背景 链接到标题 最近在折腾 Cluster API 的时候,因为目前社区中比较成熟的方案是通过 Cloud-init 执行 kubeadm 命令部署 k8s ,因此需要使用 Cloud-init 进行功能验证,但是 Cloud-init 通常执行的前提条件是系统初次启动时,自动执行配置,这点对于调试很不友好,因此需要找到一个无需重启即可执行 Cloud-init 配置的方式。
Cloud-init 链接到标题 使用过公有云或者私有云的同学应该都知道在创建虚拟机的时候可以传递一个脚本用于在机器置备的时候执行某些动作,尤其在批量执行的时候,通常会很方便。这个其实就是 Cloud-init 所做的工作,就跟它的名字一样,针对 Cloud 场景执行 init 动作。
引用官网介绍:
Cloud-init is the industry standard multi-distribution method for cross-platform cloud instance initialization. It is supported across all major public cloud providers, provisioning systems for private cloud infrastructure, and bare-metal installations.
NoCloud 链接到标题 Cloud-init 官方支持云平台种类很多常见的公有云如 Aliyun、AWS、Azure,常见的私有云解决方案如 OpenStack、ZStack、OVF 等都有支持。
但是如果我不使用已经支持的私有云,而是自己通过 Libvirt 配合 Ceph 实现了一套虚拟化平台,想要使用 Cloud-init,则可以使用 ConfigDrive 或者 NoCloud 方式。本文采用的是 NoCloud 方式。