Serverless Kubernetes入門:對kubernetes作減法

背景

Kubernetes做爲通用的容器編排系統,承載了普遍的應用和場景,包括CI/CD,數據計算,在線應用,AI等,然而因爲其通用性和複雜性,管理一個kubernetes集羣對於不少用戶而言仍是充滿挑戰的,主要體如今:node

  • 學習成本高;
  • 集羣運維管理成本高,包括節點管理、容量規劃,以及各類節點異常問題的定位;
  • 計算成本在不少場景中沒有達到最優,好比對於一個定時運行Jobs的集羣,長期持有資源池對於用戶來講是浪費的行爲,資源利用率不高。

Serverless Kubernetes是阿里雲容器服務團隊對將來kubernetes演進方向的一種探索,經過對kubernetes作減法,下降運維管理負擔,簡化集羣管理,讓kubernetes從複雜到簡單。nginx

對Kubernetes集羣作減法

無節點管理

咱們相信將來用戶會更加關注應用的開發,而不是基礎設施的維護。體如今kubernetes集羣中,咱們但願用戶可以關注在pod/service/ingress/job等應用編排語義上,對底層node則能夠減小關注。git

無需管理節點也能夠顯著下降集羣的運維管理成本,經統計kubernetes常見的異常問題中大多數與節點相關,好比Node NotReady問題,也無需擔心Node的安全問題,以及基礎系統軟件的升級和維護。docker

在ASK集羣中,咱們使用虛擬節點virtual-kubelet代替ecs節點,虛擬節點的容量能夠認爲是「無限大」,用戶不須要爲集羣的容量擔心,無需預先作容量規劃。
imageapi

無Master管理

和ACK託管版同樣,ASK的Master(apiserver, ccm, kcm等)資源被容器服務平臺託管,用戶無需管理這些核心組件的升級和運維,也不用付出成本。安全

極簡的k8s基礎運行環境

除了無需管理節點和Master外,咱們還對kubernetes集羣管理作了大量簡化,包括默認託管不少addon,用戶無需再管理一些基礎的addon,也不須要爲這些addon付費。依賴阿里雲原生的網絡和存儲等能力,以及獨特的託管架構設計,咱們提供了極度簡化但功能完備的kubernetes基礎運行環境。網絡

功能架構

ACKless

ASK運維

存儲

須要部署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

原文連接

本文爲阿里雲內容,未經容許不得轉載。

相關文章
相關標籤/搜索