最近更新时间:2026-06-16 17:51:51
本文介绍在金山云上制作自定义镜像的完整流程,包括准备工作、三种制作方式(基于实例、基于快照、使用 Packer 工具)以及使用限制与注意事项。
用户可以基于正常运行的实例,创建自定义镜像。实例可以为“运行中”或“已关闭”状态。
您可以通过已有实例或快照创建自定义镜像,以便快速复制系统环境,免除重复配置。
每个地区默认支持500个自定义镜像,可在金山控制台配额列表查看资源配额。若有需求调整配额,具体操作请参见创建配额调整申请。
在制作镜像前,请根据操作系统类型完成以下准备工作,以确保镜像制作成功且实例能够正常启动。
删除/屏蔽 /etc/fstab 中的用户自定义挂载信息,仅保留系统自带的挂载配置。
若保留自定义挂载项,基于该镜像创建的实例可能因无法挂载对应磁盘而启动失败。
开放DHCP协议端口:确保系统防火墙允许 UDP 67/68 端口的通信,以保证实例能够正常获取 IP 地址:
方案一(推荐)
netsh advfirewall firewall set portopening udp 67 enable
netsh advfirewall firewall set portopening udp 68 enable或者使用旧版命令:
netsh firewall set portopening udp 67 enable
netsh firewall set portopening udp 68 enable适用于已有运行中实例的场景。
登录云服务器KEC控制台,默认进入云服务器 > 实例页面。
在目标实例对应的“操作”列中,选择更多 > 制作镜像。
制作镜像可以根据业务形态自主选择镜像类型以及是否添加数据盘;其中镜像类型支持选择普通镜像及极速可用镜像,区别在于存储位置不同:
普通镜像:镜像存储在对象存储KS3,本地盘及云硬盘均支持创建普通镜像;
极速可用镜像:镜像存储在EBS集群,支持快速开机,仅支持系统盘为云盘机型创建;
当选择的是本地盘机型进行制作镜像时,如果选择增加了本地数据盘,则支持勾选支持快速开盘选项。勾选快速开盘后,使用该镜像开盘效率将有效提升。该选项会对该磁盘进行一次全量备份,该磁盘关联的快照链容量将会增加。如下图所示。
输入镜像名称,单击确认。
制作完成后,即可以在云服务器 > 镜像页面查看并管理镜像。
可以使用自定义镜像创建实例或重装系统,其中仅系统盘为SSD3.0的实例可使用对应可用区的极速可用镜像创建实例或重装系统。
如果已有系统盘的快照,可以直接通过快照来创建自定义镜像。
登录云服务器KEC控制台,进入云服务器 > 快照列表页面。
在目标快照对应的“操作”列中,选择更多 > 制作镜像。制作镜像可以根据业务形态自主选择是否添加数据盘。
若您选择的系统盘快照类型为极速可用快照,则数据盘快照类型仅支持选择极速可用快照,创建出来的自定义镜像类型为极速可用镜像;若您选择的系统盘快照类型为普通快照,则数据盘快照类型仅支持选择普通快照,创建出来的自定义镜像类型为普通镜像。
输入镜像名称,单击确定。
制作完成后,即可以在云服务器 > 镜像页面查看并管理镜像。
Packer是一款轻量级的镜像定义工具,能够运行在常用的主流操作系统(如Windows、Linux和macOS)上。参见本文安装并使用Packer,轻松创建自定义镜像。
1.安装Packer
链接并登录到Linux服务器。登录Linux实例服务器,请参见连接实例
克隆存储库到 $GOPATH/src/github.com/kingsoftcloud/packer-plugin-ksyun$ mkdir -p $GOPATH/src/github.com/kingsoftcloud;$ cd $GOPATH/src/github.com/kingsoftcloud$ git clone git@github.com:kingsoftcloud/packer-plugin-ksyun.git
构建并链接到Packer$ cd $GOPATH/src/github.com/kingsoftcloud/packer-plugin-ksyun$ make build$ln -s $GOPATH/bin/packer-plugin-ksyun ~/.packer.d/plugins/packer-plugin-ksyun
2.定义Packer模板
使用Packer创建自定义镜像时,需要创建一个JSON格式的模板文件。在该模板文件中,您需要指定创建自定义镜像的生成器和配置器。
这是一个示例模板,您也可以在example /目录中找到它
{
"variables": {
"access_key": "{{ env `KSYUN_ACCESS_KEY` }}",
"secret_key": "{{ env `KSYUN_SECRET_KEY` }}"
},
"builders": [{
"type":"ksyun-kec",
"access_key":"{{user `access_key`}}",
"secret_key":"{{user `secret_key`}}",
"region":"cn-shanghai-2",
"image_name":"packer_test",
"source_image_id":"IMG-dd1f8324-1f27-46e0-ad6b-b41d8c8ff025",
"instance_type":"N3.1B",
"ssh_username":"root",
"associate_public_ip_address": true
}],
"provisioners": [{
"type": "shell",
"inline": [
"sleep 30",
"yum install mysql -y"
]
}]
}您需要自定义的参数数值如下表所示。
参数 | 描述 |
|---|---|
access_key | 您的AccessKeyID。 |
secret_key | 您的AccessKeySecret。 |
region | 创建自定义镜像时使用临时资源的地域。 |
image_name | 自定义镜像的名称。 |
source_image_id | 基础镜像的ID |
instance_type | 创建自定义镜像时生成的临时实例的类型。 |
provisioners | 创建自定义镜像时使用的Packer配置器类型。 |
3.使用Packer创建自定义镜像
导入您的AccessKeyIDexport KSYUN_ACCESS_KEY=<您的AccessKeyID>
导入您的AccessKeySecretexport KSYUN_SECRET_KEY=<您的AccessKeySecret>
创建自定义镜像packer build example/ksyun.json
1. 镜像制作失败的可能原因
实例处于异常状态(如已关机、重启中、系统损坏)。
Linux 实例 /etc/fstab 中存在错误的自定义挂载项。
Windows 实例防火墙未开放 DHCP 端口,导致实例启动后无法获取 IP。
数据盘快照类型与系统盘快照类型不一致(基于快照制作时)。
超出地域镜像配额上限。
2. 极速可用镜像的使用限制
仅支持系统盘为 SSD3.0 云硬盘 的实例。
极速可用镜像本身存储于 EBS 集群,不占用 KS3 存储空间,但会产生相应的 EBS 快照费用。
本地盘机型无法使用极速可用镜像创建实例。
3. 镜像大小与费用
自定义镜像的存储费用取决于实际占用空间。
普通镜像存储于 KS3,按 KS3 标准存储计费。
极速可用镜像按 EBS 快照计费规则收费。
建议定期删除不再使用的镜像及关联快照,避免产生不必要的费用。
4. 跨地域使用镜像
自定义镜像默认仅在同地域可用。若需在其他地域使用,请先执行复制镜像操作,将镜像复制到目标地域后再使用。
纯净模式
