溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何制作ACK集群自定義節(jié)點(diǎn)鏡像

發(fā)布時(shí)間:2021-12-24 16:52:20 來源:億速云 閱讀:194 作者:小新 欄目:云計(jì)算

這篇文章給大家分享的是有關(guān)如何制作ACK集群自定義節(jié)點(diǎn)鏡像的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

隨著云原生時(shí)代的到來,用戶應(yīng)用、業(yè)務(wù)上云的需求也越來越多,不同的業(yè)務(wù)場景對(duì)容器平臺(tái)的需求也不盡相同,其中一個(gè)非常重要的需求就是使用自定義鏡像創(chuàng)建ACK集群。

ACK支持用戶使用自定義鏡像創(chuàng)建Kubernetes集群,但用戶在制作打包自定義鏡像時(shí),往往會(huì)遇到以下痛點(diǎn):
(1)人工操作步驟,效率低
(2)鏡像變更歷史記錄缺失,不便于故障定位
(3)無法對(duì)自定義鏡像進(jìn)行校驗(yàn)并判斷是否符合ACK集群節(jié)點(diǎn)要求

基于以上痛點(diǎn),我們開源了ack-image-builder項(xiàng)目幫助用戶快速制作符合ACK集群節(jié)點(diǎn)要求的自定義鏡像。

ack-image-builder項(xiàng)目基于開源工具HashiCorp Packer,提供默認(rèn)配置模板和校驗(yàn)?zāi)_本。

使用ack-image-builder項(xiàng)目創(chuàng)建ACK集群自定義節(jié)點(diǎn)鏡像的步驟如下:

1. 安裝Packer

從官方下載頁面選擇操作系統(tǒng)對(duì)應(yīng)的軟件版本,并按照安裝說明文檔安裝和驗(yàn)證packer。

$ packer version
Packer v1.4.1

說明packer已安裝成功。

2. 定義Packer模板

使用Packer創(chuàng)建自定義鏡像時(shí),需要?jiǎng)?chuàng)建一個(gè)JSON格式的模板文件。在該模板文件中,您需要指定創(chuàng)建自定義鏡像的 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
    }
  ]
}
參數(shù)描述
access_key您的AccessKeyID
secret_key您的AccessKeySecret
region創(chuàng)建自定義鏡像時(shí)使用臨時(shí)資源的地域
image_name自定義鏡像的名稱
source_image基礎(chǔ)鏡像的名稱,可以從阿里云公共鏡像列表獲得
instance_type創(chuàng)建自定義鏡像時(shí)生成的臨時(shí)實(shí)例的類型
provisioners創(chuàng)建自定義鏡像時(shí)使用的 Packer 配置器 類型

3. 創(chuàng)建子賬號(hào)并生成AK

制作自定義鏡像的權(quán)限要求較大,一般建議用戶創(chuàng)建子賬戶并授權(quán)Packer需要的對(duì)應(yīng)RAM Policy,并創(chuàng)建AK。

4. 導(dǎo)入AK信息并制作自定義鏡像

導(dǎo)入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: 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為對(duì)檢查項(xiàng)的校驗(yàn)部分。

5. 使用自定義鏡像創(chuàng)建ACK集群

登錄容器服務(wù)控制臺(tái),選擇創(chuàng)建 Kubernetes 專有版 集群, 配置集群創(chuàng)建需要的相關(guān)基礎(chǔ)信息后,點(diǎn)開 顯示高級(jí)選項(xiàng) 并選擇自定義鏡像進(jìn)行集群創(chuàng)建。

感謝各位的閱讀!關(guān)于“如何制作ACK集群自定義節(jié)點(diǎn)鏡像”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

ack
AI