1. kubernetes簡介
1.1 kubernetes介紹
Kubernetes是google開源的一套微服務,容器化的編排引擎嘱么,是google內(nèi)部容器十多年實戰(zhàn)沉淀的結(jié)晶忿偷,已戰(zhàn)勝Swarm,Messo成為容器編排的行業(yè)標準。kuberntes內(nèi)置有很多非常優(yōu)秀的特性使開發(fā)者專注于業(yè)務本身,其包含的功能如下:
- Service discovery and load balancing怀挠,服務發(fā)現(xiàn)和負載均衡析蝴,通過DNS實現(xiàn)內(nèi)部解析,service實現(xiàn)負載均衡
- Storage orchestration绿淋,存儲編排嫌变,通過plungin的形式支持多種存儲,如本地躬它,nfs,ceph东涡,公有云快存儲等
- Automated rollouts and rollbacks冯吓,自動發(fā)布與回滾,通過匹配當前狀態(tài)與目標狀態(tài)一致疮跑,更新失敗時可回滾
- Automatic bin packing组贺,自動資源調(diào)度,可以設置pod調(diào)度的所需(requests)資源和限制資源(limits)
- Self-healing祖娘,內(nèi)置的健康檢查策略失尖,自動發(fā)現(xiàn)和處理集群內(nèi)的異常,更換渐苏,需重啟的pod節(jié)點
- Secret and configuration management掀潮,密鑰和配置管理,對于敏感信息如密碼琼富,賬號的那個通過secret存儲仪吧,應用的配置文件通過configmap存儲,避免將配置文件固定在鏡像中鞠眉,增加容器編排的靈活性
- Batch execution薯鼠,批處理執(zhí)行,通過job和cronjob提供單次批處理任務和循環(huán)計劃任務功能的實現(xiàn)
- Horizontal scaling,橫向擴展功能械蹋,包含有HPA和AS出皇,即應用的基于CPU利用率的彈性伸縮和基于平臺級的彈性伸縮,如自動增加node和刪除nodes節(jié)點哗戈。
1.2 kubernetes架構(gòu)
kubernetes包含兩種角色:master節(jié)點和node節(jié)點郊艘,master節(jié)點是集群的控制管理節(jié)點,作為整個k8s集群的大腦谱醇。
- 負責集群所有接入請求(kube-apiserver)暇仲,在整個集群的入口;
- 集群資源調(diào)度(kube-controller-scheduler)副渴,通過watch監(jiān)視pod的創(chuàng)建奈附,負責將pod調(diào)度到合適的node節(jié)點;
- 集群狀態(tài)的一致性(kube-controller-manager)煮剧,通過多種控制器確保集群的一致性斥滤,包含有Node Controller将鸵,Replication Controller,Endpoints Controller等佑颇;
- 元數(shù)據(jù)信息存儲(etcd)顶掉,數(shù)據(jù)持久存儲化,存儲集群中包括node挑胸,pod痒筒,rc,service等數(shù)據(jù)茬贵;
通常由3或5個節(jié)點組成高可用集群簿透,其中etcd內(nèi)置的集群組成,kube-apiserver由haproxy或nginx做負載分發(fā)解藻,kube-scheduler和kube-controller-manager內(nèi)置的選舉機制保障老充,確保集群內(nèi)同一個時刻只有一個leader節(jié)點,其他處于阻塞狀態(tài)螟左,防止腦裂啡浊。
node節(jié)點是實際的工作節(jié)點,負責集群負載的實際運行胶背,即pod運行的載體巷嚣,其通常包含三個組件:Container Runtime,kubelet和kube-proxy
- Container Runtime是容器運行時钳吟,負責實現(xiàn)container生命周期管理涂籽,如docker,containerd砸抛,rktlet评雌;
- kubelet負責鏡像和pod的管理,
- kube-proxy是service服務實現(xiàn)的抽閑直焙,負責維護和轉(zhuǎn)發(fā)pod的路由景东,實現(xiàn)集群內(nèi)部和外部網(wǎng)絡的訪問。
其他組件還包括
- cloud-controller-manager奔誓,用于公有云的接入實現(xiàn)斤吐,提供節(jié)點管理(node),路由管理厨喂,服務管理(LoadBalancer和Ingress)和措,存儲管理(Volume,如云盤蜕煌,NAS接入)派阱,需要由公有云廠商實現(xiàn)具體的細節(jié),kubernetes提供實現(xiàn)接口的接入斜纪,如騰訊云目前提供CVM的node管理贫母,節(jié)點的彈性伸縮(AS),負載均衡的接入(CLB),存儲的管理(CBS和CFS)等產(chǎn)品的集成文兑;
- DNS組件由kube-dns或coredns實現(xiàn)集群內(nèi)的名稱解析;
- kubernetes-dashboard用于圖形界面管理腺劣;
- kubectl命令行工具進行API交互绿贞;
- 監(jiān)控系統(tǒng)用于采集node和pod的監(jiān)控數(shù)據(jù),如prometheus,heapster+influxdb+grafana;
- 日志采集系統(tǒng)橘原,用于收集容器的業(yè)務數(shù)據(jù),實現(xiàn)日志的采集籍铁,存儲和展示,實現(xiàn)有Fluentd+ELK(ElasticSearch+Logstash+Kiabana)趾断。
1.3 附錄
1. kubernetes功能介紹寨辩,https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/
2. kubernetes組件介紹https://kubernetes.io/docs/concepts/overview/components/