容器服务支持使用基于 veLinux 的自定义镜像为节点安装操作系统,本文为您介绍如何使用docker run
方式打包自定义镜像。
说明
【邀测·申请试用】:该功能目前处于邀测阶段,如需使用,请提交申请。
本方式已经对自定义镜像打包过程进行产品化封装,使用docker run
命令即可自动进行自定义镜像的打包,命令执行过程将自动完成以下步骤:
系统根据所选规格临时新建一台 veLinux 操作系统的 ECS、一个 EIP、一个 VPC 及其子网,其中 ECS 和 EIP 将以按量计费方式进行收费。
打包自定义镜像,并检查自定义镜像的可用性。
将已经打包并检查无误的镜像,导入 ECS 的镜像中心。
删除临时创建的所有资源,并以按量计费方式结算 ECS 和 EIP 的费用。
已经在本地或云服务器中安装 Docker,且确保可以连接到互联网。详细操作参见:官方文档。
已开通快照服务,用于存储自定义镜像数据,操作详情可查看 快照。
已经获取可用的火山引擎账号 AK、SK,可前往 API 访问密钥 获取。
(可选)若使用标准版镜像仓库,确保已经准备待打包的镜像,并获取镜像地址、镜像仓库用户名和镜像仓库密码。
(可选)若使用标准版镜像仓库,确保制作镜像的 ECS 实例与镜像仓库网络互通,可使用公网连接或指定 VPC。
(可选)若使用子用户打包自定义镜像,确保已经具备基础设施 ECS、EIP、VPC 相关的 IAM 权限,包含以下 Action:
{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunInstances", "ecs:StopInstance", "ecs:DeleteInstance", "ecs:DescribeInstances", "ecs:CreateImage", "ecs:PreheatImage", "ecs:DescribeImages", "ecs:DescribeTasks", "vpc:CreateVpc", "vpc:DeleteVpc", "vpc:DescribeVpcs", "vpc:CreateSubnet", "vpc:DeleteSubnet", "vpc:DescribeSubnets", "vpc:DescribeSecurityGroups", "vpc:AllocateEipAddress", "vpc:AssociateEipAddress", "vpc:DescribeEipAddresses", "vpc:DisassociateEipAddress", "vpc:ReleaseEipAddress" ], "Resource": [ "*" ] } ] }
基于 Docker 制作自定义镜像的方式,目前仅支持使用容器服务基础镜像 veLinux 制作。
自定义镜像打包过程会临时创建一台 ECS 和一个 EIP,待所有流程结束后自动删除并以按量计费方式结算费用,请确保账号余额充足,否则可能导致镜像打包失败。
满足以上前提条件后,即可在已经安装 Docker 的本地或云服务器中,使用docker run
方式进行自定义镜像的打包。其中,所有参数均通过环境变量(ENV)来配置。
docker run --rm \ -e VOLC_AK="<AK>" \ -e VOLC_SK="<SK>" \ -e TAILOR_SPEC="ecs.xxx.large" \ vke-cn-beijing.cr.volces.com/vke/private-image-packer:v1.0.9
说明
示例命令末尾的\
是 Shell 命令中的换行符,若客户端无法识别,需删除此符号,将命令整理成一行。
docker run --rm \ -e VOLC_AK="<AK>" \ -e VOLC_SK="<SK>" \ -e REGION="cn-shanghai" \ -e ZONE="cn-shanghai-a" \ -e TAILOR_IMAGE_NAME="my-image-name" \ -e TAILOR_SPEC="ecs.xxx.large" \ -e TAILOR_DISK_SIZE="60" \ -e TAILOR_COMPAT="false" \ -e IMAGES="cr-helm2-cn-beijing.cr.volces.com/****/busyxxx:latest,cr-helm2-cn-beijing.cr.volces.com/****/3gixxx:latest" \ -e REGISTRY_USERNAME="paas2b_prod@2100****" \ -e REGISTRY_PASSWORD="password123" \ -e TAILOR_PASSWORD="password"\ -e TAILOR_VPC="vpc-13fawddpwxxxxxx6nu4g2y8bt"\ -e TAILOR_SUBNET="subnet-mj92ij8xxxxxxsmt1arvwrtw"\ -e TAILOR_KERNEL="5.4"\ vke-cn-beijing.cr.volces.com/vke/private-image-packer:v1.0.9
ENV 名称 | 是否必选 | 描述 | 示例 |
---|---|---|---|
VOLC_AK | 是 | 火山引擎账号的 AK,前往 API 访问密钥 获取。 | AKLTN2M1NTRjODNkYmI2NGEzNWFiYTk3ZTZhY******** |
VOLC_SK | 是 | 火山引擎账号的 SK,前往 API 访问密钥 获取。 | WkRVek5EWmtaalU0Wm1RMU5ETTJOamcyWlRoaU5EaGlObVJq**** |
REGION | 否 | 地域,若留空将默认配置cn-beijing 。容器服务支持的地域和可用区列表参见:地域和可用区。 | cn-beijing |
ZONE | 否 | 可用区,若留空将默认配置{REGION}-a 。 | cn-beijing-a |
TAILOR_SPEC | 是 | 指定需要构建镜像的机型,控制台中可选的机型均可使用,详细清单参见:ECS 实例规格。 说明 ECS 实例规格并非通用,请根据实际场景选择,建议制作镜像的 ECS 与目标使用的 ECS 保持一致。例如:若期望打包用于 GPU 场景的自定义镜像,则需要使用 GPU 实例规格,否则会导致驱动缺失,不可使用。 | ecs.xxx.large |
TAILOR_DISK_SIZE | 否 | 制作自定义镜像时使用的系统盘大小,若留空将默认配置40 ,即 40 GiB。 | 100 |
TAILOR_IMAGE_NAME | 否 | 自定义镜像的名称,若留空将自动生成 | velinux-example |
TAILOR_COMPAT | 否 | 是否使用 veLinux CentOS 兼容版。
| false |
REGISTRY_USERNAME | 否 | 待拉取镜像所属私有镜像仓库使用的用户名,格式通常为 说明 若留空将默认以公开身份拉取镜像,此参数需要与 | user@2100****** |
REGISTRY_PASSWORD | 否 | 待拉取镜像所属私有镜像仓库用户名对应的密码。 说明 若留空将默认以公开身份拉取镜像,此参数需要与 | password@123 |
IMAGES | 否 | 待拉取镜像的列表,若留空将不拉取用户的容器镜像。 说明 支持拉取多个镜像,以英文逗号(,)分隔。 | cr-helm2-cn-beijing.cr.volces.com/****/busy*****:latest,cr-helm2-cn-beijing.cr.volces.com/*****/3gixxx:latest |
TAILOR_PASSWORD | 否 | 创建 ECS 实例时所使用的密码。 | Password |
TAILOR_VPC | 否 | 在指定 VPC 内创建 ECS 实例,必须与 TAILOR_SUBNET 一起指定。 说明 若指定 VPC 及其子网,请确保子网的安全组在入方向规则中放开 22 端口。 | vpc-13fawddpwxxxxxx6nu4g2y8bt |
TAILOR_SUBNET | 否 | 在指定子网内创建 ECS 实例,必须与 TAILOR_VPC 一起指定。 | subnet-mj92ij8xxxxxxsmt1arvwrtw |
TAILOR_KERNEL | 否 | 指定镜像所使用的内核版本,可选值:5.4、5.10,默认为 5.4。 | 5.4 |
版本号 | 版本状态 | 更新时间 | 更新记录 | 更新影响 |
---|---|---|---|---|
v1.0.9 | 维护中 | 2024.8 | 修复指定内核版本为 5.10 时出现镜像无法找到的问题。 | 无 |
v1.0.8 | 维护中 | 2024.6 | 修复使用自定义镜像创建多个 ECS 时,machine-id 相同的问题。 | 无 |
v1.0.7 | 停止维护 | 2023.10 | 优化镜像预热的逻辑,同时支持 ECS 的镜像预热 和 EBS 的快照预热两种方式,快照预热时默认保留时间为 365 天。 | 无 |
v1.0.6 | 停止维护 | 2023.9 |
| 不兼容变更,需将 |
v1.0.5 | 停止维护 | 2023.8 |
| 无 |
v1.0.4 | 停止维护 | 2023.6 | 新增 TAILOR_COMPAT 环境变量,支持 veLinux CentOS 兼容版。 | 无 |
v1.0.3 | 停止维护 | 2023.4 | 【不兼容】修复环境变量 Zone 的格式,从 a 修改为 {REGION}-a ,例如:cn-beijing-a 。详细地域和可用区支持情况参见:地域和可用区。 | 不兼容变更,需调整 Zone 环境变量。 |
v1.0.2 | 停止维护 | 2023.4 | 修复广州地域执行报错的问题。 | 无 |
v1.0.1 | 停止维护 | 2023.4 | 预热镜像时,新增可用区校验。 | 无 |
v1.0.0 | 停止维护 | 2023.3 | private-image-packer 首次正式发布。 | 无 |
若docker run
命令执行过程中报错中断自定义镜像打包,需要根据报错提示进行处理,然后重新执行命令。可能存在的错误包括:
docker run 命令错误:命令参数不符合语法定义、缺少可用的参数值等。
自定义镜像检查不通过:操作系统与内核版本、systemd 等基础组件版本、cloud-init 状态、DNS 配置、NTP 状态、atop/proxima/unscd 等组件版本、文件系统挂载状态、网卡名匹配、系统启动参数等检查不通过。
docker run
命令执行成功后,打包好的自定义镜像将自动上传到 ECS 的镜像中心。
创建集群、创建节点池或添加已有节点时,即可选择使用已经打包并上传到镜像中心的自定义镜像。详细操作参见:创建集群、添加已有节点、创建节点池。