kubernetes系列教程(一)初探kubernetes功能與組件

1. kubernetes簡介

1.1 kubernetes介紹

Kubernetes是google開源的一套微服務,容器化的編排引擎,是google內部容器十多年實戰沉澱的結晶,已打敗Swarm,Messo成爲容器編排的行業標準。kuberntes內置有不少很是優秀的特性使開發者專一於業務自己,其包含的功能以下:node

  • Service discovery and load balancing,服務發現和負載均衡,經過DNS實現內部解析,service實現負載均衡
  • Storage orchestration,存儲編排,經過plungin的形式支持多種存儲,如本地,nfs,ceph,公有云快存儲等
  • Automated rollouts and rollbacks,自動發佈與回滾,經過匹配當前狀態與目標狀態一致,更新失敗時可回滾
  • Automatic bin packing,自動資源調度,能夠設置pod調度的所需(requests)資源和限制資源(limits)
  • Self-healing,內置的健康檢查策略,自動發現和處理集羣內的異常,更換,需重啓的pod節點
  • Secret and configuration management,密鑰和配置管理,對於敏感信息如密碼,帳號的那個經過secret存儲,應用的配置文件經過configmap存儲,避免將配置文件固定在鏡像中,增長容器編排的靈活性
  • Batch execution,批處理執行,經過job和cronjob提供單次批處理任務和循環計劃任務功能的實現
  • Horizontal scaling,橫向擴展功能,包含有HPA和AS,即應用的基於CPU利用率的彈性伸縮和基於平臺級的彈性伸縮,如自動增長node和刪除nodes節點。

1.2 kubernetes架構

kubernetes總體架構

kubernetes包含兩種角色:master節點和node節點,master節點是集羣的控制管理節點,做爲整個k8s集羣的大腦。nginx

  • 負責集羣全部接入請求(kube-apiserver),在整個集羣的入口;
  • 集羣資源調度(kube-controller-scheduler),經過watch監視pod的建立,負責將pod調度到合適的node節點;
  • 集羣狀態的一致性(kube-controller-manager),經過多種控制器確保集羣的一致性,包含有Node Controller,Replication Controller,Endpoints Controller等;
  • 元數據信息存儲(etcd),數據持久存儲化,存儲集羣中包括node,pod,rc,service等數據;

一般由3或5個節點組成高可用集羣,其中etcd內置的集羣組成,kube-apiserver由haproxy或nginx作負載分發,kube-scheduler和kube-controller-manager內置的選舉機制保障,確保集羣內同一個時刻只有一個leader節點,其餘處於阻塞狀態,防止腦裂。docker

node節點是實際的工做節點,負責集羣負載的實際運行,即pod運行的載體,其一般包含三個組件:Container Runtime,kubelet和kube-proxyapi

  • Container Runtime是容器運行時,負責實現container生命週期管理,如docker,containerd,rktlet;
  • kubelet負責鏡像和pod的管理,
  • kube-proxy是service服務實現的抽閒,負責維護和轉發pod的路由,實現集羣內部和外部網絡的訪問。

其餘組件還包括網絡

  • cloud-controller-manager,用於公有云的接入實現,提供節點管理(node),路由管理,服務管理(LoadBalancer和Ingress),存儲管理(Volume,如雲盤,NAS接入),須要由公有云廠商實現具體的細節,kubernetes提供實現接口的接入,如騰訊雲目前提供CVM的node管理,節點的彈性伸縮(AS),負載均衡的接入(CLB),存儲的管理(CBS和CFS)等產品的集成;
  • DNS組件由kube-dns或coredns實現集羣內的名稱解析;
  • kubernetes-dashboard用於圖形界面管理;
  • kubectl命令行工具進行API交互;
  • 監控系統用於採集node和pod的監控數據,如prometheus,heapster+influxdb+grafana;
  • 日誌採集系統,用於收集容器的業務數據,實現日誌的採集,存儲和展現,實現有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/


返回kubernetes系列教程目錄負載均衡

**若是以爲文章對您有幫助,請訂閱專欄,分享給有須要的朋友吧ide

相關文章
相關標籤/搜索