Kubernetes簡介

什么是Kubernetes

  • kubernetes的簡稱K8S(k和s之間有8個字母),是Google團隊發(fā)起并維護的基于Docker的開源容器集群管理系統(tǒng),它不僅支持常見的云平臺,而且支持內(nèi)部數(shù)據(jù)中心。建于 Docker 之上的 Kubernetes 可以構(gòu)建一個容器的調(diào)度服務(wù),其目的是讓用戶透過Kubernetes集群來進行云端容器集群的管理,而無需用戶進行復(fù)雜的設(shè)置工作系統(tǒng)會自動選取合適的工作節(jié)點來執(zhí)行具體的容器集群調(diào)度處理工作。其核心概念是Container Pod(容器倉)。一個Pod是有一組工作于同一物理工作節(jié)點的容器構(gòu)成的。這些組容器擁有相同的網(wǎng)絡(luò)命名空間/IP以及存儲配額,可以根據(jù)實際情況對每一個Pod進行端口映射。此外,Kubernetes工作節(jié)點會由主系統(tǒng)進行管理,節(jié)點包含了能夠運行Docker容器所用到的服務(wù)。

Kubernetes主要功能

  • 基于容器的應(yīng)用部署、維護和滾動升級
  • 負載均衡和服務(wù)發(fā)現(xiàn)
  • 夸機器和夸地區(qū)的集群調(diào)度
  • 自動伸縮
  • 無狀態(tài)服務(wù)和有狀態(tài)服務(wù)
  • 廣泛Volume支持
  • 插件機制保證擴展性

Kubernetes是一個平臺

  • Kubernetes 提供了很多的功能,它可以簡化應(yīng)用程序的工作流,加快開發(fā)速度。通常,一個成功的應(yīng)用編排系統(tǒng)需要有較強的自動化能力,這也是為什么 Kubernetes 被設(shè)計作為構(gòu)建組件和工具的生態(tài)系統(tǒng)平臺,以便更輕松地部署、擴展和管理應(yīng)用程序。
  • 用戶可以使用 Label 以自己的方式組織管理資源,還可以使用 Annotation 來自定義資源的描述信息,比如為管理工具提供狀態(tài)檢查等。
  • 此外,Kubernetes 控制器也是構(gòu)建在跟開發(fā)人員和用戶使用的相同的 API 之上。用戶還可以編寫自己的控制器和調(diào)度器,也可以通過各種插件機制擴展系統(tǒng)的功能。
  • 這種設(shè)計使得可以方便地在 Kubernetes 之上構(gòu)建各種應(yīng)用系統(tǒng)。

Kubernetes 不是什么

Kubernetes 不是一個傳統(tǒng)意義上,包羅萬象的 PaaS (平臺即服務(wù)) 系統(tǒng)。它給用戶預(yù)留了選擇的自由。

  • 不限制支持的應(yīng)用程序類型,它不插手應(yīng)用程序框架, 也不限制支持的語言 (如 Java, Python, Ruby 等),只要應(yīng)用符合 12 因素 即可。Kubernetes 旨在支持極其多樣化的工作負載,包括無狀態(tài)、有狀態(tài)和數(shù)據(jù)處理工作負載。只要應(yīng)用可以在容器中運行,那么它就可以很好的在 Kubernetes 上運行。
  • 不提供內(nèi)置的中間件 (如消息中間件)、數(shù)據(jù)處理框架 (如 Spark)、數(shù)據(jù)庫 (如 mysql) 或集群存儲系統(tǒng) (如 Ceph) 等。這些應(yīng)用直接運行在 Kubernetes 之上。
  • 不提供點擊即部署的服務(wù)市場。
  • 不直接部署代碼,也不會構(gòu)建您的應(yīng)用程序,但您可以在 Kubernetes 之上構(gòu)建需要的持續(xù)集成 (CI) 工作流。
  • 允許用戶選擇自己的日志、監(jiān)控和告警系統(tǒng)。
  • 不提供應(yīng)用程序配置語言或系統(tǒng) (如 jsonnet)。
  • 不提供機器配置、維護、管理或自愈系統(tǒng)。
    另外,已經(jīng)有很多 PaaS 系統(tǒng)運行在 Kubernetes 之上,如 Openshift, DeisEldarion 等。 您也可以構(gòu)建自己的 PaaS 系統(tǒng),或者只使用 Kubernetes 管理您的容器應(yīng)用。
    當(dāng)然了,Kubernetes 不僅僅是一個 “編排系統(tǒng)”,它消除了編排的需要。Kubernetes 通過聲明式的 API 和一系列獨立、可組合的控制器保證了應(yīng)用總是在期望的狀態(tài),而用戶并不需要關(guān)心中間狀態(tài)是如何轉(zhuǎn)換的。這使得整個系統(tǒng)更容易使用,而且更強大、更可靠、更具彈性和可擴展性。

核心組件

Kubernetes 主要由以下幾個核心組件組成:

  • etcd 保存了整個集群的狀態(tài);
  • apiserver 提供了資源操作的唯一入口,并提供認證、授權(quán)、訪問控制、API 注冊和發(fā)現(xiàn)等機制;
  • controller manager 負責(zé)維護集群的狀態(tài),比如故障檢測、自動擴展、滾動更新等;
  • scheduler 負責(zé)資源的調(diào)度,按照預(yù)定的調(diào)度策略將 Pod 調(diào)度到相應(yīng)的機器上;
  • kubelet 負責(zé)維護容器的生命周期,同時也負責(zé) Volume(CVI)和網(wǎng)絡(luò)(CNI)的管理;
  • Container runtime 負責(zé)鏡像管理以及 Pod 和容器的真正運行(CRI);
  • kube-proxy 負責(zé)為 Service 提供 cluster 內(nèi)部的服務(wù)發(fā)現(xiàn)和負載均衡
Kubernetes核心組件

kubernetes版本

Kubernetes 的穩(wěn)定版本在發(fā)布后會繼續(xù)支持 9 個月。

參考文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容