亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

K8s集群中Containerd和Docker的對比

馬哥Linux運維 ? 來源:博客園夜夜漫筆 ? 2025-03-12 14:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前景提要

Docker 技術使用 Linux 內(nèi)核和內(nèi)核功能(例如 Cgroups 和 namespaces)來分隔進程,以便各進程相互獨立運行。這種獨立性正是采用容器的目的所在;它可以獨立運行多種進程、多個應用,更加充分地發(fā)揮基礎設施的作用,同時保持各個獨立系統(tǒng)的安全性。

為了防止docker一家獨大,docker當年的實現(xiàn)被拆分出了幾個標準化的模塊,標準化的目的是模塊是可被其他實現(xiàn)替換的,不由任何一個廠商控制。

docker由 docker-client ,dockerd,containerd,docker-shim,runc組成,所以containerd是docker的基礎組件之一,docker 對容器的管理和操作基本都是通過 containerd 完成的。那么,containerd 是什么呢?

Containerd 是一個工業(yè)級標準的容器運行時(Container Runtime Interface),它強調簡單性、健壯性和可移植性。Containerd 可以在宿主機中管理完整的容器生命周期:容器鏡像的傳輸和存儲、容器的執(zhí)行和管理、存儲和網(wǎng)絡等。詳細點說,Containerd 負責干下面這些事情:

管理容器的生命周期(從創(chuàng)建容器到銷毀容器)

拉取/推送容器鏡像

存儲管理(管理鏡像及容器數(shù)據(jù)的存儲)

調用 runC 運行容器(與 runC 等容器運行時交互)

管理容器網(wǎng)絡接口及網(wǎng)絡

8c5b818a-fceb-11ef-9310-92fbcf53809c.png

從k8s的角度看,可以選擇 containerd 或 docker 作為運行時組件:Containerd 調用鏈更短,組件更少,更穩(wěn)定,占用節(jié)點資源更少調用鏈

containerd 跟 docker 調用關系

8c779db6-fceb-11ef-9310-92fbcf53809c.png

8c8832fc-fceb-11ef-9310-92fbcf53809c.png

配置參數(shù)區(qū)別

日志配置

對比項 docker containerd
儲路徑 docker作為k8s容器運行時的情況下,容器日志的落盤由docker來完成,
保存在類似/var/lib/docker/containers/CONTAINERID目錄下。
kubelet會在/var/log/pods和/var/log/containers下面建立軟鏈接,
指向/var/lib/docker/containers/CONTAINERID目錄下。
kubelet會在/var/log/pods和/var/log/containers下面建立軟鏈接,
指向/var/lib/docker/containers/CONTAINERID目錄下的容器日志文件
containerd作為k8s容器運行時的情況下, 容器日志的落盤由kubelet來完成,保存到/var/log/pods/$CONTAINER_NAME目錄下,同時在/var/log/containers目錄下創(chuàng)建軟鏈接,指向日志文件
配置參數(shù) 在docker配置文件中指定:"log-driver": "json-file", "log-opts": {"max-size": "100m","max-file": "5"} 方法一:在kubelet參數(shù)中指定:--container-log-max-files=5 --container-log-max-size="100Mi" 方法二:在KubeletConfiguration中指定:"containerLogMaxSize": "100Mi","containerLogMaxFiles": 5,
把容器日志保存到數(shù)據(jù)盤 把數(shù)據(jù)盤掛載到"data-root"(缺省是/var/lib/docker)即可 創(chuàng)建一個軟鏈接/var/log/pods指向數(shù)據(jù)盤掛載點下的某個目錄在TKE中選擇"將容器和鏡像存儲在數(shù)據(jù)盤",會自動創(chuàng)建軟鏈接/var/log/pods

stream server
kubectl exec/logs等命令需要在apiserver跟容器運行時之間建立流轉發(fā)通道。
docker API本身提供stream服務,kubelet內(nèi)部的docker-shim會通過docker API做流轉發(fā)。
containerd的stream服務需要單獨配置:

[plugins.cri]

stream_server_address="127.0.0.1"

stream_server_port="0"

enable_tls_streaming=false

在k8s 1.11之前,kubelet并不會做stream proxy, 只會做redirect。也就是把containerd暴露的stream server地址告訴apiserver, 讓apiserver直接來訪問containerd的stream server。這種情況下,需要給stream server使能tle認證來做安全防護。

從k8s1.11引入了kubelet stream proxy (https://github.com/kubernetes/kubernetes/pull/64006), 從而使得containerd stream server只需要監(jiān)聽本地地址即可。

CNI網(wǎng)絡

對比項 docker containerd
誰負責調用CNI kubelet內(nèi)部的docker-shim containerd內(nèi)置的cri-plugin(containerd 1.1以后)
如何配置CNI kubelet參數(shù) --cni-bin-dir 和 --cni-conf-dir containerd配置文件(toml):plugins.cri.cni bin_dir = "/opt/cni/bin" conf_dir = "/etc/cni/net.d"

命令對比

containerd不支持docker API和docker CLI, 但是可以通過cri-tool實現(xiàn)類似的功能。

鏡像相關功能 docker containerd
顯示本地鏡像列表 docker images crictl images
下載鏡像 docker pull crictl pull
上傳鏡像 docker push
刪除本地鏡像 docker rmi crictl rmi
查看鏡像詳情 docker inspect crictl inspecti
容器相關功能 docker containerd
顯示容器列表 docker ps crictl ps
創(chuàng)建容器 docker create crictl create
啟動容器 docker start crictl start
停止容器 docker stop crictl stop
刪除容器 docker rm crictl rm
查看容器詳情 docker inspect crictl inspect
attach docker attach crictl attach
exec docker exec crictl exec
logs docker logs crictl logs
stats docker stats crictl stats
POD相關功能 docker containerd
顯示POD列表 crictl pods
查看POD詳情 crictl inspectp
運行POD crictl runp
停止POD crictl stopp

拓展閱讀

接下來就是crictl的的常見命令,其中能完全替代docker命令的參照下列表格

8c980006-fceb-11ef-9310-92fbcf53809c.png

crictl對容器生命周期的管理基本已經(jīng)覆蓋,不過在crictl我們不能完成操作也比較多,比如對鏡像的管理就不屬于它的管理范圍。這部分還得依靠ctr來實現(xiàn),操作方式同樣可以參照下表

8cbe8154-fceb-11ef-9310-92fbcf53809c.png

需注意的是,由于Containerd也有namespaces的概念,對于上層編排系統(tǒng)的支持,主要區(qū)分了3個命名空間分別是k8s.io、moby和default,以上我們用crictl操作的均在k8s.io命名空間完成如查看鏡像列表就需要加上-n參數(shù)

ctr -n k8s.io images list

8cd08462-fceb-11ef-9310-92fbcf53809c.png

鏈接:https://www.cnblogs.com/xiexun/p/18268677

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)核
    +關注

    關注

    4

    文章

    1432

    瀏覽量

    42366
  • Linux
    +關注

    關注

    88

    文章

    11585

    瀏覽量

    217344
  • 容器
    +關注

    關注

    0

    文章

    521

    瀏覽量

    22763
  • Docker
    +關注

    關注

    0

    文章

    525

    瀏覽量

    13894

原文標題:Containerd vs Docker:誰才是K8s集群的最佳容器運行時

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    什么是 K8S,如何使用 K8S

    連續(xù)性。 適用場景: 大規(guī)模容器集群管理。 微服務架構的部署與運維。 需要彈性伸縮的在線服務。 多租戶環(huán)境(如開發(fā)測試、生產(chǎn)環(huán)境隔離)。 總的來說,K8S 通過標準化容器管理,極大降低了分布式系統(tǒng)的運維復雜度,是云原生時代的核心基礎設施。
    發(fā)表于 06-25 06:45

    全面提升,阿里云Docker/Kubernetes(K8S) 日志解決方案與選型對比

    查看原文:http://click.aliyun.com/m/42852/背景眾所周知,Docker很火,DockerKubernetes(簡稱k8s)最火。相對物理機、VM,
    發(fā)表于 02-28 12:49

    全面提升,阿里云Docker/Kubernetes(K8S) 日志解決方案與選型對比

    查看原文:http://click.aliyun.com/m/42852/背景眾所周知,Docker很火,DockerKubernetes(簡稱k8s)最火。相對物理機、VM,
    發(fā)表于 02-28 12:50

    k8s容器運行時演進歷史

    docker/k8s時代,經(jīng)常聽到CRI, OCI,containerd和各種shim等名詞,看完本篇博文,您會有個徹底的理解。 典型的K8S Runtime架構 從最常見的
    的頭像 發(fā)表于 02-02 13:50 ?2405次閱讀
    <b class='flag-5'>k8s</b>容器運行時演進歷史

    Docker不香嗎為什么還要用K8s

    Docker 雖好用,但面對強大的集群,成千上萬的容器,突然感覺不香了。 這時候就需要我們的主角 Kubernetes 上場了,先來了解一下 K8s 的基本概念,后面再介紹實踐,由淺入深步步為營
    的頭像 發(fā)表于 06-02 11:56 ?3891次閱讀

    簡單說明k8sDocker之間的關系

    這篇文章主要介紹了k8sDocker關系簡單說明,本文利用圖文講解的很透徹,有需要的同學可以研究下 最近項目用到kubernetes(以下簡稱k8sk
    的頭像 發(fā)表于 06-24 15:48 ?3943次閱讀

    K8S集群服務訪問失敗怎么辦 K8S故障處理集錦

    問題1:K8S集群服務訪問失?。?? ? 原因分析:證書不能被識別,其原因為:自定義證書,過期等。 解決方法:更新證書即可。 問題2:K8S集群服務訪問失?。?curl: (7) Fa
    的頭像 發(fā)表于 09-01 11:11 ?1.7w次閱讀
    <b class='flag-5'>K8S</b><b class='flag-5'>集群</b>服務訪問失敗怎么辦 <b class='flag-5'>K8S</b>故障處理集錦

    k8s集群環(huán)境工作有多快

    命令就會很低效。 今天介紹3個工具會讓你在多k8s集群環(huán)境工作的很輕松。我將從以下幾個方面來評估工具實用性: 速度 如果你有多個k8s集群
    的頭像 發(fā)表于 05-29 14:28 ?935次閱讀
    多<b class='flag-5'>k8s</b><b class='flag-5'>集群</b>環(huán)境<b class='flag-5'>中</b>工作有多快

    k8s是什么意思?kubeadm部署k8s集群k8s部署)|PetaExpres

    ),Kubernetes提供了應用部署,規(guī)劃,更新,維護的一種機制。 在Kubernetes,我們可以創(chuàng)建多個容器,每個容器里面運行一個應用實例,然后通過內(nèi)置的負載均衡策略,實現(xiàn)對這一組應用實例的管理、發(fā)現(xiàn)、訪問,而這些細節(jié)都不需要運維人員去進行復雜的手工配置和處理。 kubernetes(
    發(fā)表于 07-19 13:14 ?1500次閱讀

    K8s集群管理:為什么需要多集群、多集群的優(yōu)勢是什么

    隨著K8s和云原生技術的快速發(fā)展,以及各大廠商在自己的數(shù)據(jù)中心使用K8s的API進行容器化應用編排和管理,讓應用交付本身變得越來越標準化和統(tǒng)一化,并且實現(xiàn)了與底層基礎設施的完全解耦,為多集群和混合云提供了一個堅實技術基礎。
    發(fā)表于 09-14 10:48 ?2415次閱讀
    <b class='flag-5'>K8s</b>多<b class='flag-5'>集群</b>管理:為什么需要多<b class='flag-5'>集群</b>、多<b class='flag-5'>集群</b>的優(yōu)勢是什么

    k8s云原生開發(fā)要求

    IO性能。網(wǎng)絡要求穩(wěn)定,建議使用私有網(wǎng)絡VPC,并配置與Kubernetes兼容的網(wǎng)絡插件。操作系統(tǒng)需與K8s版本匹配,虛擬化平臺支持Docker等。此外,還需關注安全配置,如禁用Swap、調整Sysctl等,以及etcd數(shù)據(jù)存儲后端的配置。合理配置硬件可確保
    的頭像 發(fā)表于 10-24 10:03 ?938次閱讀
    <b class='flag-5'>k8s</b>云原生開發(fā)要求

    混合云部署k8s集群方法有哪些?

    混合云部署k8s集群方法是首先需在本地與公有云分別建立K8s集群,并確保網(wǎng)絡連接。接著,配置kubeconfig文件連接兩集群,并安裝云服務
    的頭像 發(fā)表于 11-07 09:37 ?701次閱讀

    k8sdocker區(qū)別對比,哪個更強?

    部署、擴展、管理和應用生命周期管理能力,可實現(xiàn)高可用性和自動伸縮,兩者常結合使用以優(yōu)化容器化和應用管理。UU云小編將對k8sdocker區(qū)別進行詳細對比
    的頭像 發(fā)表于 12-11 13:55 ?1036次閱讀

    自建K8S集群認證過期

    今天使用kubectl命令查看pod信息時,一直正常運行的k8s集群突然不能訪問了,輸入任何命令都提示以下報錯。
    的頭像 發(fā)表于 02-07 12:32 ?596次閱讀

    如何通過DockerK8S集群實現(xiàn)高效調用GPU

    在有GPU資源的主機安裝,改主機作為K8S集群的Node。
    的頭像 發(fā)表于 03-18 16:50 ?825次閱讀
    如何通過<b class='flag-5'>Docker</b>和<b class='flag-5'>K8S</b><b class='flag-5'>集群</b>實現(xiàn)高效調用GPU