一:kubernetes是什麼
Kubernetes一個用於容器集羣的自動化部署、擴容以及運維的開源平臺。經過Kubernetes,你能夠快速有效地響應用戶需求;快速而有預期地部署你的應用;docker
極速地擴展你的應用;無縫對接新應用功能;節省資源,優化硬件資源的使用。爲容器編排管理提供了完整的開源方案。數據庫
二:kubernetes集羣的架構
一個kubernetes集羣都至少由一個Master節點和若干個Node節點組成。
Master節點是集羣控制節點,負責整個集羣的管理和控制,基本上Kubernetes全部的控制命令都是發給它,它來負責具體的執行過程。
因爲Master節點的重要性,它一般會獨佔一個物理機或虛擬機。
Master節點外的其它機器被稱爲Node節點,Node節點是集羣中的工做負載節點,每一個Node都會被Master分配一些工做負載(如Docker容器),當某
個Node宕機時,其工做負載會被Master自動轉移到其餘節點上。api
三:kubernetes集羣的核心組件安全
Master節點組件提供整個集羣的控制面板:
kube-apiserver: 暴露API操做接口,是kubernetes裏面全部資源增,刪,改,查等操做的惟一入口;也是集羣控制的入口。
etcd: 集羣的主數據庫,集羣裏面的全部數據都存儲於此。
kube-controller-manager: kubernetes裏全部資源對象的自動化控制中心, 控制器的大管家。
kube-scheduler: 負責資源調度(Pod調度)的進程,爲新建立的Pod分配Node節點去運行。至關於公交公司的「調度室」。
Node節點組件維持Pods的運行:
kubelet:負責Pod對應容器的建立,啓動,中止等任務; 同時與Master節點密切協做,實現集羣管理的基本功能。
kube-proxy:實現Service的通訊和負載均衡機制的重要組件。
docker: docker引擎,負責本節點的容器建立和管理工做。
網絡
Flannel:是Overlay網絡的一種,也是將源數據包封裝在另外一種網絡包裏面進行路由轉發和通訊,目前已經支持UDP、VXLAN、AWS VPC和GCE路由等數據轉發方式。架構
四:kubernetes集羣中的對象或資源併發
pod:kubernetes中可以被建立,調度和管理的最小部署單元。
label:一組綁定到kubernetes對象上的鍵/值對,同一對象的labels屬性的Key必須獨一無二。
label selector: kubernetes核心的分組機制,經過它客戶端可以識別一組有共同特徵或屬性的kubernetes對象。
serice: pod副本組成的集羣實例。主要由一個IP和一個label selector組成。 實現pod集羣的IP代理和負載均衡。
voLume:相似於虛擬機的磁盤。Pod中能被多個容器訪問的共享目錄。
namespaces:用於多租戶的資源隔離。
replicaSet:決定一個pod有多少同時容許的副本,並保證這些副本的指望狀態與當前狀態保持一致。
Deployment: replica set的升級版
DaemonSet: 讓全部Node節點運行同一個pod
Job: 相似於Quartz
statefulSet: pod狀態保留負載均衡
五:kubernetes特性運維
1.自我修復優化
在節點故障時從新啓動失敗的容器,替換和從新部署,保證預期的副本數量;
殺死健康檢查失敗的容器,而且健康檢查失敗的容器,而且在未準備好以前不會處理客戶端請求,確保線上服務不中斷。
2.彈性伸縮
使用命令、UI或者基於CPU使用狀況自動快速擴容和縮容應用程序實例,保證應用業務高峯併發時的高可用性;業務低峯時回收資源,以最小成本運行服務。
3.自動部署和回滾
K8S採用滾動更新策略更新應用,一次更新一個Pod,而不是同時刪除全部Pod,若是更新過程當中出現問題,將回滾更改,確保升級不受影響業務。
4.服務發現和負載均衡
K8S爲多個容器提供一個統一訪問入口(內部IP地址和一個DNS名稱),而且負載均衡關聯的全部容器,使得用戶無需考慮容器IP問題。
5.機密和配置管理
管理機密數據和應用程序配置,而不須要把敏感數據暴露在鏡像裏,提升敏感數據安全性。並能夠將一些經常使用的配置存儲在K8S中,方便應用程序使用。
6.存儲編排
掛載外部存儲系統,不管是來自本地存儲,公有云(如AWS),仍是網絡存儲(如NFS、GlusterFS、Ceph)都做爲集羣資源的一部分使用,極大提升存儲使用靈活性。
7.批處理
提供一次性任務,定時任務;知足批量數據處理和分析的場景。