kubernetes,簡稱K8s,是用8代替8個字元“ubernete”而成的縮寫。是一個開源的,用於管理雲平台中多個主機上的容器化的套用,Kubernetes的目標是讓部署容器化的套用簡單並且高效(powerful),Kubernetes提供了套用部署,規劃,更新,維護的一種機制。
傳統的套用部署方式是通過外掛程式或腳本來安裝套用。這樣做的缺點是套用的運行、配置、管理、所有生存周期將與當前作業系統綁定,這樣做並不利於套用的升級更新/回滾等操作,當然也可以通過創建虛擬機的方式來實現某些功能,但是虛擬機非常重,並不利於可移植性。
新的方式是通過部署容器方式實現,每個容器之間互相隔離,每個容器有自己的檔案系統 ,容器之間進程不會相互影響,能區分計算資源。相對於虛擬機,容器能快速部署,由於容器與底層設施、機器檔案系統解耦的,所以它能在不同雲、不同版本作業系統間進行遷移。
容器占用資源少、部署快,每個套用可以被打包成一個容器鏡像,每個套用與容器間成一對一關係也使容器有更大優勢,使用容器可以在build或release 的階段,為套用創建容器鏡像,因為每個套用不需要與其餘的套用堆疊組合,也不依賴於生產環境基礎結構,這使得從研發到測試、生產能提供一致環境。類似地,容器比虛擬機輕量、更“透明”,這更便於監控和管理。
Kubernetes概述
Kubernetes 特點
- 可移植: 支持公有雲,私有雲,混合雲,多重雲(multi-cloud)
- 可擴展: 模組化,外掛程式化,可掛載,可組合
- 自動化: 自動部署,自動重啟,自動複製,自動伸縮/擴展
Kubernetes 組件
- 1Master 組件
- 1.1kube-apiserver
- 1.2ETCD
- 1.3kube-controller-manager
- 1.4cloud-controller-manager
- 1.5kube-scheduler
- 1.6外掛程式 addons
- 1.6.1DNS
- 1.6.2用戶界面
- 1.6.3容器資源監測
- 1.6.4Cluster-level Logging
- 2.1kubelet
- 2.2kube-proxy
- 2.3docker
- 2.4RKT
- 2.5supervisord
- 2.6fluentd
Master 組件
- 節點(Node)控制器。
- 副本(Replication)控制器:負責維護系統中每個副本中的pod。
- 端點(Endpoints)控制器:填充Endpoints對象(即連線Services&Pods)。
- Service Account和Token控制器:為新的Namespace創建默認帳戶訪問API Token。
- 節點(Node)控制器
- 路由(Route)控制器
- Service控制器
- 卷(Volume)控制器
節點(Node)組件
- 安裝Pod所需的volume。
- 下載Pod的Secrets。
- Pod中運行的 docker(或experimentally,rkt)容器。
- 定期執行容器健康檢查。
- Reports the status of the pod back to the rest of the system, by creating amirror podif necessary.
- Reports the status of the node back to the rest of the system.