女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

K8s集群中Containerd和Docker的對比

馬哥Linux運維 ? 來源:博客園夜夜漫筆 ? 2025-03-12 14:31 ? 次閱讀

前景提要

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

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

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

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

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

拉取/推送容器鏡像

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

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

管理容器網絡接口及網絡

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

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

containerd 跟 docker 調用關系

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

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

配置參數區別

日志配置

對比項 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目錄下創建軟鏈接,指向日志文件
配置參數 在docker配置文件中指定:"log-driver": "json-file", "log-opts": {"max-size": "100m","max-file": "5"} 方法一:在kubelet參數中指定:--container-log-max-files=5 --container-log-max-size="100Mi" 方法二:在KubeletConfiguration中指定:"containerLogMaxSize": "100Mi","containerLogMaxFiles": 5,
把容器日志保存到數據盤 把數據盤掛載到"data-root"(缺省是/var/lib/docker)即可 創建一個軟鏈接/var/log/pods指向數據盤掛載點下的某個目錄在TKE中選擇"將容器和鏡像存儲在數據盤",會自動創建軟鏈接/var/log/pods

stream server
kubectl exec/logs等命令需要在apiserver跟容器運行時之間建立流轉發通道。
docker API本身提供stream服務,kubelet內部的docker-shim會通過docker API做流轉發。
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只需要監聽本地地址即可。

CNI網絡

對比項 docker containerd
誰負責調用CNI kubelet內部的docker-shim containerd內置的cri-plugin(containerd 1.1以后)
如何配置CNI kubelet參數 --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實現類似的功能。

鏡像相關功能 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
創建容器 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對容器生命周期的管理基本已經覆蓋,不過在crictl我們不能完成操作也比較多,比如對鏡像的管理就不屬于它的管理范圍。這部分還得依靠ctr來實現,操作方式同樣可以參照下表

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

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

ctr -n k8s.io images list

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

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

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

    關注

    3

    文章

    1408

    瀏覽量

    41074
  • Linux
    +關注

    關注

    87

    文章

    11456

    瀏覽量

    212740
  • 容器
    +關注

    關注

    0

    文章

    507

    瀏覽量

    22360
  • Docker
    +關注

    關注

    0

    文章

    509

    瀏覽量

    12678

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

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

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

    搭建K8s環境平臺的步驟

    1 搭建K8s環境平臺規劃1.1 單master集群1.2 多master集群
    發表于 11-04 06:03

    k8s容器運行時演進歷史

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

    Docker不香嗎為什么還要用K8s

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

    簡單說明k8sDocker之間的關系

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

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

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

    k8s集群環境工作有多快

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

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

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

    K8s集群管理:為什么需要多集群、多集群的優勢是什么

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

    k8s云原生開發要求

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

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

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

    k8sdocker區別對比,哪個更強?

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

    自建K8S集群認證過期

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

    如何通過DockerK8S集群實現高效調用GPU

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