与阿里云容器服务 ACK 发行版的深度对话第一弹:如何借助 sealer 实现快速构建 部署
作者:淮右、王飛、瑜佳
記者: 阿里云原生的讀者朋友們大家好,今天應廣大感興趣朋友們的強烈要求,我們邀請來了「阿里云容器服務 ACK 發行版」做客我們的欄目,為大家講述它的身世之謎,以及它是如何和伙伴們配合,讓大家在自有基礎設施上獲得一致的最佳體驗。所以走過路過千萬不容錯過哦~
阿里云容器服務 ACK 發行版(簡稱 ACK Distro): 大家好,我是阿里云容器服務 ACK 發行版,大家可以叫我的小名,ACK Distro,本次采訪我將為大家詳細講解我的好伙伴:阿里巴巴的開源集群鏡像技術 sealer,以及我是如何借助它來實現阿里云 ACK 服務的快速穩定交付。
ACK Distro 是什么
記者: 在介紹伙伴之前,讓我們先進入第一個版塊吧。很多新來的讀者還不清楚您是誰,及您的功能是什么,不妨先來做個自我介紹。
ACK Distro: 好的沒問題。我是阿里針對異構 IaaS 環境發布的 Kubernetes 發行版,可以在異構 IaaS 部署私有化輸出的容器服務 ACK 敏捷版,就是默認通過我生產、運維 Kubernetes 集群,大家在使用容器服務 ACK 敏捷版時,通過簡單平臺交互,即可實現 ACK Distro 集群的部署、升級、擴容等基礎運維。
我的伙伴們,即核心組件都通過了阿里云容器服務 ACK 和阿里巴巴集團核心業務場景在大規模生產環境中的驗證和安全檢查,它們都具有業界領先的安全性和可靠性。
身為一個完整的 Kubernetes 發行版,我可以通過開源集群鏡像技術 sealer 簡單快速地交付到離線環境,幫助大家更簡單靈活地管理集群。這些組件支持 X86和 ARM 硬件架構,并包含一個高性能的網絡插件 hybridnet,它確保我可以在不同的基礎設施上順利運行。同時,我可以在阿里云容器服務 ACK 上被注冊,達到一致的資源管理、策略遵從和流量控制,使大家可以獲得與在線 ACK 集群相同的用戶體驗。另外,針對 hybridnet 的詳細說明,我將在之后的采訪中為大家披露,敬請期待哦~
sealer 的定義及其核心原理
記者: 您剛才提到可以通過 sealer 更簡單靈活地管理集群,那它具體是什么以及核心原理是怎樣的呢?
ACK Distro: sealer 作為阿里巴巴開源的一款幫助分布式應用快速進行打包、交付和運行的解決方案,可以通過把分布式應用及其數據庫中間件等依賴項一起打包來解決復雜應用的交付問題。
sealer 構建出來的產物我們稱之為集群鏡像,集群鏡像里內嵌了一套完整的 Kubernetes + 容器,它們雙劍合璧,解決了分布式應用的交付一致性問題。
它的核心原理可以參考下圖:
Docker 可以把單個操作系統(rootfs)和單機應用構建(docker build) 成一個容器鏡像,并在單機上快速運行(docker run),而 sealer 則把 Kubernetes 看作整個集群的操作系統(cloud rootfs),并和其上部署的分布式應用構建(sealer build)成一個集群鏡像,在集群上快速運行(sealer run)。與此同時,集群鏡像也可以被推送(push)到公共鏡像倉庫(如 DockerHub、阿里云容器鏡像服務等)中共享給其他用戶使用。
簡單描述一下,大家可以通過像 Dockerfile 一樣的文件來編寫一個 Kubefile:
FROM registry.cn-qingdao.aliyuncs.com/sealer-io/kubernetes:v1.19.9 RUN wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml CMD kubectl apply -f recommended.yaml使用下面的?sealer build?命令就可以構建集群鏡像:
sealer build -t registry.cn-qingdao.aliyuncs.com/sealer-io/dashboard:latest .然后一個包含 dashboard 的集群鏡像就可以被制作出來了,大家可以運行或者分享給別人。
把制作好的集群鏡像推送到鏡像倉庫,集群鏡像倉庫兼容 docker 鏡像倉庫標準,可以把集群鏡像推送到 docker hub、阿里 ACR、或者 Harbor 中。
sealer push registry.cn-qingdao.aliyuncs.com/sealer-io/dashboard:latest記者: 也就是說,sealer 可以把 Kubernetes 及其上面部署的應用統一打包構建,且集群也可以被其他產品納管。
ACK Distro: 是的,這就是我們追求的,希望為大家帶來的一致體驗。除此之外,sealer 的技術優勢還有以下三點。
sealer 的技術優勢
寫時復制
集群鏡像的存儲也是通過寫時復制的方式實現的。這樣做有兩個好處:我們可以把同一集群中不同的分布式軟件打在不同層,以實現復用;還可以實現直接把集群鏡像 push 到 docker 鏡像倉庫中。
容器鏡像緩存
1)sealer build 的過程和 Docker build 還是有些區別的,sealer build 的強大之處在于不用起 Kubernetes 集群也可以執行 Kubefile 中定義的 apply 指令。
2)sealer 擁有只要私有鏡像倉庫中有就直接拉取,沒有的話才去公網拉取鏡像的能力。
負載均衡
sealer 的集群高可用使用了輕量級的負載均衡 lvscare。相比其它負載均衡,lvscare 非常小僅有幾百行代碼,而且 lvscare 只做 ipvs 規則的守護,本身不做負載,非常穩定。直接在 node 上監聽 apiserver,如果失效就移除對應的規則,重新運行之后會自動加回,相當于是一個專用的負載均衡器。
記者:確實名不虛傳。那促成這次夢幻聯動的原因是什么呢?或者說您為什么選擇 sealer 作為合作伙伴呢?****
ACK Distro: 我最重要的使命,是幫助用戶在自己的基礎設施上,簡單、快速地使用阿里云容器服務 ACK,并獲得一致體驗。在這個目標下,能夠在多種多樣的基礎設施上進行穩定交付的能力顯得尤為重要,而 sealer 提供的能力非常好地解決了這個難題。
首先,sealer 提供的標準化打包能力,省去了自定義一套打包邏輯的繁瑣工作。
其次,sealer 交付我的命令簡單、用時短,大家通過一條命令便可以在幾分鐘內完成 ACK Distro 集群的部署,效率極高。并且,我可以直接享受到 sealer 對多樣基礎設施的支持能力。
在運行時,sealer 提供的負載均衡、鏡像緩存等技術,幫助我可以無需依賴公共云的能力,在離線環境就可以實現高可用,穩定運行。最后,基于 sealer 的 Kubefile,用戶還可以將 ACK?Distro 作為基礎鏡像,靈活定制自己的集群鏡像,讓我更好地賦能給廣大開發者。
如何通過 sealer 使用 ACK Distro
ACK Distro: 了解到 sealer 對我的重要性后,大家可以按照下面幾步,通過 sealer 獲取 ACK Distro。
獲取 sealer 工具
wget -c http://sealer.oss-cn-beijing.aliyuncs.com/sealers/sealer-v0.5.2-linux-amd64.tar.gz tar -xvf sealer-v0.5.2-linux-amd64.tar.gz -C /usr/bin獲取 ACK Distro?制品并拉起集群
sealer run ack-agility-registry.cn-shanghai.cr.aliyuncs.com/ecp_builder/ackdistro:v1.20.4-ack-2 -m ${master_ip1}[,${master_ip2},${master_ip3}] [-n ${worker_ip1...}] -p password查看集群狀態
kubectl get cs擴容節點
sealer join -m ${master_ip1}[,${master_ip2},${master_ip3}] [ -n ${worker_ip1}...]縮容節點
sealer delete -m ${master_ip1}[,${master_ip2},${master_ip3}] [ -n ${worker_ip1}...]清理 ACK Distro 集群
sealer delete -a如果大家仍有疑問,歡迎前往 ACK Distro 的官方 Github 庫:
????https://github.com/AliyunContainerService/ackdistro????
以 Istio 為例,基于 ACK Distro?構建自己的集群鏡像
記者: 您剛才提到,用戶可以將 ACK Distro 作為基礎鏡像,靈活定制自己的集群鏡像,那具體應該怎樣操作呢?
ACK Distro: 我以 Istio 為例,為大家說明一下吧~
在原有的 ACK Distro?基礎鏡像上構建,編寫 Kubefile
FROM ack-distro:1.1 RUN curl -L https://istio.io/downloadIstio | sh -構建鏡像
sealer build -f Kubefile -m lite -t ack-distro-istio:v0.0.1 .得到?ack-distro-istio:0.0.1
部署?ack-distro-istio:0.0.1
sealer run ack-distro-istio:v0.0.1 -m ${master_ip1}[,${master_ip2},${master_ip3}] [ -n ${worker_ip1}...] -p password查看 Istio
通過以上 5 步,大家就可以基于 ACK Distro 構建出一個帶 Istio 的 plus 版本的集群鏡像,并且可以在多樣的基礎設施完成部署,這個新的集群鏡像可以享用我的所有功能,包括交付能力。
Istio 只是一個樣例,相信大家可以看出,通過 Kubefile,您有充分的自由度來自定義您自己的鏡像,只要您的組件可以部署在 Kubernetes 之上,那么就能夠用此種方式去打包。
記者: 明白了,您還有什么想對大家補充的嗎?
ACK Distro: 借助 sealer,我實現了阿里云容器服務 ACK 的快速穩定交付,在此基礎上也可以實現絕大多數容器化的分布式軟件的快速交付。同時 ACK Distro 的項目組成員也是 sealer 項目的重要參與者,兩者相輔相成,致力于為廣大的開發者們帶來更好用的容器服務體驗。
記者: 感謝您的細心講解,我們第一彈深度訪談到這里就要跟大家說再見了,期待您下次的精彩專訪。
ACK Distro: 我們下次再見!
相關鏈接
ACK Distro官網:
https://www.aliyun.com/product/aliware/ackdistro
ACK Distro 官方 GitHub:
https://github.com/AliyunContainerService/ackdistro
讓創新觸手可及,阿里云容器服務 ACK 發行版開放免費下載:
https://mp.weixin.qq.com/s/Lc2afj91sykHMDLUKA_0bw
騷操作,這款工具可以把 Kubernetes 集群打包成一個鏡像:
https://mp.weixin.qq.com/s/ssZSMqogjP6CTOKOOR2e5Q
點擊??此處??,前往 ACK Distro 官網查看更多相關信息!
總結
以上是生活随笔為你收集整理的与阿里云容器服务 ACK 发行版的深度对话第一弹:如何借助 sealer 实现快速构建 部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度解析|基于 eBPF 的 Kuber
- 下一篇: 重新理解“无容灾不上云”:应用多活将成为