随着云原生时代的到来,用户应用、业务上云的需求也越来越多,不同的业务场景对容器平台的需求也不尽相同,其中一个非常重要的需求就是使用自定义镜像创建ACK集群。

ACK支持用户使用自定义镜像创建Kubernetes集群,但用户在制作打包自定义镜像时,往往会遇到以下痛点:
(1)人工操作步骤,效率低
(2)镜像变更历史记录缺失,不便于故障定位
(3)无法对自定义镜像进行校验并判断是否符合ACK集群节点要求

基于以上痛点,我们开源了ack-image-builder项目帮助用户快速制作符合ACK集群节点要求的自定义镜像。

ack-image-builder项目基于开源工具HashiCorp Packer,提供默认配置模板和校验脚本。

使用ack-image-builder项目创建ACK集群自定义节点镜像的步骤如下:

1. 安装Packer

从官方下载页面选择操作系统对应的软件版本,并按照安装说明文档安装和验证packer。

$ packer version
Packer v1.4.1

说明packer已安装成功。

2. 定义Packer模板

使用Packer创建自定义镜像时,需要创建一个JSON格式的模板文件。在该模板文件中,您需要指定创建自定义镜像的 Alicloud Image Builder(生成器) 和 Provisioners(配置器)。

{"variables": {"region": "cn-hangzhou","image_name": "test_image{{timestamp}}","source_image": "centos_7_06_64_20G_alibase_20190711.vhd","instance_type": "ecs.n1.large","access_key": "{{env `ALICLOUD_ACCESS_KEY`}}","secret_key": "{{env `ALICLOUD_SECRET_KEY`}}"},"builders": [{"type": "alicloud-ecs","access_key": "{{user `access_key`}}","secret_key": "{{user `secret_key`}}","region": "{{user `region`}}","image_name": "{{user `image_name`}}","source_image": "{{user `source_image`}}","ssh_username": "root","instance_type": "{{user `instance_type`}}","io_optimized": "true"}],"provisioners": [{"type": "shell","scripts": ["scripts/updateKernel.sh","scripts/reboot.sh","scripts/cleanUpKerneles.sh","config/default.sh","scripts/updateDNS.sh","scripts/verify.sh"],"expect_disconnect": true}]
}

参数描述access_key您的AccessKeyIDsecret_key您的AccessKeySecretregion创建自定义镜像时使用临时资源的地域image_name自定义镜像的名称source_image基础镜像的名称,可以从阿里云公共镜像列表获得instance_type创建自定义镜像时生成的临时实例的类型provisioners创建自定义镜像时使用的 Packer 配置器 类型

3. 创建子账号并生成AK

制作自定义镜像的权限要求较大,一般建议用户创建子账户并授权Packer需要的对应RAM Policy,并创建AK。

4. 导入AK信息并制作自定义镜像

导入AK:

export ALICLOUD_ACCESS_KEY=XXXXXX
export ALICLOUD_SECRET_KEY=XXXXXX

制作自定义镜像:

$ packer build alicloud.json
alicloud-ecs output will be in this color.==> alicloud-ecs: Prevalidating source region and copied regions...
==> alicloud-ecs: Prevalidating image name...alicloud-ecs: Found image ID: centos_7_06_64_20G_alibase_20190711.vhd
==> alicloud-ecs: Creating temporary keypair: xxxxxx
==> alicloud-ecs: Creating vpc...alicloud-ecs: Created vpc: xxxxxx
==> alicloud-ecs: Creating vswitch...alicloud-ecs: Created vswitch: xxxxxx
==> alicloud-ecs: Creating security group...alicloud-ecs: Created security group: xxxxxx
==> alicloud-ecs: Creating instance...alicloud-ecs: Created instance: xxxxxx
==> alicloud-ecs: Allocating eip...alicloud-ecs: Allocated eip: xxxxxxalicloud-ecs: Attach keypair xxxxxx to instance: xxxxxx
==> alicloud-ecs: Starting instance: xxxxxx
==> alicloud-ecs: Using ssh communicator to connect: 47.111.127.54
==> alicloud-ecs: Waiting for SSH to become available...
==> alicloud-ecs: Connected to SSH!
==> alicloud-ecs: Provisioning with shell script: scripts/verify.shalicloud-ecs: [20190726 11:04:10]: Check if kernel version >= 3.10.  Verify Passed!alicloud-ecs: [20190726 11:04:10]: Check if systemd version >= 219.  Verify Passed!alicloud-ecs: [20190726 11:04:10]: Check if sshd is running and listen on port 22.  Verify Passed!alicloud-ecs: [20190726 11:04:10]: Check if cloud-init is installed.  Verify Passed!alicloud-ecs: [20190726 11:04:10]: Check if wget is installed.  Verify Passed!alicloud-ecs: [20190726 11:04:10]: Check if curl is installed.  Verify Passed!alicloud-ecs: [20190726 11:04:10]: Check if kubeadm is cleaned up.  Verify Passed!alicloud-ecs: [20190726 11:04:10]: Check if kubelet is cleaned up.  Verify Passed!alicloud-ecs: [20190726 11:04:10]: Check if kubectl is cleaned up.  Verify Passed!alicloud-ecs: [20190726 11:04:10]: Check if kubernetes-cni is cleaned up.  Verify Passed!
==> alicloud-ecs: Stopping instance: xxxxxx
==> alicloud-ecs: Waiting instance stopped: xxxxxx
==> alicloud-ecs: Creating image: test_image1564110199alicloud-ecs: Detach keypair xxxxxx from instance: xxxxxxx
==> alicloud-ecs: Cleaning up 'EIP'
==> alicloud-ecs: Cleaning up 'instance'
==> alicloud-ecs: Cleaning up 'security group'
==> alicloud-ecs: Cleaning up 'vSwitch'
==> alicloud-ecs: Cleaning up 'VPC'
==> alicloud-ecs: Deleting temporary keypair...
Build 'alicloud-ecs' finished.==> Builds finished. The artifacts of successful builds are:
--> alicloud-ecs: Alicloud images were created:cn-hangzhou: m-bp1aifbnupnaktj00q7s

其中scripts/verify.sh为对检查项的校验部分。

5. 使用自定义镜像创建ACK集群

登录容器服务控制台,选择创建 Kubernetes 专有版 集群, 配置集群创建需要的相关基础信息后,点开 显示高级选项 并选择自定义镜像进行集群创建。

原文链接

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

mfc 制作不同的文档模板mdi不同的子窗体_制作ACK集群自定义节点镜像的正确姿势...相关推荐

  1. mfc 制作不同的文档模板mdi不同的子窗体_对IT项目售前解决方案制作的一些思考...

    作者:人月神话,新浪博客同名 简介:多年SOA规划建设,私有云PaaS平台架构设计经验,长期从事一线项目实践 今天准备对于IT项目售前解决方案的制作,对于一个软件企业来说,往往会针对自己的产品线和产品 ...

  2. mfc 制作不同的文档模板mdi不同的子窗体_鹤岗水利渡槽钢模板设计-哈尔滨同顺钢模板...

    我们知道圆柱木模板的作用就是通过将木板定型,制作成圆柱形的模具,用来打造混凝土圆柱子,还可以将木板成其他形状制作成异形板.5.做清水混凝土:浇筑物件表面光滑美观,减少墙壁二次抹灰,可直接贴面装饰,减缩 ...

  3. 深入浅出MFC文档/视图架构之文档模板

    在"文档/视图"架构的MFC程序中,提供了文档模板管理者类CDocManager,由它管理应用程序所包含的文档模板.我们先看看这个类的声明: / // CDocTemplate m ...

  4. 十三种技术文档模板_帮助企业制作帮助文档的6大“黑科技”工具!

    在日常产品使用的过程中,经常会遇到一些操作上的问题而这时我们通常会翻阅产品的使用说明书,而对于线上的产品来说通常都会有帮助文档,帮助文档的作用就是对用户操作过程中遇到的种种问题做详细的解答,同时也是对 ...

  5. 用Axure制作一个PRD文档(结尾分享模板)

    经常有小伙伴在微信上问我axure版本的PRD写法,今天就系统的跟大家分享一下,如何用axure制作一个完善的PRD,废话不多说,直接开始干货分享. 1.修改记录 修改记录主要记录你对原型的修改内容, ...

  6. VC++ 多文档模板(添加新文档模板)编程实例

    现在假设要做一个VC++多文档程序,一个文档类型处理txt文件,一个文档类型处理图片文件: 新加一个Img的文档模板类型: 先新建一个多文档工程,名为duodocDemo1: 在菜单选择 插入-类: ...

  7. MFC应用程序框架-文档/视结构

    MFC应用程序框架-文档/视结构 1.MFC单文档应用程序结构 2.文档对象 2.1基类CDocument 2.2在应用程序中使用文档类的典型步骤 3.视的对象 3.1基类CView 3.2常用的CV ...

  8. MFC创建新Excel文档并设置其中的格式和字体

    MFC创建新Excel文档并设置其中的格式和字体 转载 生成Excel.obl对象类excel.h 创建对象 [cpp] view plaincopyprint? Range m_ExlRge;    ...

  9. 自定义WIZ文档模板

    WIZ文档模板 1.在wiz笔记里面新建一个笔记,并将其做成一个模板 例子: 2.该作为模板的笔记制作完成后,右键-高级-另存为  导出为html格式 3.将导出的文件和文件夹(有时候只有一个htm文 ...

最新文章

  1. Java mission control 飞行记录器开启失败
  2. Apache TinkerPop毕业成为顶级项目
  3. 美团的android多渠道包的3种方法
  4. 好友圈的场景有哪些特点,该如何设计?
  5. Linux流量监控工具 (实时)-适用于centos 当然也兼容RHEL
  6. STM32震动感应控制继电器(使用循环VS使用外部中断EXTI和中断控制器NVIC)
  7. 一阶电路误差分析_电动涡旋压缩机转子的模态分析及试验研究
  8. [转注自官网]Cocos2d-x Tutorial 4 - 如何放出子弹(Glede Edition for 2.0.3)
  9. 手机没信号突然无服务器,OPPO手机没信号怎么办?解决OPPO手机突然没信号的方法...
  10. 步进电机驱动选择 的参考
  11. CentOS7.2 安装L2TP/IPSec 服务端/客户端 和部分心得 ( libreswan+xl2tpd )
  12. 管家婆设计页面用什么做的_管家婆软件主要是用来做什么的?
  13. python读二进制文件遍历_使用python反向读取二进制文件
  14. c语言实验报告总结通用版,C语言实训心得体会
  15. 解决AudioCont...HTMLMediaElement already connected previously to a different MediaElementSourceNode.问题
  16. 阿里邮箱(@aliyun.com):启用IMAP功能+邮箱密码登录
  17. swipecell样式_反馈组件 SwipeCell 滑动单元格 - 闪电教程JSRUN
  18. Win10系统安装CUDA10.0和cuDNN
  19. perl语言的学习(一)
  20. ExtJS面板的使用(Ext.Panle、Ext.TabPanel、Ext.Viewport)

热门文章

  1. MSSQL - 因为数据库正在使用,所以无法获得对数据库的独占访问权。
  2. Spring+SpringMVC+Log4J
  3. cnblog写博客还不错嘛
  4. POJ2823_Sliding Window
  5. php和asp程序如何进行301设置?
  6. 富有客户端技术之——jQuery EasyUI
  7. Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方法
  8. 【笔记】虚拟机用Xshell登陆报错“ssh服务器拒绝了密码”解决方法
  9. PHP下ajax跨域的解决方案之CORS
  10. 解决 .net core 中 nuget 包版本冲突问题