Serverless Kubernetes入門:對kubernetes做減法
背景
Kubernetes作為通用的容器編排系統,承載了廣泛的應用和場景,包括CI/CD,資料計算,線上應用,AI等,然而由於其通用性和複雜性,管理一個kubernetes叢集對於很多使用者而言還是充滿挑戰的,主要體現在:
- 學習成本高;
- 叢集運維管理成本高,包括節點管理、容量規劃,以及各種節點異常問題的定位;
- 計算成本在很多場景中沒有達到最優,比如對於一個定時執行Jobs的叢集,長期持有資源池對於使用者來說是浪費的行為,資源利用率不高。
Serverless Kubernetes是阿里雲容器服務團隊對未來kubernetes演進方向的一種探索,透過對kubernetes做減法,降低運維管理負擔,簡化叢集管理,讓kubernetes從複雜到簡單。
對Kubernetes叢集做減法
無節點管理
我們相信未來使用者會更加關注應用的開發,而不是基礎設施的維護。體現在kubernetes叢集中,我們希望使用者能夠關注在pod/service/ingress/job等應用編排語義上,對底層node則可以減少關注。
無需管理節點也可以顯著降低叢集的運維管理成本,經統計kubernetes常見的異常問題中大多數與節點相關,比如Node NotReady問題,也無需擔憂Node的安全問題,以及基礎系統軟體的升級和維護。
在ASK叢集中,我們使用虛擬節點virtual-kubelet代替ecs節點,虛擬節點的容量可以認為是“無限大”,使用者不需要為叢集的容量擔憂,無需預先做容量規劃。
無Master管理
和ACK託管版一樣,ASK的Master(apiserver, ccm, kcm等)資源被容器服務平臺託管,使用者無需管理這些核心元件的升級和運維,也不用付出成本。
極簡的k8s基礎執行環境
除了無需管理節點和Master外,我們還對kubernetes叢集管理做了大量簡化,包括預設託管很多addon,使用者無需再管理一些基礎的addon,也不需要為這些addon付費。依賴阿里雲原生的網路和儲存等能力,以及獨特的託管架構設計,我們提供了極度簡化但功能完備的kubernetes基礎執行環境。
功能ACKASK儲存需要部署aliyun-disk-controller/flexvolume無需部署(正在支援中)CNI網路需要部署terway/flannel daemonset無需部署,基於vpc網路通訊coredns服務發現需要部署2個coredns副本無需部署,基於privatezone訪問kube-proxy需要部署kube-proxy daemonset無需部署,基於privatezone訪問Ingress需要部署nginx-ingress-controller無需部署,基於SLB七層轉發免密拉取ACR映象需要部署acr-credential-helper無需部署,預設支援sls日誌收集需要部署logtail daemonset無需部署,預設支援metrics統計需要部署metrics-server無需部署,開箱即用掛載eip需要部署terway無需部署,使用annotaion指定雲盤隨pod建立掛載依賴aliyun-disk-controller無需部署,預設支援彈性伸縮需要部署cluster-autoscaler無需部署GPU外掛需要部署Nivida-docker無需部署,開箱即用
綜上可以看到,ACK叢集至少需要2臺ecs機器以執行這些基本的Addon,而ASK叢集把這些基礎Addon化為無形,可以達到0成本建立一個開箱可用的kubernetes叢集。
簡化彈性伸縮
因為無需管理節點和容量規劃,因此當叢集需要擴容時也就不需要考慮節點層面的擴容,只需要關注pod的擴容,
這對於擴容的速度和效率都是極大的提升,目前一些客戶指定使用ASK/ECI的方式來快速應對業務流量高峰。
當前ASK/ECI支援30s完全啟動500個pod(至Running狀態),單個pod啟動可以達到10s以內。
更低成本
除去ASK叢集本身的低成本建立外,pod的按需使用也讓很多場景下資源利用率達到最優。對於很多Jobs或者資料計算場景而言,使用者並不需要長期維護一個固定的資源池,這時ASK/ECI可以很好的支援這些訴求。
經驗證,當pod一天中執行時間少於16個小時,則ASK/ECI的方式相比保有ecs資源池更節省經濟成本。
ECI:快速交付容器資源的彈性計算服務
談起ASK,一定會談到ASK的資源底座ECI。ECI是阿里雲基於ECS IaaS資源池提供的穩定、高效、高彈性容器例項服務。ECI讓容器成為了公有云的第一等公民,使用者無需購買和管理ecs就可以直接部署容器應用,這種簡化的容器例項產品形態和ASK形成了一個完美的組合。
使用者可以直接使用ECI Open API建立容器例項資源,但在容器場景中使用者普遍需要一個編排系統,來負責容器的排程、高可用編排等能力,而ASK正是這樣的kubernetes編排層。
對於ASK而言,ECI讓ASK容器服務免去了搭建後臺計算資源池的必要,更不用為底層計算資源池的容量而擔憂。基於ECI就意味著基於整個阿里雲IaaS規模化資源池,天然擁有了庫存和彈性優勢(比如可以透過Annotation的方式指定底層eci對應的ecs規格,大部分ecs規格都可以在ASK中使用,滿足多種計算場景的需求)。另外ECI和ECS複用資源池意味著我們可以最大化釋放規模化紅利,給使用者提供更低成本的計算服務。
容器生態支援
ASK對kubernetes容器生態提供了完善的支援,目前已有大量客戶使用ASK來支撐如下各種場景。
- CI/CD:gitlab-runner,jenkins/jenkins-x
- 資料計算:spark/spark-operator,flink,presto,argo
- AI:tensorflow/arena
- ServiceMesh: istio,knative
- 測試:locust,selenium
ASK叢集不支援Helm v2,近期ACK/ASK會發布Helm v3的支援,之後使用者可以非常方便的在ASK叢集中部署Charts。
本文為阿里雲原創內容,未經允許不得轉載。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949601/viewspace-2668300/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Serverless Kubernetes 和 Serverless on Kubernetes 的區別Server
- 從零入門 Serverless | 一文講透 Serverless Kubernetes 容器服務Server
- 淺入kubernetes(1):Kubernetes 入門基礎
- Kubernetes Helm入門指南
- Kubernetes入門簡介
- 簡單入門Kubernetes
- Azure Kubernetes Service 入門
- Kubernetes 入門基礎
- 入門Kubernetes-StatefulSets
- 從0到1使用Kubernetes系列——Kubernetes入門
- Kubeless——Kubernetes原生Serverless框架Server框架
- Serverless Kubernetes 落地實踐Server
- 入門系列之Kubernetes部署
- Kubernetes Ingress簡單入門
- Kubernetes Operator基礎入門
- Kubernetes Operator 開發入門
- Kubernetes認證入門指南
- 入門Kubernetes - YAML檔案YAML
- Kubernetes權威指南 第一章:Kubernetes入門
- Kubernetes 小白入門基礎教程(5)--kubernetes是什麼
- Kubernetes 名稱空間入門
- Kubernetes 入門與安裝部署
- 評估Kubernetes中的Serverless框架Server框架
- 深度揭祕阿里雲 Serverless Kubernetes阿里Server
- kubernetes入門 基礎叢集部署
- 入門Kubernetes-資料儲存
- Kubernetes 普及系列:容器基礎入門
- Kubernetes入門(四)——如何在Kubernetes中部署一個可對外服務的Tensorflow機器學習模型機器學習模型
- 做減法
- Serverless Kubernetes:理想,現實與未來Server
- 容器、Docker與Kubernetes——Kubernetes的配置入門Docker
- 淺入kubernetes(2):Kubernetes 的組成
- kubernetes入門預先準備環境
- 邁入Docker、Kubernetes容器世界的大門Docker
- kubernetes系列(十六) - Helm安裝和入門
- 04 . kubernetes資源清單YAML入門YAML
- Kubernetes(K8s)極速入門K8S
- 入門Kubernetes - 滾動升級/回滾