Kubernetes介紹與集群架構(gòu)
一、認識容器編排工具
- docker machine
- 主要用于準(zhǔn)備docker host
- 現(xiàn)已棄用
- 建議使用docker desktop
- docker compose
- Compose 是一個用于定義和運行多容器 Docker 應(yīng)用程序的工具。
- 使用 Compose,您可以使用 YAML 文件來配置應(yīng)用程序的服務(wù)。
- 使用一個命令,您可以從您的配置中創(chuàng)建并啟動所有服務(wù)。
- docker swarm
- 內(nèi)置于docker引擎中
- 對docker引擎進行集群級別的管理
- 分布式設(shè)計,可以讓集群資源更多,管理更多的主機
- 聲明式服務(wù)模型,通過YAML文件定義應(yīng)用程序服務(wù)所需狀態(tài)
- 服務(wù)規(guī)模可擴大可縮小,保持用戶期望狀態(tài)
- 服務(wù)發(fā)現(xiàn)
- 負載均衡
- 滾動更新等
- docker service
- docker stack
- kubernetes
- Kubernetes作為一個容器集群管理系統(tǒng),用于管理容器云平臺中多個主機上的容器應(yīng)用,Kubernetes的目標(biāo)是讓部署容器化的應(yīng)用變得簡單且高效,所以 Kubernetes 提供了應(yīng)用部署,規(guī)劃,更新,維護的一整套完整的機制。
- Kubernetes沒有固定要求容器的格式,但是Kubernetes使用它自己的API和命令行接口來進行容器編排。
- 除了Docker容器之外,Kubernetes還支持其他多種容器,如 Containerd、rkt、CoreOS 等。
- Kubernetes 是自成體系的管理工具,可以實現(xiàn)容器調(diào)度,資源管理,服務(wù)發(fā)現(xiàn),健康檢查,自動伸縮,更新升級等,也可以在應(yīng)用模版配置中指定副本數(shù)量,服務(wù)要求(IO 優(yōu)先;性能優(yōu)先等),資源使用區(qū)間,標(biāo)簽(Labels等)來匹配特定要求達到預(yù)期狀態(tài)等,這些特征便足以征服開發(fā)者,再加上 Kubernetes 有一個非?;钴S的社區(qū)。它為用戶提供了更多的選擇以方便用戶擴展編排容器來滿足他們的需求。但是由于 Kubernetes 使用了自己的 API 接口,所以命令系統(tǒng)是另外一套系統(tǒng),這也是 kubernetes 應(yīng)用門檻比較高的原因所在。
- mesos+marathon
- Apache Mesos 是一個分布式系統(tǒng)內(nèi)核的開源集群管理器,Apache Mesos 的出現(xiàn)要遠早于 Docker Swarm 和 Kubernetes。
- 其結(jié)合Marathon 這個基于容器的應(yīng)用程序的編排框架,它為 Docker Swarm 和 Kubernetes 提供了一個有效的替代方案。
- Mesos 能夠在同樣的集群機器上運行多種分布式系統(tǒng)類型,可以更加動態(tài)高效的共享資源。
- Messos 也提供服務(wù)失敗檢查,服務(wù)發(fā)布,服務(wù)跟蹤,服務(wù)監(jiān)控,資源管理和資源共享。
- Messos 可以擴展伸縮到數(shù)千個節(jié)點。
- 如果你擁有很多的服務(wù)器而且想構(gòu)建一個大的集群的時候,Mesos 就派上用場了。
- 很多的現(xiàn)代化可擴展性的數(shù)據(jù)處理應(yīng)用都可以在 Mesos 上運行,包括大數(shù)據(jù)框架 Hadoop、Kafka、Spark。
- 但是大而全,往往就是對應(yīng)的復(fù)雜和困難,這一點體現(xiàn)在 Messos 上是完全正確,與Docker 和 Docker Swarm 使用同一種 API 不同的,Mesos 和 Marathon 都有自己的 API,這使得它們比其他編排系統(tǒng)更加的復(fù)雜。Apache Mesos 是混合環(huán)境的完美編配工具,由于它包含容器和非容器的應(yīng)用,雖然 Messos 很穩(wěn)定,但是它的使用戶快速學(xué)習(xí)應(yīng)用變得更加困難,這也是在應(yīng)用和部署場景下難于推廣的原因之一。
分布式資源管理框架 | 主要特點 | 備注 |
---|---|---|
Apache Mesos | 功能強大,但系統(tǒng)復(fù)雜不易用 | 2019年Twitter宣布棄用 |
Docker Swarm | 集成在docker引擎中,不需要單獨安裝,但功能較少 | 2019年阿里云宣布棄用 |
Google Kubernetes | 功能強大,但學(xué)習(xí)成本與管理成本高 | 目前沒有替代者,多領(lǐng)域應(yīng)用 |
二、認識kubernetes
2.1 kubernetes含義、起源、歸屬
2.1.1 含義
希臘語:舵手、飛行員
2.1.2 起源
-
源自于谷歌Borg
-
使用golang語言開發(fā)
-
簡稱為k8s
2.1.3 歸屬
現(xiàn)歸屬于CNCF
-
云原生(CloudNative)計算基金會
-
是一個開源軟件基金會,致力于使云計算普遍性和持續(xù)性
-
官方:http://www.cncf.io
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-L0XqwQge-1691633580010)(kubernetes介紹與集群架構(gòu).assets/image-20220324160124674.png)]
2.2 kubernetes版本
- 2014年9月第一個正式版本
- 2015年7月1.0版本正式發(fā)布
- 現(xiàn)在穩(wěn)定版本為1.23
- 主要貢獻者:Google,Redhat,Microsoft,IBM,Intel
- 代碼托管github:https://github.com/kubernetes/
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-HQDav7ue-1691633580012)(kubernetes介紹與集群架構(gòu).assets/1557046658333.png)]
2.3 Kubernetes用戶
- 2017年docker官方宣布原生支持kubernetes
- RedHat公司 PaaS平臺 OpenShift核心是kubernetes
- Rancher平臺核心是kubernetes
- 現(xiàn)國內(nèi)大多數(shù)公司都可使用kubernetes進行傳統(tǒng)IT服務(wù)轉(zhuǎn)換,以實現(xiàn)高效管理等。
2.4 Kubernetes網(wǎng)址
- 官方網(wǎng)址
https://kubernetes.io/
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-rpDcPapc-1691633580013)(kubernetes介紹與集群架構(gòu).assets/1557046832480.png)]
https://kubernetes.io/zh/
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CojzCz5r-1691633580014)(kubernetes介紹與集群架構(gòu).assets/image-20220324145026425.png)]
- 中文社區(qū)
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-H5IMR0uj-1691633580015)(kubernetes介紹與集群架構(gòu).assets/image-20220324145137982.png)]
三、kubernetes架構(gòu)
3.1 軟件架構(gòu)說明
-
有中心節(jié)點分布式架構(gòu)
- hadoop集群
- ceph集群
-
無中心節(jié)點分布式架構(gòu)
- glusterFS
-
kubernetes是具有中心節(jié)點的分布式架構(gòu),也就是說有master管理節(jié)點
- Master Node
- 中心節(jié)點
- manager
- 簡單叫法
- master節(jié)點
- Minion Node
- 工作節(jié)點
- worker
- 簡單叫點
- node節(jié)點
- worker節(jié)點
- Master Node
3.2 Kubernetes架構(gòu)圖示圖
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WUAau0oa-1691633580016)(kubernetes介紹與集群架構(gòu).assets/1557048978763.png)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mJFiJkkI-1691633580017)(kubernetes介紹與集群架構(gòu).assets/2)]
四、Kubernetes集群節(jié)點組件
4.1 Master節(jié)點組件
master節(jié)點是集群管理中心,它的組件可以在集群內(nèi)任意節(jié)點運行,但是為了方便管理所以會在一臺主機上運行Master所有組件,并且不在此主機上運行用戶容器
Master組件包括:
- kube-apiserver
? 用于暴露kubernetes API,任何的資源請求/調(diào)用操作都是通過kube-apiserver提供的接口進行。
- kube-controller-manager
? 控制器管理器,用于對控制器進行管理,它們是集群中處理常規(guī)任務(wù)的后臺線程。
-
kube-scheduler
監(jiān)視新創(chuàng)建沒有分配到Node的Pod,為Pod選擇一個Node運行。
-
ETCD
是kubernetes提供默認的存儲系統(tǒng),保存所有集群數(shù)據(jù)。
4.2 Node節(jié)點組件介紹
node節(jié)點用于運行以及維護Pod, 管理volume(CVI)和網(wǎng)絡(luò)(CNI),維護pod及service等信息
Node組件包括:
- kubelet
- 負責(zé)維護容器的生命周期(創(chuàng)建pod,銷毀pod),同時也負責(zé)Volume(CVI)和網(wǎng)絡(luò)(CNI)的管理
- kube-proxy
- 通過在主機上維護網(wǎng)絡(luò)規(guī)則并執(zhí)行連接轉(zhuǎn)發(fā)來實現(xiàn)service(iptables/ipvs)
- 隨時與apiserver通信,把Service或Pod改變提交給apiserver,保存至etcd(可做高可用集群)中,負責(zé)service實現(xiàn),從內(nèi)部pod至service和從外部node到service訪問。
- Container Runtime
- 容器運行時(Container Runtime)
- 負責(zé)鏡像管理以及Pod和容器的真正運行
- 支持docker/containerd/Rkt/Pouch/Kata等多種運行時
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CTB2OTGz-1691633580018)(kubernetes介紹與集群架構(gòu).assets/k8s架構(gòu)圖2.png)]文章來源:http://www.zghlxwxcb.cn/news/detail-640597.html
4.3 Add-ons介紹
Add-ons(附件)使功能更豐富,沒它并不影響實際使用,可以與主體程序很好結(jié)合起來使用文章來源地址http://www.zghlxwxcb.cn/news/detail-640597.html
- coredns/kube-dns: 負責(zé)為整個集群提供DNS服務(wù)
- Ingress Controller 為服務(wù)提供集群外部訪問
- Heapster/Metries-server 提供集群資源監(jiān)控(監(jiān)控容器可以使用prometheus)
- Dashboard 提供集群GUI
- Federation 提供跨可用區(qū)的集群
- Fluentd-elasticsearch 提供集群日志采集、存儲與查詢
到了這里,關(guān)于一、Kubernetes介紹與集群架構(gòu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!