1 k8s的前世今生

2022-09-20 16:39:10 字數 2638 閱讀 1458

k8s是kubernetes的縮寫,google 於 2014 年開源了 kubernetes 專案。

k8s的演變過程:首先從傳統的服務-->虛擬機器部署-->容器部署-->k8s。

k8s的由來,歸根結底是容器的由來,搞清楚容器的來歷,k8s是在容器的基礎上,方便容器管理、維護,包括宣告式配置和自動化。

docker 是乙個開源的應用容器引擎,是一種資源虛擬化技術,讓開發者可以打包他們的應用以及依賴包到乙個可移植的容器中,虛擬化技術演歷路徑可分為三個時代:

物理機時代,多個應用程式可能跑在一台物理機器上。

當多個應用程式跑在一台物理機上的時候,無法為物理機中的應用程式定義資源邊界,這會導致資源分配問題。例如,如果多個應用程式在同一臺物理伺服器上執行,則可能會出現乙個應用程式占用大部分資源,而導致其他應用程式的效能會不佳的情況。乙個解決方案是在不同的物理伺服器上執行每個應用程式。但這並沒有擴充套件,因為資源沒有得到充分利用,而且組織維護許多物理伺服器的成本很高。

一台物理機器啟動多個虛擬機器例項,乙個虛擬機器跑多個應用程式,每個虛擬機器都是完整的獨立的系統。

為了解決多個應用部署在同一臺物理機資源分配不均的問題,引入了虛擬化。它可以在單個物理伺服器的 cpu 上執行多個虛擬機器 (vm)。應用程式在虛擬機器之間可以實現隔離,並提供一定程度的安全性,乙個應用程式的資訊不能被另乙個應用程式自由訪問。

虛擬化更好地利用物理伺服器中的資源並有更好的可擴充套件性,可以輕鬆新增或更新應用程式,降低硬體成本等等。

每個 虛擬機器 都是在虛擬化硬體之上執行所有元件的完整機器,包括它自己的作業系統。

虛擬機器的效能損耗是非常大的

容器化時代,一台物理機上啟動多個容器例項,乙個容器跑多個應用程式。

容器類似於虛擬機器,但它們具有松隔離性,可以在應用程式之間共享作業系統(os)。因此,容器被認為是輕量級的。

與 vm 類似,容器有自己的檔案系統、cpu 、記憶體、程序等。由於它們與底層基礎架構分離,因此它們可以跨雲和作業系統分布移植。

容器之所以流行,是因為它們提供了額外的好處,例如:

docker 由映象、映象倉庫、容器三個部分組成:

映象: 跨平台、可移植的程式+環境包

映象倉庫: 映象的儲存位置,有雲端倉庫和本地倉庫之分,官方映象倉庫位址

容器: 進行了資源隔離的映象執行時環境

隨著容器的火爆,越來越多的業務系統利用容器來搭建部署,像 docker 之類的容器引擎,部署少量還可以,但隨著業務的增多,服務越來越多,動輒就要使用成百上千的容器,要管理這麼多容器,docker 們就力不從心了。隨著容器技術越來越多的使用,出現了很多問題

有需求就有改變,於是乎,市場上就出現了一批容器編排工具,典型的是 swarm、mesos 和 k8s。最後,k8s「擊敗」swarm 和 mesos,幾乎成了當前容器編排的事實標準。

kubernetes(簡稱 k8s,其中8代指中間的8個字元),是乙個全新的基於容器技術的分布式架構方案。k8s 最初是由 google 開發的,後來捐贈給了 cncf(雲原生計算**會,隸屬 linux **會)。k8s是 google 十幾年來大規模應用容器技術的經驗積累和昇華的重要成果,確切的說是 google 乙個久負盛名的內部使用的大規模集群管理系統——borg的開源版本其目的是實現資源管理的自動化以及跨資料中心的資源利用率最大化。

同時,kubernetes 提供了完善的管理工具,這些工具涵蓋了包括開發、部署測試、運維監控在內的各個環節,不僅是乙個全新的基於容器技術的分布式架構解決方案,還是乙個一站式的完備分布式系統開發和支撐平台。

k8s 是個雜技高手,最擅長的就是「搬箱子」,盤各種容器玩。

k8s 的大致架構,就像上面。master 節點,用來放「腦子」,「腿腳」搭在工作節點上「搬磚」,工作節點就是實際業務容器的存放地。

單個容器或多個關係密切的容器,被編成一組,稱為 pod。k8s 就是以 pod 為單位進行編排操作。

同時,k8s 還要和其它相關軟體配合,來完成聯網、儲存、安全等功能。

kubernetes 由 master 節點、 node 節點以及外部的 etcd 集群組成,集群的狀態、資源物件、網路等資訊儲存在 etcd 中,mater 節點管控整個集群,包括通訊、排程等,node 節點為工作真正執行的節點,並向主節點報告。

k8s 和 docker 們不是替代關係,而是配合關係。k8s 仍然會使用 docker 之類的容器引擎(docker、containerd、rkt、cri-o 等),來對容器進行生命週期管理。

高可用,不宕機,自動災難恢復

2.灰度更新,不影響業務正常運轉

3.一鍵回滾到歷史版本

4.方便的伸縮管理(包括應用伸縮,機器增減),提供負載均衡

5.有乙個完善的生態體系

1 k8s 環境搭建

1 初始化伺服器 所有節點master node 關閉防火牆 systemctl stop firewalld systemctl disable firewalld 關閉selinux setenforce 0 關閉臨時關閉selinux vi etc selinux config 進入selin...

1 k8s 架構概述

ansible 應用程式編排工具 docker 應用程式容器化 容器化管理介面和早期應用的管理是不同的。docker 的出現就呼喚面向容器化的編排工具的實現。docker 三劍客 docker compose 編排工具,適用於單機 docker swarm 將多台docker主機整合成乙個資源池。d...

ORACLE ERP 的前世今生 1

oracle 在上世紀最後二十年賴以起家並奠定江湖地位的旗艦產品,那麼,企業應用產品 或曰 erp 則毫無疑問是 oracle 在本世紀初的這近十年,征戰疆場 所向披靡的核心 有關 oracle 資料庫的傳奇故事,相信對於大多數程式設計師或 it技術人員來說,已經是耳熟能詳 了然於心,但對於 ora...