如今,inux 服務(wù)器也隨之變得越來越強(qiáng)大了。無論是計(jì)算、網(wǎng)絡(luò)、存儲,都越來越牛。
但是也出現(xiàn)一些問題。
1、資源大小申請不靈活。比如想嘗試新業(yè)務(wù),只需要單獨(dú)的4核8G的服務(wù)器資源,但是不可能采購這么小規(guī)格的機(jī)器;以及,每次申請這個(gè)資源都需要重新采購,周期長;
2、資源復(fù)用不靈活。別人的操作會導(dǎo)致沖突。必須要有自己單獨(dú)的資源。
為了解決這些問題,可以在物理機(jī)上創(chuàng)建虛擬機(jī)。每個(gè)虛擬機(jī)都有自己單獨(dú)的操作系統(tǒng)、靈活的規(guī)格,一個(gè)命令就能啟動起來。每次創(chuàng)建都是新的操作系統(tǒng),很好的解決了上面不靈活的問題。
虛擬機(jī)需要虛擬化層的支持。
如果你安裝virtualBox桌面版,你可以用這個(gè)虛擬機(jī)軟件創(chuàng)建虛擬機(jī),在虛擬機(jī)里面安裝一個(gè)linux,外面的操作吸引也可以是linux。VirtualBox 這個(gè)虛擬化軟件,和你的 Excel 一樣,都是在你的任務(wù)欄里面并排放著,是一個(gè)普通的應(yīng)用。
在硬件操作系統(tǒng)看,VirtualBox 就是一個(gè)普通的用戶態(tài)應(yīng)用。但是它的代碼都意味著它是內(nèi)核是操作系統(tǒng)啊,比如要求虛擬機(jī)的程序訪問網(wǎng)絡(luò),代碼就要努力地去操作網(wǎng)卡。盡管我努力,但是我做不到啊,我沒有權(quán)限!。
所以需要虛擬化層的支持。
三種虛擬化的方式。
完全虛擬化 這相當(dāng)于騙人的方式,VirtualBox會模擬假的 CPU、內(nèi)存、網(wǎng)絡(luò)、硬盤給到我,讓我自我感覺良好,感覺自己終于又像個(gè)內(nèi)核了。其實(shí)每個(gè)CPU,內(nèi)存等內(nèi)核指令都是虛擬化軟件經(jīng)過物理內(nèi)核得到結(jié)果的。
這種方式一個(gè)壞處就是,慢,而且往往慢到不能忍受。
硬件輔助虛擬化
CPU有四個(gè)權(quán)限等級,但是Linux大牛們之前沒意識到虛擬機(jī),0代表內(nèi)核3代表用戶已經(jīng)用完了。沒辦法,只好另起爐灶弄一個(gè)新的標(biāo)志位,表示當(dāng)前是在虛擬機(jī)狀態(tài)下,還是在真正的物理機(jī)內(nèi)核下。對于虛擬機(jī)內(nèi)核來講,只要將標(biāo)志位設(shè)為虛擬機(jī)狀態(tài),我們就可以直接在CPU上執(zhí)行大部分的指令,不需要虛擬機(jī)軟件在中間轉(zhuǎn)述,除非遇到特別敏感的指令,才需要將標(biāo)志位設(shè)為物理機(jī)內(nèi)核態(tài)運(yùn)行,這樣大大提高了效率。
所以,安裝虛擬機(jī)的時(shí)候,我們務(wù)必要將物理 CPU 的這個(gè)標(biāo)志位打開。
半虛擬化
一旦我知道我不是物理機(jī)內(nèi)核,痛定思痛,只好重新認(rèn)識自己,反而能找出很多方式來優(yōu)化我的資源訪問。
寫操作時(shí),很可能和很多虛擬機(jī)共享物理資源,所以我要學(xué)會排隊(duì),我寫硬盤其實(shí)寫的是一個(gè)物理機(jī)上的文件,那我的寫文件的緩存方式是不是可以變一下。我發(fā)送網(wǎng)絡(luò)包,根本就不是發(fā)給真正的網(wǎng)絡(luò)設(shè)備,而是給虛擬的設(shè)備,我可不可以直接在內(nèi)存里面拷貝給它,等等等等。虛擬機(jī)內(nèi)核加載特殊的驅(qū)動等
對于桌面虛擬化軟件,我們多采用 VirtualBox,如果使用服務(wù)器的虛擬化軟件,則有另外的選型。
服務(wù)器上的虛擬化軟件,多使用 qemu,其中關(guān)鍵字 emu,全稱是 emulator,模擬器。所以,單純使用 qemu,采用的是完全虛擬化的模式。
當(dāng)確認(rèn)開始了標(biāo)志位之后,通過 KVM,GuestOS 的 CPU 指令不用經(jīng)過 Qemu 轉(zhuǎn)譯,直接運(yùn)行,大大提高了速度。
然后qemu-kvm會進(jìn)行優(yōu)化。CPU 和內(nèi)存主要使用硬件輔助虛擬化進(jìn)行加速,需要配備特殊的硬件才能工作;網(wǎng)絡(luò)和存儲主要使用特殊的半虛擬化驅(qū)動加速,需要加載特殊的驅(qū)動程序。
容器化
這可以說是現(xiàn)在非常流行的技術(shù)了,比如docker,k8s就是容器化技術(shù)。
其實(shí)早期就有chroot,linux server技術(shù)了。Chroot 可以將進(jìn)程及其子進(jìn)程與操作系統(tǒng)的其余部分隔離開來。但是,對于 root process ,卻可以任意退出 chroot。
linux server技術(shù)主要問題是 VServer 應(yīng)用程序針對 “chroot-again” 類型的攻擊沒有很好的進(jìn)行安全保護(hù),攻擊者可以利用這個(gè)漏洞脫離限制環(huán)境,訪問限制目錄之外的任意文件。
前面說的虛擬化雖然可以實(shí)現(xiàn)資源創(chuàng)建的靈活性。但是虛擬化其實(shí)就是創(chuàng)立一個(gè)子公司,但畢竟是一些獨(dú)立的公司,麻雀雖小,五臟俱全,因而就像上一章我們看到的那樣,CPU、內(nèi)存、網(wǎng)絡(luò)、硬盤全部需要虛擬化,一個(gè)都不能偷懶。
那有沒有一種更加靈活的方式,既可以**隔離出一部分資源,專門用于某個(gè)進(jìn)程,又不需要費(fèi)勁周折的虛擬化這么多的硬件呢?**畢竟最終我只想跑一個(gè)程序,而不是要一整個(gè) Linux 系統(tǒng)。
容器其實(shí)就是打包和標(biāo)準(zhǔn)化的過程。
打包起到隔離作用。
容器實(shí)現(xiàn)封閉的環(huán)境主要要靠兩種技術(shù),一種是看起來是隔離的技術(shù),稱為 namespace(命名空間)。在每個(gè) namespace 中的應(yīng)用看到的,都是不同的 IP 地址、用戶空間、進(jìn)程 ID 等。另一種是用起來是隔離的技術(shù),稱為 cgroup(網(wǎng)絡(luò)資源限制),即明明整臺機(jī)器有很多的 CPU、內(nèi)存,但是一個(gè)應(yīng)用只能用其中的一部分。
如何“將這些集裝箱標(biāo)準(zhǔn)化”,在哪艘船上都能運(yùn)輸。這里就要用到鏡像了。就是在你焊好集裝箱的那一刻,將集裝箱的狀態(tài)保存下來。當(dāng)程序員根據(jù)產(chǎn)品設(shè)計(jì)開發(fā)完畢之后,可以將代碼連同運(yùn)行環(huán)境打包成一個(gè)容器鏡像。無論是在開發(fā)環(huán)境、測試環(huán)境,還是生產(chǎn)環(huán)境運(yùn)行代碼,都可以使用相同的鏡像。
Docker的簡單使用
先啟動;
systemctl start docker
拉取鏡像,最基本的就是操作系統(tǒng)了。我們可以在一臺虛擬機(jī)上創(chuàng)建任意的操作系統(tǒng)環(huán)境了。
docker pull ubuntu:14.04
ocker images查看鏡像
如果要自己生成鏡像就要dockerfile編譯,也可以post到鏡像庫中。
啟動容器
要確定入口,因?yàn)槲覀兿雵L試命令,所以這里 entrypoint 要設(shè)置為 bash
docker run -it --entrypoint bash ubuntu:14.04
幾個(gè)應(yīng)用場景:
1、你寫了一個(gè)程序,然后把它打成了上面一樣的鏡像。你在本地一運(yùn)行 docker run 就把他運(yùn)行起來了。接下來,你交給測試的就不是一個(gè)“程序包 + 配置 + 手冊”了,而是一個(gè)容器鏡像了。測試小伙伴同樣通過 docker run 也就運(yùn)行起來了,不存在“你這里跑的起來,他那里跑不起來的情況。測試完了再上生產(chǎn),交給運(yùn)維的小伙伴也是這樣一個(gè)鏡像,同樣的運(yùn)行同樣的順暢。
2、彈性伸縮部署。,只要在每臺機(jī)器上 docker run 一下就搞定了。等哪天想用另一個(gè)云了,不用怕應(yīng)用遷移不走,只要在另外一個(gè)云上 docker run 一下就解決了。
你可能會問,**多個(gè)容器運(yùn)行在一臺機(jī)器上,不會相互影響嗎?**如何限制 CPU 和內(nèi)存的使用呢?
通過namespace和cgroup技術(shù)。
Namespace技術(shù):內(nèi)部創(chuàng)業(yè)公司應(yīng)該獨(dú)立運(yùn)營
在編程中,是為了不同文件相同變量名的沖突。這里主要實(shí)現(xiàn)進(jìn)程間的資源相互隔離的作用。如果開發(fā)人員啟動了兩個(gè)容器,那么某個(gè)服務(wù)器上的某兩個(gè)地方將有兩個(gè)進(jìn)程運(yùn)行,但它們是相互隔離的。這樣改變一個(gè)namespace的系統(tǒng)資源只會影響當(dāng)前namespace中的進(jìn)程,對其它namespace中的資源沒有影響。
這些資源主要包括 user id ,pid ,網(wǎng)絡(luò)相關(guān),IPC進(jìn)程間通信相關(guān)。
查看進(jìn)程所屬的ns信息
/proc/[pid]/ns這樣一個(gè)目錄,這里面包含了該進(jìn)程所屬的namespace信息。 每個(gè)ns有一個(gè)ID,只要兩個(gè)進(jìn)程的ns id一樣,就說明在同一個(gè)ns中。
一些主要的系統(tǒng)調(diào)用
nsenter,可以用來運(yùn)行一個(gè)進(jìn)程,進(jìn)入指定的 namespace
nsenter --target 58212(nigix的pid) --mount --uts --ipc --net --pid –
env --ignore-environment – /bin/bas
unshare,它會離開當(dāng)前的 namespace,創(chuàng)建且加入新的 namespace,然后執(zhí)行參數(shù)中指定的命令。
unshare --mount --ipc --pid --net --mount-proc=/proc --fork /bin/bash
如果從 shell 上運(yùn)行上面這行命令的話,好像沒有什么變化,但是因?yàn)?pid 和 net 都進(jìn)入了新的 namespace,所以我們查看進(jìn)程列表和 ip 地址的時(shí)候應(yīng)該會發(fā)現(xiàn)有所不同。
cgroup技術(shù):內(nèi)部創(chuàng)業(yè)公司應(yīng)該獨(dú)立核算成本
cgroup 定義了下面的一系列子系統(tǒng),每個(gè)子系統(tǒng)用于控制某一類資源。(CPU,內(nèi)存,設(shè)備,網(wǎng)絡(luò))
主要組成結(jié)構(gòu)就是
若干進(jìn)程會組成一個(gè)cgroup,若干個(gè)cgroup樹狀排列組成一個(gè)層級,每個(gè)cgroup可以有若干個(gè)子系統(tǒng),子系統(tǒng)就是控制某一類資源的。進(jìn)程只屬于某個(gè)cgroup可以遷移。層級樹可以有多個(gè)。
可以實(shí)現(xiàn)一些資源的監(jiān)控,限制,掛起等操作。
一般我們可以用cgroup做以下事情
隔離一個(gè)進(jìn)程集合(比如MySQL的所有進(jìn)程),限定他們所占用的資源,比如綁定的CPU核限制
為這組進(jìn)程分配內(nèi)存
為這組進(jìn)程的分配足夠的帶寬及進(jìn)行存儲限制
限制訪問某些設(shè)備
Kubernetes
最初使用匯編語言的前輩,在程序中需要指定使用的硬件資源,例如,指定使用哪個(gè)寄存器、放在內(nèi)存的哪個(gè)位置、寫入或者讀取哪個(gè)串口等等。為了將程序員從對硬件的直接操作中解放出來,提升程序設(shè)計(jì)的效率,于是,我們有了操作系統(tǒng)這一層,用來實(shí)現(xiàn)對于硬件資源的統(tǒng)一管理。
但是到目前為止,我們能管理的還是少數(shù)幾臺機(jī)器。當(dāng)我們面臨數(shù)據(jù)中心成千上萬臺機(jī)器的時(shí)候,仍然非?!巴纯唷薄H绻覀冞\(yùn)維數(shù)據(jù)中心依然像運(yùn)維一臺臺物理機(jī)的前輩一樣,天天關(guān)心哪個(gè)程序放在了哪臺機(jī)器上,使用多少內(nèi)存、多少硬盤,每臺機(jī)器總共有多少內(nèi)存、多少硬盤,還剩多少內(nèi)存和硬盤,那頭就大了。因而對應(yīng)到數(shù)據(jù)中心,我們也需要一個(gè)調(diào)度器,將運(yùn)維人員從指定物理機(jī)或者虛擬機(jī)的痛苦中解放出來,實(shí)現(xiàn)對于物理資源的統(tǒng)一管理,這就是 Kubernetes。
形象來說,
從匯編到操作系統(tǒng),實(shí)現(xiàn)了需要指定CPU,內(nèi)存等資源位置到操作系統(tǒng)自動尋找;
從操作系統(tǒng)到Kubernetes,實(shí)現(xiàn)了指定程序運(yùn)行的服務(wù)器及使用的 CPU 和內(nèi)存到調(diào)度器 Scheduler,你只需要告訴它,你想運(yùn)行 10 個(gè) 4 核 8G 的 Java 程序,它會自動幫你選擇空閑的、有足夠資源的服務(wù)器,去運(yùn)行這些程序
Kubernetes 作為數(shù)據(jù)中心的操作系統(tǒng)還是主要管理數(shù)據(jù)中心里面的四種硬件資源:CPU、內(nèi)存、存儲、網(wǎng)絡(luò)。
對于 CPU 和內(nèi)存這兩種計(jì)算資源的管理,我們可以通過 Docker 技術(shù)完成。它可以將 CPU 和內(nèi)存資源,通過 namespace 和 cgroup,從大的資源池里面隔離出來,并通過鏡像技術(shù),實(shí)現(xiàn)計(jì)算資源在數(shù)據(jù)中心里面的自由漂移。
Kubernetes組成(類比匯編和操作系統(tǒng))
Kubernetes 將多個(gè) Docker 組裝成一個(gè) Pod 的概念。在一個(gè) Pod 里面,往往有一個(gè) Docker 為主,多個(gè) Docker 為輔。對于操作系統(tǒng)上的進(jìn)程來講,有主線程做主要的工作,還有其它線程做輔助的工作。
操作系統(tǒng)上的進(jìn)程會在 CPU 上切換來切換去,它使用的內(nèi)存也會換入換出。在數(shù)據(jù)中心里面,這些運(yùn)行中的程序能不能在機(jī)器之間遷移呢?Kubernetes 里面有 Controller 的概念,可以控制 Pod 們的運(yùn)行狀態(tài)以及占用的資源。Kubernetes 的 Scheduler 也是有親和性功能的,你可以選擇兩個(gè) Pod 永遠(yuǎn)運(yùn)行在一臺物理機(jī)上,這樣本地通信就非常方便了;你也可以選擇兩個(gè) Pod 永遠(yuǎn)不要運(yùn)行在同一臺物理機(jī)上,這樣一個(gè)掛了不影響另一個(gè)。調(diào)度的原則有資源利用最大化,公平,高效等。切換策略一般先去除不符合條件的節(jié)點(diǎn),然后根據(jù)優(yōu)先級來選擇節(jié)點(diǎn)。這跟redis選主優(yōu)點(diǎn)相似之處啊。
數(shù)據(jù)怎么辦?
如果數(shù)據(jù)放在每一臺服務(wù)器上,其實(shí)就像散落在汪洋大海里面,用的時(shí)候根本找不到,所以必須要有統(tǒng)一的存儲。正像一臺操作系統(tǒng)上多個(gè)進(jìn)程之間,要通過文件系統(tǒng)保存持久化的數(shù)據(jù)并且實(shí)現(xiàn)共享,在數(shù)據(jù)中心里面也需要一個(gè)這樣的基礎(chǔ)設(shè)施。
統(tǒng)一的存儲常常有三種形式:對象存儲,文件存儲,塊存儲
對象存儲:以key-value的形式。每個(gè)文件有唯一的key,相當(dāng)于平面存儲模型,比較容易根據(jù)唯一的 key 進(jìn)行橫向擴(kuò)展,尋找文件很快。是保存非格式化數(shù)據(jù)的好方式。適合保存海量數(shù)據(jù)比如圖片視頻。缺點(diǎn)是你沒辦法像操作文件一樣操作它,而是要將 value 當(dāng)成整個(gè)的來對待。所以對于修改操作很多的文件不適合。
文件存儲:這種是最容易習(xí)慣的,因?yàn)槭褂盟褪褂帽镜氐奈募到y(tǒng)幾乎沒有什么區(qū)別,只不過是通過網(wǎng)絡(luò)的方式訪問遠(yuǎn)程的文件系統(tǒng)。缺點(diǎn)是分布式文件系統(tǒng)的性能和規(guī)模是個(gè)矛盾,規(guī)模一大性能就難以保證,性能好則規(guī)模不會很大,所以不像對象存儲一樣能夠保持海量的數(shù)據(jù)。
塊存儲:相當(dāng)于云硬盤,也即存儲虛擬化的方式,只不過將盤掛載給容器而不是虛擬機(jī)。這樣做的缺點(diǎn)是,一般情況下,不同容器掛載的塊存儲都是不共享的,好處是在同樣規(guī)模的情況下,性能相對分布式文件系統(tǒng)要好。所以適合數(shù)據(jù)遷移,并不適合數(shù)據(jù)共享。
這三種形式,對象存儲使用 HTTP 進(jìn)行訪問,當(dāng)然任何容器都能訪問到,不需要 Kubernetes 去管理它。而分布式文件系統(tǒng)和分布式塊存儲,就需要對接到 Kubernetes,讓 Kubernetes 可以管理它們。如何對接呢?Kubernetes 提供 Container Storage Interface(CSI)接口,這是一個(gè)標(biāo)準(zhǔn)接口,不同的存儲可以實(shí)現(xiàn)這個(gè)接口來對接 Kubernetes。是不是特別像設(shè)備驅(qū)動程序呀?操作系統(tǒng)只要定義統(tǒng)一的接口,不同的存儲設(shè)備的驅(qū)動實(shí)現(xiàn)這些接口,就能被操作系統(tǒng)使用了。
存儲的問題解決了,接下來是網(wǎng)絡(luò)。因?yàn)椴煌姆?wù)器上的 Docker 還是需要互相通信的。Kubernetes 有自己的網(wǎng)絡(luò)模型
.IP-per-Pod,每個(gè) Pod 都擁有一個(gè)獨(dú)立 IP 地址,Pod 內(nèi)所有容器共享一個(gè)網(wǎng)絡(luò)命名空間。
集群內(nèi)所有 Pod 都在一個(gè)直接連通的扁平網(wǎng)絡(luò)中,可通過 IP 直接訪問。每一個(gè) Docker 訪問另一個(gè) Docker 的時(shí)候,都是感覺在一個(gè)扁平的網(wǎng)絡(luò)里面。
要實(shí)現(xiàn)這樣的網(wǎng)絡(luò)模型,有很多種方式,例如 Kubernetes 自己提供 Calico、Flannel。當(dāng)然,也可以對接 Openvswitch 這樣的虛擬交換機(jī),也可以使用 brctl 這種傳統(tǒng)的橋接模式,也可以對接硬件交換機(jī)。
看,這又是一種類似驅(qū)動的模式,和操作系統(tǒng)面臨的問題是一樣的。Kubernetes 同樣是提供統(tǒng)一的接口 Container Network Interface(CNI,容器網(wǎng)絡(luò)接口)。無論你用哪種方式實(shí)現(xiàn)網(wǎng)絡(luò)模型,只要對接這個(gè)統(tǒng)一的接口,Kubernetes 就可以管理容器的網(wǎng)絡(luò)。
接下來是用戶態(tài)的工作模式問題了。我們能不能像操作一臺服務(wù)器那樣操作數(shù)據(jù)中心呢?
我們需要 yum 之類的包管理系統(tǒng)。ubernetes 就有這樣一套包管理軟件 Helm,你可以用它來很方便地安裝、升級、擴(kuò)容一些數(shù)據(jù)中心里面的常用軟件,例如數(shù)據(jù)庫、緩存、消息隊(duì)列。
我們還需使用文件系統(tǒng),或者使用網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。雖然在 Kubernetes 里面有 CSI 和 CNI 來對接存儲和網(wǎng)絡(luò),但是在用戶態(tài),不能讓用戶意識到后面具體設(shè)備,而是應(yīng)該有抽象的概念。(就像linux萬物皆文件,open操作可以打開各種類型的文件一樣)
對于存儲來講,Kubernetes 有 Volume 的概念。Volume 的生命周期與 Pod 綁定在一起,容器掛掉后,Kubelet 再次重啟容器時(shí),Volume 的數(shù)據(jù)依然還在,而 Pod 刪除時(shí),Volume 才會真的被清理。Volume 的概念是對具體存儲設(shè)備的抽象,就像當(dāng)我們使用 ext4 文件系統(tǒng)時(shí),不用管它是基于什么硬盤一樣。
對于網(wǎng)絡(luò)來講,Kubernetes 有自己的 DNS,有 Service 的概念。Kubernetes Service 是一個(gè) Pod 的邏輯分組,這一組 Pod 能夠被 Service 訪問。每一個(gè) Service 都一個(gè)名字,Kubernetes 會將 Service 的名字作為域名解析成為一個(gè)虛擬的 Cluster IP,然后通過負(fù)載均衡,轉(zhuǎn)發(fā)到后端的 Pod。雖然 Pod 可能漂移,IP 會變,但是 Service 會一直不變。(Service就相當(dāng)于一組pod,也就是實(shí)現(xiàn)某種功能的一個(gè)進(jìn)程集合,比如mysql的一組進(jìn)程)
總結(jié)一下k8s,主要搭上了云原生的東風(fēng),現(xiàn)在數(shù)據(jù)都放在云上,相當(dāng)于虛擬的服務(wù)器集群數(shù)據(jù)中心。她就是用來管理數(shù)據(jù)中心的硬件軟件資源的,就像操作系統(tǒng)是管理一臺機(jī)器的資源一樣。
包括CPU,內(nèi)存,存儲,網(wǎng)絡(luò),文件系統(tǒng)。
CPU和內(nèi)存可以借助于docker的隔離標(biāo)準(zhǔn)化(ns,cgroup技術(shù))實(shí)現(xiàn)。多個(gè)docker形成POD,pod類似于進(jìn)程,docker就是主線程和輔助線程。 而進(jìn)程的調(diào)度就是pod在哪個(gè)服務(wù)器節(jié)點(diǎn)運(yùn)行。比如一臺服務(wù)器壞了pod就要選擇別的,這是調(diào)度器實(shí)現(xiàn)的。具體原則先篩選,再根據(jù)優(yōu)先級選大致是這樣。
存儲,k8s有統(tǒng)一的接口,分布式存儲有對象存儲文件存儲塊存儲幾種方式,不同的存儲可以實(shí)現(xiàn)這個(gè)接口來對接 Kubernetes。是不是特別像設(shè)備驅(qū)動程序呀?操作系統(tǒng)只要定義統(tǒng)一的接口,不同的存儲設(shè)備的驅(qū)動實(shí)現(xiàn)這些接口,就能被操作系統(tǒng)使用了。
網(wǎng)絡(luò),也定義了自己的網(wǎng)絡(luò)模型。每個(gè)pod一個(gè)ip地址,所有pod直接連通不需要NAT轉(zhuǎn)換。Kubernetes 同樣是提供統(tǒng)一的接口 Container Network Interface(CNI,容器網(wǎng)絡(luò)接口)
用戶模式
也就是有包管理器helm裝各種應(yīng)用軟件,比如數(shù)據(jù)庫,緩存,消息隊(duì)列等文章來源:http://www.zghlxwxcb.cn/news/detail-450859.html
以及文件系統(tǒng)。抽象。對于存儲來講,Kubernetes 有 Volume 的概念,對于網(wǎng)絡(luò)來講,Kubernetes 有自己的 DNS,有 Service 的概念。文章來源地址http://www.zghlxwxcb.cn/news/detail-450859.html
到了這里,關(guān)于linux內(nèi)核篇之虛擬化和容器化的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!