溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Containerd的特性有哪些

發(fā)布時(shí)間:2021-12-20 09:44:07 來(lái)源:億速云 閱讀:264 作者:iii 欄目:云計(jì)算

本篇內(nèi)容主要講解“Containerd的特性有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Containerd的特性有哪些”吧!

Containerd概述

Containerd的特性有哪些

“早在16年3月,Docker 1.11的Docker Engine里就包含了containerd,而現(xiàn)在則是把containerd從Docker Engine里徹底剝離出來(lái),作為一個(gè)獨(dú)立的開(kāi)源項(xiàng)目獨(dú)立發(fā)展,目標(biāo)是提供一個(gè)更加開(kāi)放、穩(wěn)定的容器運(yùn)行基礎(chǔ)設(shè)施。和原先包含在Docker Engine里containerd相比,獨(dú)立的containerd將具有更多的功能,可以涵蓋整個(gè)容器運(yùn)行時(shí)管理的所有需求。

containerd并不是直接面向最終用戶的,而是主要用于集成到更上層的系統(tǒng)里,比如Swarm, Kubernetes, Mesos等容器編排系統(tǒng)。containerd以Daemon的形式運(yùn)行在系統(tǒng)上,通過(guò)unix domain docket暴露很低層的gRPC API,上層系統(tǒng)可以通過(guò)這些API管理機(jī)器上的容器。每個(gè)containerd只負(fù)責(zé)一臺(tái)機(jī)器,Pull鏡像,對(duì)容器的操作(啟動(dòng)、停止等),網(wǎng)絡(luò),存儲(chǔ)都是由containerd完成。具體運(yùn)行容器由runC負(fù)責(zé),實(shí)際上只要是符合OCI規(guī)范的容器都可以支持。

對(duì)于容器編排服務(wù)來(lái)說(shuō),運(yùn)行時(shí)只需要使用containerd+runC,更加輕量,容易管理。而獨(dú)立之后containerd的特性演進(jìn)可以和Docker Engine分開(kāi),專注容器運(yùn)行時(shí)管理,可以更穩(wěn)定。在向后兼容上也可以做的更好,containerd第一個(gè)正式版本1.0 Release之后將提供一年的支持,包括安全更新和Bugfix,而每次升級(jí)也會(huì)向后兼容一個(gè)小版本?!?/p>

Containerd特性

職能單一

通常一個(gè)容器運(yùn)行時(shí)需要包括哪些功能特性呢?

Containerd的特性有哪些

這里是containerd的架構(gòu)圖。中間這一層里包含了三個(gè)子系統(tǒng),從這里可以看出containerd支持哪些能力

  • Distribution: 和Docker Registry打交道,拉取鏡像

  • Bundle: 管理本地磁盤上面鏡像的子系統(tǒng)。

  • Runtime:創(chuàng)建容器、管理容器的子系統(tǒng)。

可以看出containerd非常的干凈,提供的都是運(yùn)行時(shí)真正需要的功能。

Cotainerd 只負(fù)責(zé)容器運(yùn)行時(shí) 和 基本的鏡像管理,和一些普遍需要的支持。

* 容器管理
* 鏡像管理
* 存儲(chǔ)卷管理
* 性能采集
* 日志管理
* 網(wǎng)絡(luò)

特性和路線圖

* 支持OCI鏡像
* 支持OCI運(yùn)行時(shí)(runC)
* 支持鏡像的pull/push操作
* 容器運(yùn)行時(shí)和生命周期管理
* 網(wǎng)絡(luò)原語(yǔ):創(chuàng)建/修改/刪除接口
* 讓容器加入已有的Network Namespace
* 使用“內(nèi)容可尋址”存儲(chǔ)支持全局鏡像多租戶共享

Namespace支持

Containerd的特性有哪些

由于需要兼容上層多個(gè)編排系統(tǒng),docker 和 k8s 在一個(gè)node上可能存在多個(gè)containerd。在不同的命名空間,可以有相同名字的容器。當(dāng)下載不同namespace的鏡像時(shí),可以拿其他namespace的鏡像做軟鏈,以節(jié)省存儲(chǔ)空間,無(wú)需重復(fù)下載。

Plugin模式

好處:功能易擴(kuò)展。當(dāng)需要對(duì)接上層編排系統(tǒng)時(shí),可以通過(guò)插件的方式進(jìn)行對(duì)接。 cri-containerd 變成一個(gè)插件,可以讓k8s直接對(duì)接containerd的功能。

Containerd的特性有哪些

兩種方式集成:原生代碼集成 和 動(dòng)態(tài)庫(kù)的方式。 原生代碼集成,顧名思義,就是代碼在一個(gè)repo里構(gòu)建成一個(gè)二進(jìn)制文件。 所謂動(dòng)態(tài)庫(kù)的方式,就是把.so文件加入規(guī)定的目錄下,在不重新編譯containerd二進(jìn)制的情況下,加載某個(gè)插件。

Containerd的CRI實(shí)現(xiàn)

項(xiàng)目: https://github.com/containerd/cri

原名cri-containerd:目前 cri-conainerd 已經(jīng)變成containerd的一個(gè)插件。

支持K8s CRI規(guī)范的所有特性

提供了使用ansible和kubeadm工具部署k8s集群的方法。

Containerd的CRI實(shí)現(xiàn)

-- 插件化前

Containerd的特性有哪些

缺點(diǎn):實(shí)際上通過(guò)containerd client調(diào)用 containerd ,多了一層grpc的調(diào)用,性能上有損耗。

-- 插件化后

Containerd的特性有哪些

功能上沒(méi)有變化,性能較大提升。

Containerd & CRI 現(xiàn)狀 -- Containerd vs docker

優(yōu)點(diǎn):

  • Stability 職責(zé)單一,更容易穩(wěn)定

  • Compatibility 跟隨kubernetes的需求

  • Neutral Foundation 中立, CNCF 項(xiàng)目之一

  • Performance

Containerd的特性有哪些

dockershim的代碼是集成在 kubelet內(nèi)部的,dockershim的作用是把docker的接口用CRI標(biāo)準(zhǔn)封裝起來(lái)。

docker 17.11版本開(kāi)始使用Containerd v1.0

cri-conainerd 已經(jīng)變成containerd的一個(gè)插件。

缺點(diǎn):

  • User Adaption 調(diào)試工具手段相比docker還有差距

  • Maturity 需要時(shí)間成熟

性能對(duì)比(docker vs containerd)

圖上半部是docker的數(shù)據(jù), 圖下半部是containerd 的數(shù)據(jù)。

Containerd的特性有哪些

第一列,對(duì)比Pod創(chuàng)建時(shí)延 ,使用k8s測(cè)試工具density 創(chuàng)建 50%,90% ,99% 的pod 花費(fèi)的時(shí)間。

第二列,單位時(shí)間內(nèi)能創(chuàng)建多少pod。

Containerd的特性有哪些

上圖測(cè)試創(chuàng)建105個(gè) pod,對(duì)機(jī)器資源的消耗。

Containerd的特性有哪些

分析:一個(gè)容器對(duì)應(yīng)一個(gè)dockershim,在docker中dockershim占用的內(nèi)存與 containerd占用內(nèi)存對(duì)比,更小。

未來(lái)規(guī)劃

進(jìn)一步優(yōu)化 * cri-containerd插件化后再瘦身 * containerd-shim耗費(fèi)內(nèi)存比較多 換一種語(yǔ)言實(shí)現(xiàn)?

重要事件

  • Containerd 原生支持CRI

    • 項(xiàng)目已經(jīng)合并,cri-containerd作為Containerd的一個(gè)插件,改名cri,不再獨(dú)立存在。

  • 版本:伴隨kubernetes 1.10, 發(fā)布cri-containerd 1.0.0-rc.0 , Containerd 1.1

Plan 2018

  • secure Pod (kata container etc)

  • Windows container

  • 性能優(yōu)化部分...

Containerd架構(gòu)圖

Containerd的特性有哪些

理解這些組件模塊以及之間的關(guān)系對(duì)修改和擴(kuò)展系統(tǒng)十分關(guān)鍵。

整個(gè)架構(gòu)的目標(biāo)是為了協(xié)調(diào)bundles的創(chuàng)建和執(zhí)行。bundles是指被Runtime使用的,包括配置、元數(shù)據(jù)、rootfs數(shù)據(jù)。bundle在文件系統(tǒng)上代表運(yùn)行時(shí)容器,簡(jiǎn)化為一個(gè)目錄。

Code layout并沒(méi)有反映實(shí)際的架構(gòu)。

Subsystems: 外部用戶通過(guò)GRPC API暴露的服務(wù)來(lái)進(jìn)行交互。

  • Bundle: bundle服務(wù)允許用戶從硬盤鏡像中解壓和打包bundles.

  • Runtime: runtime服務(wù)支持bundles的執(zhí)行,包括創(chuàng)建容器運(yùn)行時(shí)

每個(gè)子系統(tǒng)有一個(gè)以上的controller 組件、實(shí)現(xiàn)了子系統(tǒng)的行為,并通過(guò)服務(wù)的方式暴露給外部訪問(wèn)。

Modules

除了子系統(tǒng)之外,還有一些組件可能跨子系統(tǒng)實(shí)現(xiàn)。

  • Executor: 實(shí)現(xiàn)了實(shí)際容器運(yùn)行時(shí)。

  • Supervisor: 監(jiān)控和報(bào)告容器狀態(tài)。

  • Metadata: 在graph db中存儲(chǔ)元數(shù)據(jù)。保存與鏡像和bundles相關(guān)的所有文件。保存在數(shù)據(jù)庫(kù)中的數(shù)據(jù)有schema,包含與模塊間協(xié)作入口。還包括回收磁盤空間的垃圾回收hook。

  • Content: 提供內(nèi)容可尋址的存儲(chǔ)。所有不可改變的內(nèi)容通過(guò)hash key保存在這里。

  • Snapshot: 管理文件系統(tǒng)上容器鏡像的快照。類比于Docker中的 graphdriver

  • Events: 支持收集和消費(fèi)事件,提供一致地以事件驅(qū)動(dòng)的行為和審計(jì)。事件可以以多種模型進(jìn)行重放。

  • Metrics: 每個(gè)組件會(huì)導(dǎo)出多個(gè)metrics,通過(guò)metrics API訪問(wèn)。

Client-side Subsystems

  • Distribution: 提供上傳和下載鏡像的功能

創(chuàng)建bundle的data-flow

Containerd的特性有哪些

到此,相信大家對(duì)“Containerd的特性有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI