详情页标题前

阿里云容器服务ACK使用自定义镜像创建Kubernetes集群-云淘科技

详情页1

随着云原生时代的到来,应用、业务上云的需求也越来越多,不同的业务场景对容器平台的需求也不尽相同,越来越多的业务需要使用自定义镜像创建Kubernetes集群。本文主要为您介绍如何使用自定义镜像创建Kubernetes集群。

前提条件

确定要使用自定义镜像前,您需要了解容器服务对于自定义镜像的一些要求:

  • 基础镜像推荐使用容器服务的最新的基础镜像,因为该镜像不仅可以满足部署Kubernetes集群的需求,同时也是经过容器服务团队严格测试的镜像。自定义镜像需要满足以下要求:
    • 满足阿里云cloud-init的要求。更多信息,请参见安装cloud-init。
    • ACK专有集群需要开启SSHD Server,且使用默认端口22,以供节点拉起时的文件传输使用。具体操作,请参见通过SSH连接ACK专有版集群的Master节点。
    • 使用阿里云NTP Server进行NTP时间同步。
  • 若需使用自定义镜像请前往配额平台申请。

背景信息

容器服务支持您使用自定义镜像创建Kubernetes集群,但在制作打包自定义镜像时,往往会遇到以下情况:

  • 人工操作步骤,效率低。
  • 镜像变更历史记录缺失,不便于故障定位。
  • 无法对自定义镜像进行校验并判断是否符合Kubernetes集群节点要求。

基于以上痛点,容器服务团队开源了ack-image-builder项目帮助您快速制作符合Kubernetes集群节点要求的自定义镜像。

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

注意事项

在使用自定义镜像时,如果您调整OS参数,可能会导致节点启动异常或者功能异常。例如修改kernel.modules_disabled=1会导致Docker不可用。建议您事先在测试环境上验证自定义镜像的有效性。

操作步骤

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

  1. 安装Packer。
    1. 从官方下载页面选择操作系统对应的软件版本,并按照安装说明文档安装和验证Packer。
    2. 执行以下命令,查看Packer版本信息。
      packer version

      输出如下版本信息,说明Packer已安装成功:

      Packer v1.4.1
  2. 定义Packer模板。使用Packer创建自定义镜像时,需要创建一个JSON格式的模板文件。在该模板文件中,您需要指定创建自定义镜像的Alicloud Image Builder(生成器)和Provisioners(配置器)。更多信息,请参见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 您的AccessKey ID。
    secret_key 您的AccessKey Secret。
    region 创建自定义镜像时使用临时资源的地域。
    image_name 自定义镜像的名称。
    source_image 基础镜像的名称,可以从阿里云公共镜像列表获得。
    instance_type 创建自定义镜像时生成的临时实例的类型。
    provisioners 创建自定义镜像时使用的Packer配置器类型。
  3. 创建RAM用户(子账号)并生成AccessKey。具体操作,请参见创建RAM用户和获取AccessKey。说明 制作自定义镜像的权限要求较大,建议您创建RAM用户(子账号)时授权Packer需要的对应RAM Policy,关于RAM Policy的具体信息,请参见RAM Policy。
  4. 导入AccessKey信息并制作自定义镜像。
    1. 执行以下命令,导入AccessKey信息。
      export ALICLOUD_ACCESS_KEY=XXXXXX
      export ALICLOUD_SECRET_KEY=XXXXXX
    2. 执行以下命令,制作自定义镜像。
      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: xxxxxx
          alicloud-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.sh
          alicloud-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_image1564110199
          alicloud-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. 使用自定义镜像创建Kubernetes集群。本文以创建ACK Pro版集群为例。
    1. 登录容器服务管理控制台。
    2. 在控制台左侧导航栏,单击集群
    3. 集群列表页面,单击页面右上角的创建集群
    4. ACK托管版页签,配置使用自定义镜像创建集群的参数。关于创建集群的参数说明,请参见创建ACK Pro版集群。
      1. 完成集群配置后,单击下一步节点配置
      2. 节点池配置向导页面,单击自定义镜像选择
      3. 选择自定义镜像对话框,选择目标镜像,然后单击使用
      4. 完成集群的其他配置。
    5. 配置完成后,单击创建集群。待集群创建完成后,该集群就是使用了自定义镜像,后续的扩容等均会使用该镜像。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/170725.html

(0)
上一篇 2023年12月10日 下午1:28
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云ECS云服务器使用快照创建自定义镜像-云淘科技

    您可以基于已有的快照创建自定义镜像,可以将一台ECS实例的操作系统、数据制作成环境副本,再通过自定义镜像创建多台ECS实例,快速复制系统环境。 前提条件 已经开通快照并创建了一份系统盘快照。具体操作,请参见开通快照和创建一个云盘快照。 已删除快照中的敏感数据,避免数据安全隐患。 注意事项 使用快照创建自定义镜像前,请仔细阅读下列注意事项: 注意项 说明 地域…

    阿里云服务器 2023年12月9日
  • 阿里云容器服务ACK创建Kubernetes专有版集群-云淘科技

    在ACK专有集群中,您需要创建至少3个Master节点以保证高可用性,以及若干Worker节点,以对集群基础设施进行更细粒度的控制,但需要自行规划、维护、升级集群。本文介绍如何通过容器服务管理控制台创建ACK专有集群,包括集群、Master、节点池和组件配置。 前提条件 已登录RAM管理控制台和弹性伸缩控制台开通相应的服务。 使用限制 限制项 说明 配额申请…

    2023年12月10日
  • 阿里云ECS云服务器创建一个云盘快照-云淘科技

    快照是一种无代理(Agentless)的数据备份方式,支持为系统盘或者数据盘创建崩溃一致性快照。快照常用于日常数据备份、实例误释放恢复、制作自定义镜像等场景。在回滚云盘、修改关键系统文件、更换操作系统前,您可以提前创建快照,提高操作容错率。 前提条件 已开通快照。具体操作,请参见开通快照。 云盘必须处于使用中或待挂载状态。不同状态下的注意事项如下: 如果云盘…

    2023年12月9日
  • 腾讯云CVM服务器镜像类型

    用户可以基于以下特性选择镜像:位置(请参见 地域和可用区)操作系统类型架构(32位或64位)根据不同来源,腾讯云提供镜像类型有:公共镜像、自定义镜像、共享镜像、服务市场镜像。 公共镜像 公共镜像是由腾讯云官方提供的镜像,包含基础操作系统和腾讯云提供的初始化组件,所有用户均可使用,您可在文档 公共镜像列表 查看云服务支持的公共镜像版本明细。 公共镜像特质: …

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云CVM服务器创建自定义镜像

    操作场景 除了使用腾讯云提供的公共镜像、服务市场镜像外,您还可以创建自定义镜像。创建自定义镜像后,您可以在腾讯云控制台快速创建与该镜像相同配置的腾讯云云服务器实例。说明由于镜像底层使用了云硬盘快照服务:国内地域提供80GB的免费额度,详情请参见 赠送额度。在创建自定义镜像时会默认创建关联该镜像的快照,且保留自定义镜像会产生一定的快照费用,详情请参见 快照计费…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。