官網(wǎng)主頁:?Kubernetes
什么是k8s
Kubernetes?也稱為 K8s,是用于自動部署、擴縮和管理容器化應用程序的開源系統(tǒng)。
它將組成應用程序的容器組合成邏輯單元,以便于管理和服務發(fā)現(xiàn)。Kubernetes 源自Google 15 年生產(chǎn)環(huán)境的運維經(jīng)驗,同時凝聚了社區(qū)的最佳創(chuàng)意和實踐。
永不過時
Kubernetes 是開源系統(tǒng),可以自由地部署在企業(yè)內(nèi)部,私有云、混合云或公有云,讓您輕松地做出合適的選擇。
請訪問下載部分下載 Kubernetes。
kubernetes的特性
自動化上線和回滾
?Kubernetes 會分步驟地將針對應用或其配置的更改上線,同時監(jiān)視應用程序運行狀況以確保你不會同時終止所有實例。如果出現(xiàn)問題,Kubernetes 會為你回滾所作更改。你應該充分利用不斷成長的部署方案生態(tài)系統(tǒng)。
服務發(fā)現(xiàn)與負載均衡
?無需修改你的應用程序去使用陌生的服務發(fā)現(xiàn)機制。Kubernetes 為容器提供了自己的 IP 地址和一個 DNS 名稱,并且可以在它們之間實現(xiàn)負載均衡。
自我修復
?重新啟動失敗的容器,在節(jié)點死亡時替換并重新調(diào)度容器, 殺死不響應用戶定義的健康檢查的容器, 并且在它們準備好服務之前不會將它們公布給客戶端。
存儲編排
?自動掛載所選存儲系統(tǒng),包括本地存儲、公有云提供商所提供的存儲或者諸如 iSCSI 或 NFS 這類網(wǎng)絡存儲系統(tǒng)。
Secret 和配置管理
部署和更新 Secret 和應用程序的配置而不必重新構建容器鏡像, 且不必將軟件堆棧配置中的秘密信息暴露出來。
自動裝箱
根據(jù)資源需求和其他限制自動放置容器,同時避免影響可用性。 將關鍵性的和盡力而為性質的工作負載進行混合放置,以提高資源利用率并節(jié)省更多資源。?
批量執(zhí)行
除了服務之外,Kubernetes 還可以管理你的批處理和 CI 工作負載,在期望時替換掉失效的容器。?
IPv4/IPv6 雙協(xié)議棧
為 Pod 和 Service 分配 IPv4 和 IPv6 地址
?水平擴縮
?使用一個簡單的命令、一個 UI 或基于 CPU 使用情況自動對應用程序進行擴縮。
為擴展性設計
?無需更改上游源碼即可擴展你的 Kubernetes 集群。
kubernetes的關鍵組件:
Kubernetes節(jié)點有運行應用容器必備的服務,而這些都是受Master的控制。每個節(jié)點上都要運行Docker。Docker來負責所有具體的映像下載和容器運行。
- Kubernetes主要由以下幾個核心組件組成:
-
etcd:保存了整個集群的狀態(tài);
-
apiserver:提供了資源操作的唯一入口,并提供認證、授權、訪問控制、API注冊和發(fā)現(xiàn)等機制;
-
controller manager:負責維護集群的狀態(tài),比如故障檢測、自動擴展、滾動更新等;
-
scheduler:負責資源的調(diào)度,按照預定的調(diào)度策略將Pod調(diào)度到相應的機器上;
-
kubelet:負責維護容器的生命周期,同時也負責Volume(CVI)和網(wǎng)絡(CNI)的管理;
-
Container runtime:負責鏡像管理以及Pod和容器的真正運行(CRI);
-
kube-proxy:負責為Service提供cluster內(nèi)部的服務發(fā)現(xiàn)和負載均衡;
除了核心組件,還有一些推薦的Add-ons: -
kube-dns:負責為整個集群提供DNS服務
-
Ingress Controller:為服務提供外網(wǎng)入口
-
Heapster:提供資源監(jiān)控
-
Dashboard:提供GUI
-
Federation:提供跨可用區(qū)的集群
-
Fluentd-elasticsearch:提供集群日志采集、存儲與查詢
kubernetes的工作原理:
Kubernetes的工作原理包括以下幾個核心組件:
- Master:主組件提供群集的控制平面。主組件對集群做出全局決策(例如,調(diào)度),并且它們檢測并響應集群事件(例如,在部署的副本字段不滿足時啟動新的pod)。主組件可以在群集中的任何計算機上運行。但是,為簡單起見,設置腳本通常會在同一臺計算機上啟動所有主組件,并且不在此計算機上運行用戶容器。
- kubectl:這是集群管理命令行工具集,通過客戶端的kubectl命令集操作,API Server響應對應的命令結果,從而達到對kubernetes集群的管理。
- kube-apiserver:這是資源操作入口,提供了資源對象的唯一操作入口,其他所有組件都必須通過它提供的API來操作資源數(shù)據(jù),只有API Server與存儲通信,其他模塊通過API Server訪問集群狀態(tài)。對相關的資源數(shù)據(jù)“全量查詢”+“變化監(jiān)聽”,實時完成相關的業(yè)務功能。
此外,Kubernetes還具有以下功能特性:
- 副本與彈性伸縮:容器如果部署無狀態(tài)服務,一個好處就是可以多副本,并且可以彈性伸縮。在Kubernetes里面,副本數(shù)目是以pod為單位的,由controller進程控制,可以通過創(chuàng)建一個Deployment來控制副本數(shù)。Kubernetes也可以實現(xiàn)autoscaling。有一個組件Horizontal Pod Autoscaling,可以通過監(jiān)控CPU的使用情況動態(tài)調(diào)整Pod的數(shù)量。
- 編排:為了能夠通過編排文件一鍵創(chuàng)建整個應用,需要有編排功能。Kubernetes的編排是基于yml文件。
- 服務發(fā)現(xiàn)與DNS:容器平臺的一個重要的功能是服務發(fā)現(xiàn),也即當容器的地址改變的時候,可以自動進行服務之間的關聯(lián)。Kubernetes的DNS組件是通過skyDNS實現(xiàn)的,負載均衡是通過將DNS轉化為VIP,有個內(nèi)置的負載均衡器kube-proxy來完成這件事情。
kubernetes中的重要概念:
Kubernetes API:
????????Kubernetes API是Kubernetes的核心接口,它提供了一組RESTful API,用于與Kubernetes集群進行交互。通過這些API,用戶可以創(chuàng)建、查詢、更新和刪除Kubernetes中的各種資源,如Pod、Service、Deployment等。
Pod:
????????Pod是Kubernetes中的基本運行單元,它包含了運行應用程序的容器和相關的配置信息。一個Pod中可以運行一個或多個容器,這些容器共享相同的網(wǎng)絡命名空間、存儲卷和IPC。
ReplicaSet:
????????ReplicaSet是Kubernetes中的一種控制器,它用于管理Pod的復制和調(diào)度。通過創(chuàng)建ReplicaSet,用戶可以指定Pod的復制數(shù)量,并確保這些Pod始終在集群中運行。
Horizontal Pod Autoscaler(HPA):
????????HPA是Kubernetes中的一種擴展機制,它可以根據(jù)應用程序的資源使用情況自動調(diào)整Pod的數(shù)量。HPA可以根據(jù)CPU或內(nèi)存的使用率來決定是否需要增加或減少Pod的數(shù)量。
Vertical Pod Autoscaler(VPA):
????????VPA是Kubernetes中的另一種擴展機制,它可以根據(jù)應用程序的資源使用情況自動調(diào)整Pod的資源分配。VPA可以根據(jù)CPU或內(nèi)存的使用率來決定是否需要增加或減少Pod的資源分配。
Volume:
????????Volume是Kubernetes中用于提供容器存儲的抽象概念,它提供了一種將持久化存儲映射到容器的方法。Volume可以用于存儲應用程序的數(shù)據(jù)、日志和其他持久化數(shù)據(jù)。
Persistent Volume(PV):
????????PV是Kubernetes中的一種存儲資源,它提供了容器持久化存儲的能力。PV可以被多個Pod共享,并且可以在Pod的生命周期之外保持數(shù)據(jù)。PV通過聲明Persistent Volume Claim(PVC)來申請和使用。
Kubernetes的主要工作原理包括以下幾個方面:
- 容器編排:Kubernetes可以自動在多個節(jié)點上運行容器,提供了應用部署、規(guī)劃、更新、維護的一種機制。
- 自我修復:Kubernetes可以通過監(jiān)控容器的運行狀態(tài),自動重啟失效的容器,或者重新調(diào)度容器的運行位置。
- 自動擴展:Kubernetes可以根據(jù)應用程序的運行情況,自動擴展或縮減容器的數(shù)量,以滿足不斷變化的需求。
- 負載均衡:Kubernetes可以自動分配網(wǎng)絡流量,以確保應用程序能夠均勻地承受負載。
- 存儲管理:Kubernetes可以自動管理存儲卷,為應用程序提供穩(wěn)定的數(shù)據(jù)存儲。
- API和服務網(wǎng)格:Kubernetes提供了一組強大的API,可以用來管理和查詢Kubernetes集群,同時也提供了一個服務網(wǎng)格,可以用來監(jiān)控和調(diào)整網(wǎng)絡流量。
容器編排:
Kubernetes的容器編排主要通過以下步驟完成:
- 用戶通過Kubernetes API提交Pod規(guī)格,Kubernetes控制器將規(guī)格轉換為ReplicaSet對象。
- ReplicaSet會根據(jù)需要創(chuàng)建或刪除Pod副本的數(shù)量。這主要依賴于對象的規(guī)模設置,即期望的Pod數(shù)量。
- 在調(diào)度器中,Kubernetes會根據(jù)可用資源、Pod親和性或反親和性規(guī)則、存儲要求等,選擇最適合運行Pod的節(jié)點。
- 節(jié)點接受Pod并將其啟動在適當?shù)奈恢蒙稀?/li>
- 如果Pod由于某種原因失敗,則Kubernetes會自動重啟它。如果需要增加或減少Pod的數(shù)量,Kubernetes會自動擴展或縮減ReplicaSet。
- 在運行過程中,Kubernetes還會根據(jù)實時的性能數(shù)據(jù),自動調(diào)整Pod副本的數(shù)量,以滿足實際負載的需求。
通過這些步驟,Kubernetes能夠自動、高效地完成容器編排,為應用程序提供穩(wěn)定、可靠的運行環(huán)境。
自我修復
?Kubernetes的自我修復主要通過以下幾種方式實現(xiàn):
- 容器失敗自動重啟:當一個容器因故障或其他原因停止運行時,Kubernetes會根據(jù)定義好的ReplicaSet或Pod規(guī)格,自動重啟該容器。
- 替換失效容器:如果一個容器持續(xù)出現(xiàn)故障,Kubernetes可以通過創(chuàng)建新的容器來替換它。這可以通過設置Pod的重啟策略或使用ReplicaSet來實現(xiàn)。
- 重新調(diào)度:當一個節(jié)點出現(xiàn)故障時,Kubernetes會將該節(jié)點上的所有容器重新調(diào)度到其他可用的節(jié)點上,確保應用程序在節(jié)點故障的情況下仍然可以繼續(xù)運行。
- 自動擴展或縮減:根據(jù)應用程序的運行情況,Kubernetes可以自動擴展或縮減容器的數(shù)量,以滿足不斷變化的需求。這可以通過設置Horizontal Pod Autoscaler(HPA)或Vertical Pod Autoscaler(VPA)來實現(xiàn)。
此外,Kubernetes還提供了多種自我修復的機制,如健康檢查、探針等,以確保應用程序在運行過程中始終處于健康狀態(tài)。這些機制可以幫助運維人員及時發(fā)現(xiàn)和解決問題,從而提高應用程序的穩(wěn)定性和可靠性。
自動擴展
Kubernetes的自動擴展主要通過Horizontal Pod Autoscaler(HPA)實現(xiàn)。HPA是Kubernetes的一個核心組件,用于根據(jù)應用程序的資源使用情況自動調(diào)整Pod的數(shù)量。
?HPA的工作流程如下:
- HPA定期檢測目標Pod的資源性能指標,通常是CPU使用率。
- 如果檢測到的資源使用率超過設定的擴縮容閾值,HPA會創(chuàng)建一個新的Pod副本。
- 如果檢測到的資源使用率下降到縮容閾值以下,HPA會銷毀一個Pod副本。
在這個過程中,HPA可以基于實時性能數(shù)據(jù)進行動態(tài)調(diào)整,以滿足不斷變化的需求。此外,HPA還可以根據(jù)不同的策略進行擴展,如基于固定數(shù)量的Pod副本進行擴展,或者根據(jù)自定義的函數(shù)進行擴展。
除了HPA,Kubernetes還提供了垂直自動擴展(VPA)和自定義資源自動擴展(CRA)等擴展機制,以滿足不同場景的需求。這些擴展機制共同構成了Kubernetes強大的自動擴展能力,為應用程序提供了穩(wěn)定、高效的運行環(huán)境。
負載均衡
Kubernetes的負載均衡主要通過以下組件實現(xiàn):
- Service:Service是Kubernetes的核心組件之一,它定義了一組Pod的訪問方式。Service將來自客戶端的流量路由到后端的Pod副本中。
- 負載均衡器:Kubernetes的負載均衡器將流量均衡地分配到后端的Pod副本中。它可以根據(jù)不同的算法和規(guī)則進行負載均衡,如基于IP的算法、基于哈希的算法等。
- 健康檢查:Kubernetes可以通過健康檢查機制,確保后端的Pod副本處于健康狀態(tài),并將不健康的Pod排除在負載均衡之外。
Kubernetes的負載均衡可以在不同的層次上實現(xiàn),如四層負載均衡和七層負載均衡。四層負載均衡基于IP和端口號進行流量轉發(fā),而七層負載均衡基于應用層協(xié)議和URL等進行流量轉發(fā)。Kubernetes默認采用七層負載均衡,通過Service將流量路由到后端的Pod副本中。
此外,Kubernetes還支持多種負載均衡模式,如單臂模式、NAT模式和直接模式等。這些模式可以根據(jù)不同的應用場景和需求進行選擇,以滿足應用程序的負載均衡需求。
總之,Kubernetes通過Service、負載均衡器和健康檢查等組件,實現(xiàn)了對容器的負載均衡,為應用程序提供了穩(wěn)定、高效的運行環(huán)境
存儲管理
Kubernetes的存儲管理主要通過Volume和Persistent Volume(PV)實現(xiàn)。Volume是Kubernetes中用于提供容器存儲的抽象概念,它提供了一種將持久化存儲映射到容器的方法。
Volume有以下幾種常見類型:
- EmptyDir:EmptyDir類型的Volume是一個臨時目錄,它只在Pod運行時存在,當Pod被銷毀時,EmptyDir中的數(shù)據(jù)會被清除。這種類型的Volume常用于在容器中存儲臨時數(shù)據(jù)。
- HostPath:HostPath類型的Volume是將宿主機的某個目錄映射到容器中。這種類型的Volume常用于在容器中使用宿主機的文件系統(tǒng)存儲。
- GCEPersistentDisk:GCEPersistentDisk類型的Volume是Google Cloud Engine上的持久化磁盤,它可以將云硬盤映射到容器中。這種類型的Volume常用于在容器中使用云存儲。
- PersistentVolumeClaim(PVC):PVC是一種特殊的Volume,它通過聲明一個Persistent Volume(PV)來申請存儲資源。PVC提供了一種靈活的存儲資源管理方式,可以根據(jù)需求動態(tài)申請和釋放存儲資源。
除了Volume,Kubernetes還提供了Persistent Volume(PV)和Persistent Volume Claim(PVC)的概念,用于實現(xiàn)更靈活的存儲管理。PV是一個獨立的存儲資源,它可以被多個Pod共享。PVC通過聲明一個PV來申請存儲資源,它可以與Pod一起創(chuàng)建和銷毀,并且可以動態(tài)地擴展或縮減存儲資源。
總之,Kubernetes通過Volume、PV和PVC等組件,實現(xiàn)了對容器的存儲管理,為應用程序提供了穩(wěn)定、高效的存儲資源。
kubernetes與docker的關系:
????????Docker和Kubernetes是兩個不同的概念和技術,但是它們之間有很密切的關系。
????????Docker是一個開源的容器化平臺,它可以將應用程序打包成一個獨立的容器,包含應用程序所需的所有組件和依賴項,從而實現(xiàn)了跨平臺、可移植和快速部署的能力。Docker提供了一個容器化的應用程序開發(fā)、部署和運行的環(huán)境,可以方便地將應用程序或服務打包、分發(fā)和運行。
????????Kubernetes是一個開源的容器編排平臺,旨在簡化應用程序在分布式系統(tǒng)中的部署、擴展和管理。它主要解決了面對包含成千上萬個容器和節(jié)點的大規(guī)模分布式部署時,如何保證平臺的可伸縮性、靈活性和可靠性的問題。Kubernetes提供了容器編排、容器管理、容器存儲、網(wǎng)絡通信等功能,通過自動化、智能化的方式對容器進行部署、擴容、縮容等操作,提高了應用程序的可用性和穩(wěn)定性。
????????Docker和Kubernetes之間的關系在于,Docker提供了應用程序容器化的能力,而Kubernetes則負責管理、協(xié)調(diào)和監(jiān)控這些容器。Kubernetes通過對容器進行編排和調(diào)度,將多個容器組合為一個復雜的微服務應用,并可以動態(tài)地進行擴展和縮容。因此,Docker和Kubernetes可以一起使用,共同構建和管理分布式應用程序的整個生命周期,其中Docker主要負責容器化和打包應用程序,Kubernetes則負責自動化地部署、擴展和管理應用程序。
????????總之,Docker和Kubernetes是互補的技術,它們相互協(xié)作,共同實現(xiàn)了容器技術的全棧式解決方案。
kubernetes的技術選型原因以及為何選擇kubernetes:
Kubernetes的技術選型原因以及為何選擇Kubernetes,主要有以下幾點:
- 行業(yè)趨勢:IT行業(yè)正在不斷追求更高的效率和更低的成本,容器化和云原生化的需求正在逐漸增加。Kubernetes作為當前被業(yè)界廣泛認可和看好的基于Docker的大規(guī)模容器化分布式系統(tǒng)解決方案,得到了以谷歌為首的IT巨頭們的大力宣傳和推進,正在成為云原生應用的首選平臺。
- 跨平臺兼容:Kubernetes可以運行在多種公有云和私有云平臺上,比如Google Cloud、Amazon Web Services、Azure、OpenStack等,這使得它具有很高的靈活性,可以輕松地在不同的環(huán)境中進行遷移和擴展。
- 自動化部署:Kubernetes提供了強大的部署、擴展和管理應用程序的能力,可以通過簡單的命令、UI或基于CPU使用情況自動對應用程序進行擴縮,大大減少了人工干預的需求,提高了開發(fā)效率。
- 自我修復:Kubernetes具有自我修復的功能,可以自動檢測和修復容器故障,確保應用程序的持續(xù)可用性和高可靠性。
- 社區(qū)生態(tài):Kubernetes擁有龐大的社區(qū)和豐富的生態(tài),有大量的工具和應用支持Kubernetes,使得學習和使用Kubernetes變得更加容易,同時也提供了更多的可能性來擴展和定制Kubernetes的功能。
綜上所述,Kubernetes的技術選型原因主要是其高效、靈活、可擴展和易用性,而選擇Kubernetes作為容器編排平臺,則可以更好地滿足現(xiàn)代應用程序的高效開發(fā)和部署需求。
kubernetes與同類型產(chǎn)品對比
Docker Swarm
是Docker公司的原生容器編排工具,可以在多個Docker節(jié)點上運行容器,提供容器管理和服務發(fā)現(xiàn)等功能。Swarm最大的特點是易于使用,它與Docker本身集成得非常好,且可以無縫地創(chuàng)建和管理容器。
Apache Mesos
是Apache開源項目之一,是一個集群管理器,可以管理和調(diào)度分布式應用程序。Mesos可以處理數(shù)千個節(jié)點和數(shù)萬個容器,提供了一個集中的控制點,可以管理和調(diào)度所有的資源。
Kubernetes與同類型產(chǎn)品對比,如Docker Swarm和Apache Mesos,主要區(qū)別如下:
- 規(guī)模:Kubernetes可以支持大規(guī)模的容器化應用程序,可以處理數(shù)千個容器和數(shù)百個節(jié)點,而Docker Swarm和Apache Mesos在處理大規(guī)模應用程序方面相對較弱。
- 語言中立性:Kubernetes是多語言且語言不敏感的容器管理平臺,可以運行云原生和傳統(tǒng)的容器化應用程序,提供的服務可供各種語言使用。而Docker Swarm主要支持Docker容器,對于非Docker容器支持較弱。
- 跨平臺性:Kubernetes可以運行在多種公有云和私有云平臺上,比如Google Cloud、Amazon Web Services、Azure、OpenStack等,而Docker Swarm和Apache Mesos的跨平臺能力相對較弱。
- 自動化部署和管理:Kubernetes提供了強大的部署、擴展和管理應用程序的能力,可以通過簡單的命令、UI或基于CPU使用情況自動對應用程序進行擴縮,大大減少了人工干預的需求,提高了開發(fā)效率。而Docker Swarm和Apache Mesos在自動化部署和管理方面相對較弱。
- 自我修復:Kubernetes具有自我修復的功能,可以自動檢測和修復容器故障,確保應用程序的持續(xù)可用性和高可靠性。而Docker Swarm和Apache Mesos的自我修復能力相對較弱。
- 社區(qū)和生態(tài):Kubernetes擁有龐大的社區(qū)和豐富的生態(tài),有大量的工具和應用支持Kubernetes,使得學習和使用Kubernetes變得更加容易,同時也提供了更多的可能性來擴展和定制Kubernetes的功能。而Docker Swarm和Apache Mesos在社區(qū)和生態(tài)方面相對較弱。
綜上所述,Kubernetes相對于其他同類型產(chǎn)品具有更大的規(guī)模、語言中立性、跨平臺性、自動化部署和管理、自我修復以及社區(qū)和生態(tài)優(yōu)勢。文章來源:http://www.zghlxwxcb.cn/news/detail-664128.html
kubernetes版本迭代特性對比
- Kubernetes 1.0 (2015年7月):這是Kubernetes的初始版本,標志著Kubernetes的正式發(fā)布。此版本提供了基礎架構即服務(IaaS)的功能,包括容器編排、自動擴展和自我修復等。
- Kubernetes 1.1 (2015年11月):這個版本增加了更多的功能,例如,性能改進、更好的網(wǎng)絡插件以及新的存儲插件。此外,還改進了集群節(jié)點的規(guī)模和集群的整體性能。
- Kubernetes 1.2 (2016年4月):這個版本引入了重要的新特性,如StatefulSet(用于有狀態(tài)應用的部署和擴展)、DaemonSet(用于每個節(jié)點都需要運行的應用)以及自適應的副本計數(shù)器。
- Kubernetes 1.3 (2016年7月):這個版本更加注重安全性和集群的高可用性,增加了諸如認證、授權、API聚合、服務網(wǎng)格等新特性。
- Kubernetes 1.4 (2016年12月):這個版本增加了更多的安全特性,如強密碼策略、支持靜態(tài)和LDAP身份驗證、Webhook身份驗證等。此外,還引入了集群聯(lián)邦(federation),使得Kubernetes可以管理跨多個云的集群。
- Kubernetes 1.5 (2017年4月):這個版本主要在穩(wěn)定性和性能方面進行了改進,包括更好的存儲和網(wǎng)絡插件的穩(wěn)定性、改進的調(diào)度器性能、以及對IPv6的支持等。
- Kubernetes 1.6 (2017年7月):這個版本增加了更多的安全特性,如更強的角色和角色綁定限制、自動雙向TLS、自我修復等。此外,還引入了對多租戶模式的支持。
- Kubernetes 1.7 (2017年12月):這個版本引入了新的API聚合層、改進的StatefulSet和更好的GPU支持等。
以上就是Kubernetes主要版本的迭代歷程和特性對比。隨著版本的更新,Kubernetes的功能不斷完善和增強,逐漸發(fā)展成為容器編排領域的領先者文章來源地址http://www.zghlxwxcb.cn/news/detail-664128.html
到了這里,關于kubernetes--技術文檔--基本概念--《10分鐘快速了解》的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!