天天看點

Kubernetes基本介紹和功能架構

作者:Java全棧行動派

1、kubernetes 概述

kubernetes,簡稱 K8s,是用 8 代替 8 個字元“ubernete”而成的縮寫。是一個開源 的,用于管理雲平台中多個主機上的容器化的應用,Kubernetes 的目标是讓部署容器化的 應用簡單并且高效(powerful),Kubernetes 提供了應用部署,規劃,更新,維護的一種 機制。

傳統的應用部署方式是通過插件或腳本來安裝應用。這樣做的缺點是應用的運作、配 置、管理、所有生存周期将與目前作業系統綁定,這樣做并不利于應用的更新更新/復原等 操作,當然也可以通過建立虛拟機的方式來實作某些功能,但是虛拟機非常重,并不利于 可移植性。

新的方式是通過部署容器方式實作,每個容器之間互相隔離,每個容器有自己的檔案 系統 ,容器之間程序不會互相影響,能區分計算資源。相對于虛拟機,容器能快速部署, 由于容器與底層設施、機器檔案系統解耦的,是以它能在不同雲、不同版本作業系統間進 行遷移。

容器占用資源少、部署快,每個應用可以被打包成一個容器鏡像,每個應用與容器間 成一對一關系也使容器有更大優勢,使用容器可以在 build 或 release 的階段,為應用創 建容器鏡像,因為每個應用不需要與其餘的應用堆棧組合,也不依賴于生産環境基礎結構, 這使得從研發到測試、生産能提供一緻環境。類似地,容器比虛拟機輕量、更“透明”, 這更便于監控和管理。

Kubernetes 是 Google 開源的一個容器編排引擎,它支援自動化部署、大規模可伸縮、 應用容器化管理。在生産環境中部署一個應用程式時,通常要部署該應用的多個執行個體以便 對應用請求進行負載均衡。

在 Kubernetes 中,我們可以建立多個容器,每個容器裡面運作一個應用執行個體,然後通 過内置的負載均衡政策,實作對這一組應用執行個體的管理、發現、通路,而這些細節都不需 要運維人員去進行複雜的手工配置和處理。

2、kubernetes 功能和架構

2.1、概述

Kubernetes 是一個輕便的和可擴充的開源平台,用于管理容器化應用和服務。通過 Kubernetes 能夠進行應用的自動化部署和擴縮容。在 Kubernetes 中,會将組成應用的容 器組合成一個邏輯單元以更易管理和發現。Kubernetes 積累了作為 Google 生産環境運作 工作負載 15 年的經驗,并吸收了來自于社群的最佳想法和實踐。

2.2、K8s 功能

  • 自動裝箱

基于容器對應用運作環境的資源配置要求自動部署應用容器

  • 自我修複(自愈能力)

當容器失敗時,會對容器進行重新開機

當所部署的 Node 節點有問題時,會對容器進行重新部署和重新排程。當容器未通過監控檢查時,會關閉此容器直到容器正常運作時,才會對外提供服務

  • 水準擴充

通過簡單的指令、使用者 UI 界面或基于 CPU 等資源使用情況,對應用容器進行規模擴大 或規模剪裁

  • 服務發現

使用者不需使用額外的服務發現機制,就能夠基于 Kubernetes 自身能力實作服務發現和 負載均衡

  • 滾動更新

可以根據應用的變化,對應用容器運作的應用,進行一次性或批量式更新

  • 版本回退

可以根據應用部署情況,對應用容器運作的應用,進行曆史版本即時回退

  • 密鑰和配置管理

在不需要重新建構鏡像的情況下,可以部署和更新密鑰和應用配置,類似熱部署。

  • 存儲編排

自動實作存儲系統挂載及應用,特别對有狀态應用實作資料持久化非常重要

存儲系統可以來自于本地目錄、網絡存儲(NFS、Gluster、Ceph 等)、公共雲存儲服務

  • 批處理
提供一次性任務,定時任務;滿足批量資料處理和分析的場景
           

2.3、k8s元件

Kubernetes基本介紹和功能架構

叢集中總體分Master節點和Worker節點

Master節點對應上圖控制平面元件(Control Plane Components)相當于組織部長,負責排程配置設定,不幹具體的事。

Worker節點對應Node,就是實際幹活的人

2.4、master節點下元件

  • kube-apiserver

kube-apiserver是整個叢集的入口,他就像個網關,要通路叢集中的元件,必須通過他。

  • etcd

一緻且高度可用的鍵值存儲,用作 Kubernetes 的所有叢集資料的背景資料庫。

  • kube-scheduler

負責監視新建立的、未指定運作節點(node)的 Pods, 并選擇節點來讓 Pod 在上面運作。

  • kube-controller-manager

處理叢集中正常背景任務,一個資源對應一個控制器

2.5、worker節點下元件

  • kubelet

kubelet 會在叢集中每個節點(node)上運作。 它保證容器(containers)都運作在 Pod 中。kubelet 接收一組通過各類機制提供給它的 PodSpecs, 確定這些 PodSpecs 中描述的容器處于運作狀态且健康。 kubelet 不會管理不是由 Kubernetes 建立的容器。

說白了就是節點的控制器,負責管理本節點容器。

  • kube-proxy

kube-proxy 是叢集中每個節點(node)上所運作的網絡代理, 實作 Kubernetes 服務(Service) 概念的一部分。kube-proxy 維護節點上的一些網絡規則, 這些網絡規則會允許從叢集内部或外部的網絡會話與 Pod 進行網絡通信。

至此,我相信朋友們對kubernetes有了一個大緻的了解,下篇我們就開始搭建kubernetes叢集

繼續閱讀