文档章节

利用Packer自定义镜像创建容器集群

阿里云云栖社区
 阿里云云栖社区
发布于 05/16 11:30
字数 1216
阅读 5
收藏 0

阿里云容器服务Kubernetes集群支持CentOS操作系统,在绝大多数情况下可以满足客户的要求。但是有些客户由于业务系统对操作系统依赖比较高,希望定制化一些操作系统参数,则可以用自定义镜像来创建Kubernetes集群。

创建自定义操作系统镜像有两种方式,一是在控制台上通过为一台ECS创建快照的方式创建镜像,注意一定要基于阿里云CentOS作为基础镜像,把对操作系统的定制化更新完打成镜像即可。但这种方式的不便之处在于,如果每次对操作系统镜像有更新,则都要手动操作一遍,很难自动化。而且如果是从已有的Kubernetes节点制作镜像,还需要把Docker,Kubelet等清理干净才能制作镜像,步骤繁琐且容易遗漏。

另外一种方式就是本文介绍的用Packer构建镜像。相关的参考文档:使用Packer创建自定义镜像。采用Packer构建镜像的好处是可以把构建方式自动化,构建所需的参数文件中包含了对干净的基础镜像所做的修改,一目了然,并且可以把配置进行版本化管理。后期需要构建新的镜像,只需改变配置重新执行一下Packer构建即可,非常方便,是在生产环境中使用自定义镜像的推荐方式。

那么有没有一个针对容器服务集群的Packer配置模版呢?容器服务团队开源的ack-image-builder就是一个这样的示例项目。下面我们就来一起动手实践一下。

安装Packer

可以根据官方文档安装Packer https://www.packer.io/intro/getting-started/install.html 。

创建自定义镜像

克隆ack-image-builder项目到本地,可以看到config和scripts目录下是一些示例定制化脚本,读者可以根据自己的需求更新改。

$ git clone https://github.com/AliyunContainerService/ack-image-builder.git
$ cd ack-image-builder
ack-image-builder $ tree
.
├── LICENSE.txt
├── README.md
├── ack-centos.json
├── config
│   └── default.sh
└── scripts
    ├── cleanUpKerneles.sh
    ├── reboot.sh
    ├── updateKernel.sh
    └── verify.sh

2 directories, 8 files

ack-centos.json 可以配置在把生成好的自定义镜像存在哪个区(示例中为cn-hangzhou)。

{
  "variables": {
    "region": "cn-hangzhou",
    "image_name": "ack_test_image{{timestamp}}",
    "source_image": "centos_7_06_64_20G_alibase_20190218.vhd",
    ...
  },

配置好阿里云账号的AK,然后执行构建命令。

export ALICLOUD_ACCESS_KEY=XXX
export ALICLOUD_SECRET_KEY=XXX
packer build ack-centos.json

大约7-8分钟一个新的自定义镜像就构建成功了。可以进入ECS控制台查看新生成的镜像。

利用自定义镜像创建容器集群

开通自定义镜像白名单

读者如果需要尝试自定义镜像能力,需要先开工单,申请在容器服务控制台上开通自定义镜像的白名单。

创建容器集群

白名单开通后进入容器服务控制台 https://cs.console.aliyun.com/#/k8s/cluster/list,创建Kubernetes集群。选择自定义镜像所在的区,在示例中是cn-hangzhou。

在创建集群的页面中点击"显示高级选项",会出现"自定义镜像"的选择界面:

如果在选择中找不到刚创建的镜像,请检查一下集群和自定义镜像是否在同一个Region。

选择了自定义镜像后点击创建集群即可完成一个自定义镜像集群的创建。

集群扩容与自动伸缩

使用自定义镜像创建集群后,集群的扩容与自动伸缩中所用的都是自定义镜像。

Terraform 中自定义镜像支持

利用Terraform创建容器集群也可以使用自定义镜像,具体参数是:

image_id - The ID of node image.

相关链接如下:

专有集群:https://www.terraform.io/docs/providers/alicloud/r/cs_kubernetes.html

托管集群:https://www.terraform.io/docs/providers/alicloud/r/cs_managed_kubernetes.html

讨论

自定义镜像创建集群为很多有对操作系统有定制化要求的客户带来了很大的便利性,在使用自定义镜像的过程中几个比较好的做法是:根据阿里云的提供的最新的CentOS镜像来定制化,利用自定义创建集群后要充分测试,防止对操作系统的更改引发冲突。在实践中也建议基于Packer示例项目来构建镜像。

作者:libinjingshan

原文链接

本文为云栖社区原创内容,未经允许不得转载。

© 著作权归作者所有

阿里云云栖社区
粉丝 454
博文 1558
码字总数 3823668
作品 0
朝阳
私信 提问
如何使用“自定义镜像”创建容器服务Kubernetes集群

背景 在使用容器服务创建Kubernetes集群的时候,默认是没有用户选择镜像的地方的,只能是系统镜像。但是对于一些客户而言,出于运维管理的需要,都希望可以安装一些特点的软件包。虽然说,目...

阿里云官方博客
10/15
8
0
镜像即代码:基于Packer构建阿里云镜像

什么是Packer Packer是HashiCorp推出的一款工具,旨在提供简易的方式自动化构建镜像。通过Packer,你只需要在配置文件中指明镜像构建所需的基本信息及期望安装到镜像中的软件及配置,即可通过...

迷你芊宝宝
03/22
43
0
Docker学习路线图 (持续更新中)

Docker学习路线图 最近很多阿里内部的同学和客户私信来咨询如何学习 Docker 技术。为此,我们列了一个路线图供大家学习Docker和阿里云容器服务。这个列表包含了一些社区的优秀资料和我们的原...

易立
2016/05/09
0
0
阿里云平台下Terraform+Packer一键部署WordPress案例

前言 前面 云生态下的基础架构资源管理利器Terraform 一文对Terraform做了产品介绍,包括安装、模板配置文件编写,资源构建与销毁等。这里通过介绍Terraform + Packer 在阿里云平台上一键部署...

子优
2018/07/10
0
0
通过阿里云容器服务上手Caffe + GPU训练

深度学习作为近几年推动人工智能在机器视觉、语音、自然语言处理等领域取得显著进展的主要方法,已经发展成一门相对成熟的学科。同时,随着越来越多科技企业和科研机构的投入,深度学习的基础...

idooup
2018/07/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

vue入门--简单路由配置

本文转载于:专业的前端网站➜vue入门--简单路由配置   在初始化vue init webpack <工程名>时,有一步是询问是否安装vue-router,选择yes,如果没有安装的话,后面需要自己安装。然后在目录...

前端老手
38分钟前
3
0
怎么给视频配音

很多刚开始尝试视频制作的小伙伴,帮助到怎么给制作完成的视频配音,其实给视频配音的方法非常简单,在手机上可以进行制作,下面一起来看看给视频配音的方法吧! 具体步骤如下: 1、首先在手...

白米稀饭2019
47分钟前
3
0
windows批处理bat脚本编写

什么是bat脚本 .bat结尾的文件其实就是windows上的批处理脚本,Windows中的bat文件相当于 Linux中shell编程的.sh脚本,批量执行DOS命令。 其最简单的例子,是逐行书写在命令行中会用到的各种...

孙幼凌
55分钟前
3
0
华为手机翻译功能怎么使用?这三种方法请务必收藏

华为手机翻译功能怎么使用?在我们的生活中会经常遇到翻译问题,许多外语不好的朋友该怎么办呢?华为手机已经为我们解决了这个问题,今天小编就教大家学会使用华为手机中的三种翻译技巧,需要...

翻译小天才
今天
5
0
企业服务软件开发中需要注意的三个问题

在开发企业服务软件时,我们需要分为:业务需求、用户需求、产品需求,三大需求层次,三个层次互相关联,企业服务软件开发首先要服务业务,需要满足业务的需求,再关注用户体验,也就是用户需...

积木创意科技
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部