Alicloud Image Builder是阿里云推出的一款镜像构建器用,旨在通过简便的步地自动化构建镜像。诓骗Alicloud Image Builder构建出的操作系统镜像,再结合ACK集群节点池的自界说镜像功能MARINA最新番号,不错快速地扩容节点。本文先容如安在ACK集群中诓骗Alicloud Image Builder通过Job的步地构建自界说操作系统镜像。
上述YAML中触及参数证明如下。
表 1. Alicloud Image Builder树立文献的参数证明
参数
示例值
态状
variables{"<variable1>":"<value>"}
variables{"access_key":"{{env ALICLOUD_ACCESS_KEY}}"}
界说了Alicloud Image Builder中会用到的变量(variables)。
builders{"type":"<value>"}
builders{"type":"alicloud-ecs"}
镜像生成器(builders)。当斥地type为aliyun-ecs时,默示构建镜像时,会临时创建一个ECS实例来完成镜像构建。构建完成后,ECS实例会自动阵一火。
provisioners{"type":"<value>"}
provisioners{"type":"shell"}
镜像树立器(provisioners),用以界说需要在临时实例内施行的操作。当斥地type为shell时,说明使用的是Shell Provisioner,默示在联结Linux实例后自动施行一段Shell号令。举例,施行Shell号令yum install redis.x86_64 -y装配Redis。
对于Provisioner树立的更多信息,请参见下文的Provisioner树立先容。
表 2. 镜像构建触及的参数证明
参数
示例值
态状
进攻度
access_key
LTAInPyXXXXQ****
您的AccessKey ID。更多细目,请参见获得AccessKey。
必填
secret_key
CM1ycKrrCekQ0dhXXXXXXXXXl7y****
您的AccessKey Secret。
必填
region
cn-beijing
贪图自界说镜像的所属地域。
必填
image_name
ack-custom_image
贪图自界说镜像的称呼。不允许与已有镜像重名。
必填
source_image
aliyun_2_1903_x64_20G_alibase_20200904.vhd
具有探求操作系统的阿里云众人镜像ID。看重信息,请参见容器办事Kubernetes版撑捏的操作系统镜像。
必填
instance_typeMARINA最新番号
ecs.c6.xlarge
以source_image为镜像生成实例运行指定的预装配任务然青年景自界说镜像。如需要GPU类型镜像此处需要填写GPU类型的实例。
必填
RUNTIME
containerd
容器运行时,Docker大略containerd。
必填
RUNTIME_VERSION
1.6.28
容器运行时为Docker时,默许RUNTIME_VERSION为19.03.15。
容器运行时为containerd时,默许RUNTIME_VERSION为1.6.20。
选填
SKIP_SECURITY_FIX
true
跳过安全更新。
必填
KUBE_VERSION
1.30.1-aliyun.1
集群版块号。
必填
PRESET_GPU
true
预置装配GPU,加快启动。
选填
NVIDIA_DRIVER_VERSION
色吧影院460.91.03
预置GPU版块,不填默许为460.91.03。
选填
OS_ARCH
amd64
CPU架构,amd64大略arm64。
必填
KEEP_IMAGE_DATA
true
自界说镜像缓存了业务镜像后,如需在使用历程中为ECS实例挂数据盘,则树立为true。
选填
施行以下号令部署Alicloud Image Builder到集群。
创建Job责任负载以完成自界说操作系统镜像的构建。
使用以下YAML试验为AK、SK授予干系权限。
使用以下号令生成AK、SK加密字符串。
echo -n "AKxxxxxxxxxxxxxxx" | base64 echo -n "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" | base64
使用以下YAML试验创建my-secret。
apiVersion: v1 kind: Secret metadata: name: my-secret namespace: default type: Opaque data: ALICLOUD_ACCESS_KEY: TFRxxxxxxxxxxxxxRTkx // 上一步经过base64加密后的字符串 ALICLOUD_SECRET_KEY: a0zxxxxxxxxxxxxxx2UThl
使用以下YAML试验创建名为build.yaml的文献。
施行以下号令部署Job到集群运行构建操作系统镜像。
可选:登录ACK甘休台检验自界说镜像构建日记。
登录容器办事措置甘休台,在左侧导航栏选拔集群。
在集群列表页面,单击贪图集群称呼,然后在左侧导航栏,选拔责任负载 > 任务。
在职务列表中,找到上步创建的任务(Job),并单击其右侧操作列下的细目。
在贪图任务细目页,单击日记页签,然后检验镜像构建日记。
Provisioner树立先容定制Arm架构镜像。
定制GPU节点系统镜像,加快启动。
将业务镜像缓存到系统镜像中。
Runtime为Docker时拉取独有仓库镜像:
docker login <镜像地址> -u user -p password docker pull nginx
Runtime为containerd时拉取独有仓库镜像:
ctr -n k8s.io i pull --user=username:password nginx
自界说镜像构建拉取独有仓库镜像。
在已装配完成Docker的Linux机器上,施行如下docker login号令,生成文凭。
docker login --username=zhongwei.***@aliyun-test.com --password xxxxxxxxxx registry.cn-beijing.aliyuncs.com
docker login见效后,会在/root/.docker下生成文凭config.json。
将生成的config.json文献制作成ConfigMap。
apiVersion: v1 kind: ConfigMap metadata: name: docker-config data: config.json: |- { "auths": { "registry.cn-beijing.aliyuncs.com": { "auth": "xxxxxxxxxxxxxx" } }, "HttpHeaders": { "User-Agent": "Docker-Client/19.03.15 (linux)" } }
修改Job的YAML将Configmap挂载到Pod中。
修改build-config,增多图中所示试验。
施行Job。
斥地镜像上传、下载并发数。
登录容器办事措置甘休台,在左侧导航栏单击集群。
在集群列表页面,单击贪图集群称呼,然后在左侧导航栏,选拔节点措置 > 节点池。
单击贪图节点池称呼,然后单击基本信息页签,在节点池信息区域,单击弹性伸缩 ESS 伸缩组 的估计。
单击实例树立着手页签,然后在操作列单击贪图伸缩树立右侧的修改,单击确定。
在修改伸缩树立页面,修改干系树立项并伸开高档斥地,记载实例自界说数据区域的试验。使用Base64编码步地解密实例自界说数据框中的数据。
解密完成后,将以下代码加入解密后代码的后头。
yum install -y jq echo "$jq '. += {"max-concurrent-downloads": 20,"max-concurrent-uploads": 20}' /etc/docker/daemon.json" > /etc/docker/daemon.json service docker restart
使用Base64编码步地加密合成的代码,用加密后的代码替换正本实例自界说数据框中的代码,单击修改,然后单击证实修改。
使用如下试验,制作Alibaba Cloud Linux 3自界说镜像。
使用如下试验,创建Red Hat Enterprise Linux 9自界说镜像。
在修改伸缩树立页面,修改干系树立项并伸开高档斥地,记载实例自界说数据区域的试验。使用Base64编码步地解密实例自界说数据框中的数据。
解密完成后,将以下代码加入解密后代码的后头。
yum install -y jq echo "$jq '. += {"max-concurrent-downloads": 20,"max-concurrent-uploads": 20}' /etc/docker/daemon.json" > /etc/docker/daemon.json service docker restart
使用Base64编码步地加密合成的代码,用加密后的代码替换正本实例自界说数据框中的代码。
单击修改,单击证实修改。
使用如下试验,制作Alibaba Cloud Linux 3自界说镜像。
使用如下试验,创建Red Hat Enterprise Linux 9自界说镜像。
干系操作使用Alicloud Image Builder创建好自界说镜像后,您就不错使用自界说的镜像创建弹性伸缩节点池以完结快速扩容节点。对于如何创建弹性节点池,请参见启用节点自动伸缩。
创建好自界说镜像后,您不错使用自界说镜像创建集群。看重信息,请参见基于自界说镜像创建集群或节点池。