共計(jì) 4373 個(gè)字符,預(yù)計(jì)需要花費(fèi) 11 分鐘才能閱讀完成。
這篇文章給大家分享的是有關(guān)如何制作 ACK 集群自定義節(jié)點(diǎn)鏡像的內(nèi)容。丸趣 TV 小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨丸趣 TV 小編過來看看吧。
隨著云原生時(shí)代的到來,用戶應(yīng)用、業(yè)務(wù)上云的需求也越來越多,不同的業(yè)務(wù)場(chǎng)景對(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 您的 AccessKeyIDsecret_key 您的 AccessKeySecretregion 創(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ò),可以把它分享出去讓更多的人看到吧!