制作镜像

最近更新时间:2021-08-03 18:57:28

查看PDF

用户可以基于正常运行的实例,创建自定义镜像。实例可以为“运行中”或“已关闭”状态。

您可以通过已有实例或快照创建自定义镜像,以便快速复制系统环境,免除重复配置。

每个地区默认支持50个自定义镜像,可在金山控制台配额列表查看资源配额。若有需求调整配额,具体操作请参见创建配额调整申请

准备工作

为确保自定义镜像可以正常使用,在制作镜像前需要完成以下工作:

  • 如果要制作Linux镜像,将/etc/fstab配置文件中用户添加的挂载信息删除或屏蔽,仅保留系统自带的挂载信息。
  • 如果要制作Windows镜像,为Windows防火墙开放DHCP协议端口,即UDP 67和UDP 68。操作命令如下:
    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
    

操作步骤

一、基于实例制作自定义镜像

  1. 登录云服务器KEC控制台,默认进入云服务器 > 实例页面。

  2. 在目标云服务器对应的“操作”列中,选择更多 > 制作镜像

  3. 制作镜像可以根据业务形态自主选择镜像类型以及是否添加数据盘;其中镜像类型支持选择普通镜像及本地镜像,区别在于存储位置不同:

    普通镜像:镜像存储在对象存储KS3,本地盘及云硬盘均支持创建普通镜像;

    本地镜像:镜像存储在EBS集群,支持快速开机,仅支持系统盘为云盘机型创建;

image.png

  1. 输入镜像名称,单击确认

制作完成后,即可以在云服务器 > 镜像页面查看并管理镜像。

可以使用自定义镜像创建实例重装系统,其中仅系统盘为SSD3.0的实例可使用对应可用区的本地镜像创建实例或重装系统。

二、基于快照创建自定义镜像

  1. 登录云服务器KEC控制台,进入云服务器 > 快照列表页面。

  2. 在目标快照对应的“操作”列中,选择更多 > 制作镜像。制作镜像可以根据业务形态自主选择是否添加数据盘。

若您选择的系统盘快照类型为本地快照,则数据盘快照类型仅支持选择本地快照,创建出来的自定义镜像类型为本地镜像;若您选择的系统盘快照类型为普通快照,则数据盘快照类型仅支持选择普通快照,创建出来的自定义镜像类型为普通镜像。

image.png

  1. 输入镜像名称,单击确定

制作完成后,即可以在云服务器 > 镜像页面查看并管理镜像。

可以使用自定义镜像创建实例重装系统

三、使用Packer创建自定义镜像

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 [email protected]: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创建自定义镜像

  • 导入您的AccessKeyID
    export KSYUN_ACCESS_KEY=<您的AccessKeyID>
  • 导入您的AccessKeySecret
    export KSYUN_SECRET_KEY=<您的AccessKeySecret>
  • 创建自定义镜像
    packer build example/ksyun.json

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

内容不全,不深入
内容更新不及时
描述不清晰,比较混乱
系统或功能太复杂,缺乏足够的引导
内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈