Kubernetes基礎介紹
簡介
Kubernetes是一個開源的,用于管理云平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單并且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。
Kubernetes一個核心的特點就是能夠自主的管理容器來保證云平臺中的容器按照用戶的期望狀態運行著(比如用戶想讓apache一直運行,用戶不需要關心怎么去做,Kubernetes會自動去監控,然后去重啟,新建,總之,讓apache一直提供服務),管理員可以加載一個微型服務,讓規劃器來找到合適的位置,同時,Kubernetes也系統提升工具以及人性化方面,讓用戶能夠方便的部署自己的應用(就像canary deployments)。
在Kubenetes中,所有的容器均在Pod中運行,一個Pod可以承載一個或者多個相關的容器,在后邊的案例中,同一個Pod中的容器會部署在同一個物理機器上并且能夠共享資源。一個Pod也可以包含O個或者多個磁盤卷組(volumes),這些卷組將會以目錄的形式提供給一個容器,或者被所有Pod中的容器共享,對于用戶創建的每個Pod,系統會自動選擇那個健康并且有足夠容量的機器,然后創建類似容器的容器,當容器創建失敗的時候,容器會被node agent自動的重啟,這個node agent叫kubelet,但是,如果是Pod失敗或者機器,它不會自動的轉移并且啟動,除非用戶定義了 replication controller。
Kubernetes主要由以下幾個核心組件組成
Etcd
保存了整個集群的狀態,所有master的持續狀態都存在etcd的一個實例中。這可以很好地存儲配置數據。因為有watch(觀察者)的支持,各部件協調中的改變可以很快被察覺。Api server
提供了資源操作的唯一入口,并提供認證、授權、訪問控制、API注冊和發現等機制.它提供Kubernetes API (PS:官方 英文)的服務。這個服務試圖通過把所有或者大部分的業務邏輯放到不兩只的部件中從而使其具有CRUD特性。它主要處理REST操作,在etcd中驗證更新這些對象(并最終存儲)。Controller Manager
負責維護集群的狀態,比如故障檢測、自動擴展、滾動更新等.Scheduler
負責資源的調度,按照預定的調度策略將Pod調度到相應的機器上.Kubelet
負責維護容器的生命周期,同時也負責Volume(CVI)和網絡(CNI)的管理.Container Runtime
負責鏡像管理以及Pod和容器的真正運行(CRI.)Kube-Proxy
負責為Service提供cluster內部的服務發現和負載均衡.
Kubernetes 集群架構圖
Kubernetes的特點
- 1、可移植:支持公有云,私有云,混合云,多重云(multi-cloud)
- 2、可擴展:模塊化, 插件化, 可掛載, 可組合
- 3、自動化:自動部署,自動重啟,自動復制,自動伸縮/擴展
Kubernetes的應用范圍
- 多個進程(作為容器運行)協同工作。(Pod)
- 存儲系統掛載
- Distributing secrets
- 應用健康檢測
- 應用實例的復制
- Pod自動伸縮/擴展
- Naming and discovering
- 負載均衡
- 滾動更新
- 資源監控
- 日志訪問
- 調試應用程序
- 提供認證和授權
博客著作權歸本作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。