一、kubernetes 概述
1、kubernetes 基本介紹
kubernetes,簡稱 K8s,是用 8 代替 8 個字符“ubernete”而成的縮寫。是一個開源 的,用于管理云平臺中多個主機上的容器化的應用,Kubernetes 的目標是讓部署容器化的 應用簡單并且高效(powerful),Kubernetes 提供了應用部署,規劃,更新,維護的一種 機制。
傳統的應用部署方式是通過插件或腳本來安裝應用。這樣做的缺點是應用的運行、配 置、管理、所有生存周期將與當前操作系統綁定,這樣做并不利于應用的升級更新/回滾等 操作,當然也可以通過創建虛擬機的方式來實現某些功能,但是虛擬機非常重,并不利于 可移植性。
新的方式是通過部署容器方式實現,每個容器之間互相隔離,每個容器有自己的文件 系統 ,容器之間進程不會相互影響,能區分計算資源。相對于虛擬機,容器能快速部署, 由于容器與底層設施、機器文件系統解耦的,所以它能在不同云、不同版本操作系統間進 行遷移。
容器占用資源少、部署快,每個應用可以被打包成一個容器鏡像,每個應用與容器間 成一對一關系也使容器有更大優勢,使用容器可以在 build 或 release 的階段,為應用創 建容器鏡像,因為每個應用不需要與其余的應用堆棧組合,也不依賴于生產環境基礎結構, 這使得從研發到測試、生產能提供一致環境。類似地,容器比虛擬機輕量、更“透明”, 這更便于監控和管理。
Kubernetes 是 Google 開源的一個容器編排引擎,它支持自動化部署、大規??缮炜s、 應用容器化管理。在生產環境中部署一個應用程序時,通常要部署該應用的多個實例以便 對應用請求進行負載均衡。
在 Kubernetes 中,我們可以創建多個容器,每個容器里面運行一個應用實例,然后通 過內置的負載均衡策略,實現對這一組應用實例的管理、發現、訪問,而這些細節都不需 要運維人員去進行復雜的手工配置和處理。
2、kubernetes 功能和架構
2.1 概述
Kubernetes 是一個輕便的和可擴展的開源平臺,用于管理容器化應用和服務。通過 Kubernetes 能夠進行應用的自動化部署和擴縮容。在 Kubernetes 中,會將組成應用的容 器組合成一個邏輯單元以更易管理和發現。Kubernetes 積累了作為 Google 生產環境運行 工作負載 15 年的經驗,并吸收了來自于社區的最佳想法和實踐。
2.2 K8s 功能:
(1)自動裝箱
基于容器對應用運行環境的資源配置要求自動部署應用容器
(2)自我修復(自愈能力)
當容器失敗時,會對容器進行重啟 當所部署的 Node 節點有問題時,會對容器進行重新部署和重新調度當容器未通過監控檢查時,會關閉此容器直到容器正常運行時,才會對外提供服務
(3)水平擴展
通過簡單的命令、用戶 UI 界面或基于 CPU 等資源使用情況,對應用容器進行規模擴大 或規模剪裁
(3)服務發現
用戶不需使用額外的服務發現機制,就能夠基于 Kubernetes 自身能力實現服務發現和 負載均衡
(4)滾動更新
可以根據應用的變化,對應用容器運行的應用,進行一次性或批量式更新
(5)版本回退
可以根據應用部署情況,對應用容器運行的應用,進行歷史版本即時回退
(6)密鑰和配置管理
在不需要重新構建鏡像的情況下,可以部署和更新密鑰和應用配置,類似熱部署。
(7)存儲編排
自動實現存儲系統掛載及應用,特別對有狀態應用實現數據持久化非常重要
存儲系統可以來自于本地目錄、網絡存儲(NFS、Gluster、Ceph等)、公共云存儲服務
(8)批處理
提供一次性任務,定時任務;滿足批量數據處理和分析的場景
2.3 應用部署架構分類
(1) 無中心節點架構
GlusterFS
(2) 有中心節點架構
HDFS
K8S
2.4 k8s 集群架構節點角色功能
- Master Node
k8s 集群控制節點,對集群進行調度管理,接受集群外用戶去集群操作請求; Master Node 由 API Server、Scheduler、ClusterState Store(ETCD 數據庫)和 Controller MangerServer 所組成 - Worker Node
集群工作節點,運行用戶業務應用容器; Worker Node 包含 kubelet、kube proxy 和 ContainerRuntime;