K8s概述
我清晰地記得曾經讀到過的一篇博文,上面是這樣寫的:
“雲端教父AWS雲端架構策略副總裁Adrian Cockcroft曾指出,兩者雖然都是運用容器技術,但最大的差異是,Docker是要解決應用程序開發(Developing)問題,而Kubernetes是要解決更上層的應用程序運維問題(Operation)。開發問題是早期的痛點,但隨着企業越來越依賴容器技術,內部應用越來越多是雲原生應用時,運維會是企業IT的新痛點。”大佬的一番話,明確地指出K8S的生存土壤!
學習一項技術,除了需要明確這項技術的應用場景和發展方向之外,最主要的是理解她的工作原理。
1、什么是K8s
-
k8s是一個docker集群的管理工具
-
k8s是容器的編排工具
Kubernetes(k8s)是Google開源的容器集群管理系統(谷歌內部:Borg),目前已經成為容器編排一個標准。在Docker技術的基礎上,為容器化的應用提供部署運行、資源調度、服務發現和動態伸縮、高可用等一系列完整功能,提高了大規模容器集群管理的便捷性
Kubernetes優勢:
- 容器編排
- 輕量級
- 開源
- 彈性伸縮
- 負載均衡
2、K8s 設計架構
Kubernetes借鑒了Borg的設計理念,比如Pod、Service、Labels和單Pod單IP等。Kubernetes的整體架構跟Borg非常像,如下圖所示:
3、 k8s重要節點描述
master節點
Master 是 Cluster 的大腦,它的主要職責是調度,即決定將應用放在哪里運行。Master 運行 Linux 操作系統,可以是物理機或者虛擬機。為了實現高可用,可以運行多個 Master。
node節點
Node 的職責是運行容器應用。Node 由 Master 管理,Node 負責監控並匯報容器的狀態,並根據 Master 的要求管理容器的生命周期。Node 運行在 Linux 操作系統,可以是物理機或者是虛擬機。
4、 過程原理:
- 用戶通過kubectl提交需要運行的docker container(pod);
- master節點的api server把請求存儲在etcd數據庫中;
- scheduler調度器進行掃描 ,將合適的node節點機器分配出去;
- node節點的kublet找到自己要跑的container,在本機上運行
5、 k8s的核心功能
自愈: 重新啟動失敗的容器,在節點不可用時,替換和重新調度節點上的容器,對用戶定義的健康檢查不響應的容器會被中止,並且在容器准備好服務之前不會把其向客戶端廣播。
彈性伸縮: 通過監控容器的cpu的負載值,如果這個平均高於80%,增加容器的數量,如果這個平均低於10%,減少容器的數量
服務的自動發現和負載均衡: 不需要修改您的應用程序來使用不熟悉的服務發現機制,Kubernetes 為容器提供了自己的 IP 地址和一組容器的單個DNS 名稱,並可以在它們之間進行負載均衡。
滾動升級和一鍵回滾: Kubernetes 逐漸部署對應用程序或其配置的更改,同時監視應用程序運行狀況,以確保它不會同時終止所有實例。 如果出現問題,Kubernetes會為您恢復更改,利用日益增長的部署解決方案的生態系統。
私密配置文件管理: web容器里面,數據庫的賬戶密碼(測試庫密碼)
6、 k8s的歷史
-
2014年 docker容器編排工具,立項
-
2015年7月 發布kubernetes 1.0, 加入cncf基金會 孵化
-
2016年,kubernetes干掉兩個對手,docker swarm,mesos marathon 1.2版
-
2017年 1.5 -1.9
-
2018年 k8s 從cncf基金會 畢業項目1.10 1.11 1.12
-
2019年: 1.13, 1.14 ,1.15,1.16 1.17
-
cncf :cloud native compute foundation 孵化器
kubernetes (k8s): 希臘語 舵手,領航者 容器編排領域,
谷歌15年容器使用經驗,borg容器管理平台,使用golang重構borg,kubernetes
7、 k8s的安裝方式
-
yum安裝 1.5 最容易安裝成功,最適合學習的
-
源碼編譯安裝---難度最大 可以安裝最新版
-
二進制安裝---步驟繁瑣 可以安裝最新版 shell,ansible,saltstack
-
kubeadm 安裝最容易, 網絡 可以安裝最新版
-
minikube 適合開發人員體驗k8s, 網絡
8、 k8s的應用場景
k8s最適合跑微服務項目!
微服務:一個功能一個站點,一個功能就是一個域名
微服務相當於拆業務,將一個網站拆成很多個小網站
微服務的好處: 支持更大的用戶訪問量,業務的穩定性更強,代碼的更新和發布更加快捷
微服務對於運維的影響:工作量變大,因為架構多需要ansible自動化代碼上線.ELK日志分析處理,微服務部署復雜度,維護工作量變大很多 開發環境一套微服務,測試環境一套微服務,預生產環境一套微服務,生產環境一套微服務,工作量倍增,所以需要docker快速部署微服務,docker多的時候用k8s解決docker的管理問題