久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Containerd的特性有哪些

155次閱讀
沒有評論

共計 3317 個字符,預計需要花費 9 分鐘才能閱讀完成。

本篇內容主要講解“Containerd 的特性有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“Containerd 的特性有哪些”吧!

Containerd 概述

“早在 16 年 3 月,Docker 1.11 的 Docker Engine 里就包含了 containerd,而現在則是把 containerd 從 Docker Engine 里徹底剝離出來,作為一個獨立的開源項目獨立發展,目標是提供一個更加開放、穩定的容器運行基礎設施。和原先包含在 Docker Engine 里 containerd 相比,獨立的 containerd 將具有更多的功能,可以涵蓋整個容器運行時管理的所有需求。

containerd 并不是直接面向最終用戶的,而是主要用于集成到更上層的系統里,比如 Swarm, Kubernetes, Mesos 等容器編排系統。containerd 以 Daemon 的形式運行在系統上,通過 unix domain docket 暴露很低層的 gRPC API,上層系統可以通過這些 API 管理機器上的容器。每個 containerd 只負責一臺機器,Pull 鏡像,對容器的操作(啟動、停止等),網絡,存儲都是由 containerd 完成。具體運行容器由 runC 負責,實際上只要是符合 OCI 規范的容器都可以支持。

對于容器編排服務來說,運行時只需要使用 containerd+runC,更加輕量,容易管理。而獨立之后 containerd 的特性演進可以和 Docker Engine 分開,專注容器運行時管理,可以更穩定。在向后兼容上也可以做的更好,containerd 第一個正式版本 1.0 Release 之后將提供一年的支持,包括安全更新和 Bugfix,而每次升級也會向后兼容一個小版本?!?/p>

Containerd 特性職能單一

通常一個容器運行時需要包括哪些功能特性呢?

這里是 containerd 的架構圖。中間這一層里包含了三個子系統,從這里可以看出 containerd 支持哪些能力

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

Bundle: 管理本地磁盤上面鏡像的子系統。

Runtime:創建容器、管理容器的子系統。

可以看出 containerd 非常的干凈,提供的都是運行時真正需要的功能。

Cotainerd 只負責容器運行時 和 基本的鏡像管理,和一些普遍需要的支持。

*  容器管理
*  鏡像管理
*  存儲卷管理
*  性能采集
*  日志管理
*  網絡 

特性和路線圖

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

Namespace 支持

由于需要兼容上層多個編排系統,docker 和 k8s 在一個 node 上可能存在多個 containerd。在不同的命名空間,可以有相同名字的容器。當下載不同 namespace 的鏡像時,可以拿其他 namespace 的鏡像做軟鏈,以節省存儲空間,無需重復下載。

Plugin 模式

好處:功能易擴展。當需要對接上層編排系統時,可以通過插件的方式進行對接。cri-containerd 變成一個插件,可以讓 k8s 直接對接 containerd 的功能。

兩種方式集成:原生代碼集成 和 動態庫的方式。原生代碼集成,顧名思義,就是代碼在一個 repo 里構建成一個二進制文件。所謂動態庫的方式,就是把.so 文件加入規定的目錄下,在不重新編譯 containerd 二進制的情況下,加載某個插件。

Containerd 的 CRI 實現

項目:https://github.com/containerd/cri

原名 cri-containerd: 目前 cri-conainerd 已經變成 containerd 的一個插件。

支持 K8s CRI 規范的所有特性

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

Containerd 的 CRI 實現

— 插件化前

缺點:實際上通過 containerd client 調用 containerd,多了一層 grpc 的調用,性能上有損耗。

— 插件化后

功能上沒有變化,性能較大提升。

Containerd CRI 現狀 — Containerd vs docker

優點:

Stability 職責單一,更容易穩定

Compatibility 跟隨 kubernetes 的需求

Neutral Foundation 中立,CNCF 項目之一

Performance

dockershim 的代碼是集成在 kubelet 內部的,dockershim 的作用是把 docker 的接口用 CRI 標準封裝起來。

docker 17.11 版本開始使用 Containerd v1.0

cri-conainerd 已經變成 containerd 的一個插件。

缺點:

User Adaption 調試工具手段相比 docker 還有差距

Maturity 需要時間成熟

性能對比(docker vs containerd)

圖上半部是 docker 的數據, 圖下半部是 containerd 的數據。

第一列,對比 Pod 創建時延,使用 k8s 測試工具 density 創建 50%,90%,99% 的 pod 花費的時間。

第二列,單位時間內能創建多少 pod。

上圖測試創建 105 個 pod,對機器資源的消耗。

分析:一個容器對應一個 dockershim,在 docker 中 dockershim 占用的內存與 containerd 占用內存對比,更小。

未來規劃

進一步優化 * cri-containerd 插件化后再瘦身 * containerd-shim 耗費內存比較多 換一種語言實現?

重要事件

Containerd 原生支持 CRI

項目已經合并,cri-containerd 作為 Containerd 的一個插件,改名 cri,不再獨立存在。

版本:伴隨 kubernetes 1.10,發布 cri-containerd 1.0.0-rc.0 , Containerd 1.1

Plan 2018

secure Pod (kata container etc)

Windows container

性能優化部分 …

Containerd 架構圖

Containerd 的特性有哪些

理解這些組件模塊以及之間的關系對修改和擴展系統十分關鍵。

整個架構的目標是為了協調 bundles 的創建和執行。bundles 是指被 Runtime 使用的, 包括配置、元數據、rootfs 數據。bundle 在文件系統上代表運行時容器,簡化為一個目錄。

Code layout 并沒有反映實際的架構。

Subsystems: 外部用戶通過 GRPC API 暴露的服務來進行交互。

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

Runtime: runtime 服務支持 bundles 的執行,包括創建容器運行時

每個子系統有一個以上的 controller 組件、實現了子系統的行為,并通過服務的方式暴露給外部訪問。

Modules

除了子系統之外,還有一些組件可能跨子系統實現。

Executor: 實現了實際容器運行時。

Supervisor: 監控和報告容器狀態。

Metadata: 在 graph db 中存儲元數據。保存與鏡像和 bundles 相關的所有文件。保存在數據庫中的數據有 schema, 包含與模塊間協作入口。還包括回收磁盤空間的垃圾回收 hook。

Content: 提供內容可尋址的存儲。所有不可改變的內容通過 hash key 保存在這里。

Snapshot: 管理文件系統上容器鏡像的快照。類比于 Docker 中的 graphdriver

Events: 支持收集和消費事件,提供一致地以事件驅動的行為和審計。事件可以以多種模型進行重放。

Metrics: 每個組件會導出多個 metrics,通過 metrics API 訪問。

Client-side Subsystems

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

創建 bundle 的 data-flow

Containerd 的特性有哪些

到此,相信大家對“Containerd 的特性有哪些”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計3317字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 平顺县| 工布江达县| 农安县| 云南省| 彩票| 辽阳市| 苍溪县| 巫溪县| 威远县| 建瓯市| 台州市| 沂南县| 石景山区| 秦安县| 丰城市| 泸水县| 舒城县| 石屏县| 洛宁县| 佛坪县| 来安县| 兴文县| 西吉县| 陈巴尔虎旗| 余庆县| 兰西县| 辽中县| 武冈市| 阜城县| 安乡县| 重庆市| 天镇县| 高淳县| 东源县| 修文县| 潜江市| 莒南县| 隆德县| 桂阳县| 湖州市| 珲春市|