K8s 集群運行時:從 Docker 升級到 Containerd

一、背景:Kubernetes容器運行時演進史

自2020年Kubernetes 1.20版本宣布棄用Docker作為默認容器運行時以來,容器技術生態經歷了重大變革。作為CNCF畢業項目,Containerd憑借其輕量化架構原生CRI支持卓越性能表現,逐漸成為云原生時代的首選運行時。截至2025年,超過80%的生產級K8s集群已完成運行時升級,這場技術遷移浪潮背后的驅動力值得深入探究。

二、Containerd核心優勢解析

1. 架構精簡度對比

指標

Docker

Containerd

守護進程數量

3 (Docker,containerd,runC)

1 (containerd)

內存占用

100MB+

30-50MB

CRI調用鏈路

需Docker-shim轉換

原生支持

冷啟動時間

1.2s

0.8s

(數據來源:CNCF 2024容器運行時基準測試報告)

2. 關鍵技術優勢

  • 原生CRI集成:消除Docker-shim帶來的性能損耗

  • 資源占用優化:減少30%的節點內存開銷

  • 安全增強:最小化攻擊面,符合NSA/CISA容器安全基線

  • 鏡像管理革新:支持Stargz懶加載,加速大規模鏡像分發

三、生產環境遷移流程

說明:我們公司使用rancher來管理和搭建集群,rancher本身是不支持指定節點來滾動升級的,我們二開了rancher,增加了指定節點來升級節點kubelet、kube-proxy等組件

###下面打標簽都是在rancher的local集群進行,標簽對master節點不生效### 下面所有的nodes資源指的是 rancher的 crd ?nodes.management.cattle.io# 跳過升級節點,會阻塞整個集群的升級狀態,當集群升級時根據需求要逐漸刪除該label。所有nodes沒有這個label時,集群更新成功,狀態為正常qihoo.net/upgrade=false# nodes資源加上該標簽,會忽略帶標簽的節點,該label不回阻塞升級過程,其他節點更新完成功后,集群狀態會正常qihoo.net/upgrade=ignore

1. 遷移前準備

# 集群狀態備份: 通過rancher頁面,備份集群數據(集群狀態,etcd數據等)# 環境兼容性檢測?kubectl get nodes -o jsonpath='{.items[*].status.nodeInfo.containerRuntimeVersion}'?# 輸出預期結果應包含"Docker"標識?#安裝命令行工具crictl nerdctlwget http://xxxx.qihoo.net/kubernetes/crictlchmod?+x crictlmv?crictl /usr/bin/cat?<<EOF > /etc/crictl.yamlruntime-endpoint: unix:///run/containerd/containerd.sockimage-endpoint: unix:///run/containerd/containerd.socktimeout: 10debug: false?EOFwget http://xxx.qihoo.net/kubernetes/nerdctlchmod?+x nerdctlmv?nerdctl /usr/bin/# 集群需要升級containerd節點暫時先全部打上label#獲取nodeskubectl get nodes.management.cattle.io -n c-9vk5r#集群所有需要升級nodes節點打上暫停升級標簽kubectl label nodes.management.cattle.io -n c-xxxx ?m-xxxxxxxx qihoo.net/upgrade=false#集群中不需要升級的集群打上忽略標簽kubectl label nodes.management.cattle.io -n c-zv6zb ?m-xxxxxxx qihoo.net/upgrade=ignore

2. 升級master節點

# 把集群master節點的pod驅逐;確認相關系統組件的pod調度到其它機器并正常運行;?kubectl drain xxxxxx.qihoo.net?--ignore-daemonsets?--delete-local-data?--grace-period=0#更改containerd的/etc/containerd/config.toml配置文件并重啟containerd、docker等systemctl daemon-reloadsystemctl restart containerdsystemctl restart dockerdocker restart etcd service-sidekick?kube-apiserver?kube-controller-manager?kube-scheduler?kubelet kube-proxy# 重建master節點上的daemonset的podHOSTNAME=$(hostname)for?i?in?$(kubectl get pod?-A?-owide?|grep?${HOSTNAME}|awk?'{print $1"@"$2}')do? ns=$(echo?$i|awk?-F'@'?'{print $1}')? po=$(echo?$i|awk?-F'@'?'{print $2}')? kubectl delete po?-n${ns}?${po}?--forcedone

更改rancher中集群配置使用containerd

修改完成后,集群會升級master節點,等待master節點升級完成,原有的master上的ds的 pods 默認會重新創建;在重建過程中,對于一些 其他pod,可能需要人工干預去重建,然后在清理docker運行時下的殘留進程。

檢查master節點升級成功,確保上面的pod正常。

kubectl?get?nodes -o jsonpath='{.items[*].status.nodeInfo.containerRuntimeVersion}'
3. 按照滾動比例升級node節點

需要升級的節點先驅逐,然后刪除對應rancher nodes 資源的label,就開始升級

#驅逐節點
kubectl drain xxxxxx.qihoo.net?--ignore-daemonsets?--delete-emptydir-data?--grace-period=0?--force
# 更改containerd的/etc/containerd/config.toml配置文件并重啟containerd、docker等systemctl daemon-reloadsystemctl restart containerdsystemctl restart dockerdocker restart kubelet kube-proxy?nginx-proxy
# 刪除對應機器label,機器開始升級;注意更換 -n c-zv6zb ?m-3ba9e952bcfbkubectl label nodes.management.cattle.io?-n?c-zv6zb? m-3ba9e952bcfb?qihoo.net/upgrade-
# 等機器更新完成后,刪除機器上的daemonset的podHOSTNAME=$(hostname)for?i?in?$(kubectl get po?-A?-owide?|grep?${HOSTNAME}|awk?'{print $1"@"$2}')do? ns=$(echo?$i|awk?-F'@'?'{print $1}')? po=$(echo?$i|awk?-F'@'?'{print $2}')? kubectl delete po?-n${ns}?${po}?--forcedone
# 查看 node 運行時為 containerd

四、企業級實踐案例

案例:公司遷移成效

指標

遷移前(Docker)

遷移后(Containerd)

提升幅度

Pod啟動延遲

2.3s

1.1s

52%

節點內存占用

1.8GB

1.2GB

33%

CI/CD流水線耗時

14分鐘

9分鐘

36%

五、常見問題解決方案

Q1: 如何兼容遺留Docker命令?

# 安裝nerdctl增強工具?sudo containerd-rootless-setuptool.sh install?alias?docker=nerdctl

Q2: 鏡像存儲如何遷移?

# 導出Docker鏡像?docker?save myapp:v1 > myapp.tar?# 導入Containerd?nerdctl load -i myapp.tar

Q3: 監控體系如何適配?

推薦部署方案:

  • Prometheus + cAdvisor 2.8+(支持Containerd指標)

  • Grafana儀表盤ID 13105(Containerd專項監控模板)

六、未來演進方向

隨著2025年Kubernetes 1.30版本發布,容器運行時生態將迎來新變革:

  1. WasmEdge集成:支持WebAssembly工作負載

  2. 硬件加速支持:NVIDIA Container Toolkit 3.0深度優化

  3. 統一鏡像規范:OCI Artifact全面普及

結語

容器運行時的升級不僅是技術組件的簡單替換,更是云原生架構持續進化的必經之路。選擇Containerd不僅意味著獲得性能提升,更是擁抱開放標準的戰略決策。建議結合自身技術棧,制定漸進式遷移計劃,充分利用CNCF生態工具鏈實現平滑過渡。


更多技術干貨,

請關注“360智匯云開發者”👇

360智匯云官網:https://zyun.360.cn(復制在瀏覽器中打開)

更多好用又便宜的云產品,歡迎試用體驗~

?添加工作人員企業微信👇,get更快審核通道+試用包哦~

圖片

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82281.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82281.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82281.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

30-消息隊列

一、消息隊列概述 隊列又稱消息隊列&#xff0c;是一種常用于任務間通信的數據結構&#xff0c;隊列可以在任務與任務間、 中斷和任務間傳遞信息&#xff0c;實現了任務接收來自其他任務或中斷的不固定長度的消息&#xff0c;任務能夠從隊列里面讀取消息&#xff0c;當隊列中的…

AI Agent開發第74課-解構AI偽需求的魔幻現實主義

開篇 ??在之前的系列中我們狂炫了AI Agent的各種高端操作(向量數據庫聯動、多模態感知、動態工作流等…),仿佛每個程序員都能用LLM魔法點石成金?。 但今天咱們要潑一盆透心涼的冷水——當企業把AI當成萬能膠水強行粘合所有需求時,連電風扇都能被玩出量子糾纏的魔幻現實…

低代碼AI開發新趨勢:Dify平臺化開發實戰

在人工智能快速發展的今天&#xff0c;AI應用的開發方式也在不斷演變。從傳統的手寫代碼到如今的低代碼甚至零代碼開發&#xff0c;技術的進步讓更多的非專業開發者也能輕松上手。本文將帶你走進Dify平臺化開發的世界&#xff0c;探索如何通過這一強大的低代碼AI開發平臺&#…

開發積累總結

export default 和export const 均用于從模塊導出函數、對象或原始值&#xff0c;區別在于&#xff1a; export default&#xff1a;一個文件中只能有一個&#xff0c;為默認導出&#xff0c;在引用時指定名字。 export const&#xff1a;一個文件中有多個&#xff0c;為命名…

【TCP/IP協議族詳解】

目錄 第1層 鏈路/網絡接口層—幀&#xff08;Frame&#xff09; 1. 鏈路層功能 2. 常見協議 2.1. ARP&#xff08;地址解析協議&#xff09; 3. 常見設備 第2層 網絡層—數據包&#xff08;Packet&#xff09; 1. 網絡層功能 2. 常見協議 2.1. ICMP&#xff08;互聯網…

vocabulary in program

編號意思&#xff08;英譯中&#xff09;音標單詞1n. 稀薄&#xff1b;稀罕&#xff1b;珍奇/?re?r?sn/rareness2n.登記表&#xff0c;注冊簿&#xff1b;注冊員&#xff1b;&#xff08;人或樂器的&#xff09;聲區&#xff0c;音區&#xff1b;&#xff08;適合特定場合使…

整平機技術進階:從原理到實戰的深度解析

一、整平機的力學原理與數學模型 整平機的核心在于通過材料塑性變形消除內應力&#xff0c;其力學過程可簡化為以下模型&#xff1a; 彈塑性變形理論 當材料通過輥輪時&#xff0c;表層受拉應力&#xff0c;芯部受壓應力&#xff0c;超過屈服強度后產生永久變形。 關鍵公式&a…

【b站計算機拓荒者】【2025】微信小程序開發教程 - chapter1 初識小程序 - 3項目目錄結構4快速上手

3 項目目錄結構 3.1 項目目錄結構 3.1.1 目錄介紹 # 1 項目主配置文件&#xff0c;在項目根路徑下&#xff0c;控制整個項目的-app.js # 小程序入口文件&#xff0c;小程序啟動&#xff0c;會執行此js-app.json # 小程序全局配置文件&#xff0c;配置小程序導航欄顏色等信息…

427. 建立四叉樹

https://leetcode.cn/problems/construct-quad-tree/description/?envTypestudy-plan-v2&envIdtop-interview-150思路&#xff1a;這題乍一看很復雜但是只要讀懂題找到規律就會發現其實很簡單 四叉樹的構造規律&#xff1a; 1. 如果一個區域的值全相等&#xff0c;那么這個…

IDEA中創建SpringBoot項目沒有Java8

IDEA中創建SpringBoot項目沒有Java8 文章目錄 IDEA中創建SpringBoot項目沒有Java8一&#xff1a;解決辦法 很久沒單獨創建springboot項目,今天使用idea的Spring Initializr 創建 Spring Boot項目時,發現java版本里,無法選擇jdk1.8,只有17、21、22,所以本文介紹了使用Spring Ini…

聊一聊手動測試與探索性測試的區別

目錄 一 定義與目標 手動測試 探索性測試 二 執行方式 手動測試 探索性測試 三 測試重點及計劃性 手動測試 探索性測試 四 測試效率及成本 手動測試 探索性測試 五 優缺點對比 六 關鍵卻別與總結 七 適應場景 手動測試 探索性測試 八 實際應用與結合 在我們進…

Spring用到的設計模式

Spring框架中廣泛應用了多種設計模式&#xff0c;以提升代碼的靈活性和可維護性。 工廠模式&#xff1a;BeanFactory&#xff0c;整個 IoC 容器就是一個工廠。 單例模式&#xff1a;Spring 管理的 Bean 默認都是單例的。 模版方法&#xff1a;如 RedisTemplate、JdbcTemplat…

Mybatis(2)

sql注入攻擊 SQL注入攻擊是一種常見的網絡安全威脅&#xff0c;攻擊者通過在輸入字段中插入惡意SQL代碼&#xff0c;繞過應用程序的安全機制&#xff0c;直接操縱數據庫。 SQL注入的原理 SQL注入利用應用程序未對用戶輸入進行充分過濾或轉義的漏洞。當用戶輸入被直接拼接到S…

【Node.js】高級主題

個人主頁&#xff1a;Guiat 歸屬專欄&#xff1a;node.js 文章目錄 1. Node.js 高級主題概覽1.1 高級主題架構圖 2. 事件循環與異步編程深度解析2.1 事件循環機制詳解事件循環階段詳解 2.2 異步編程模式演進高級異步模式實現 3. 內存管理與性能優化3.1 V8 內存管理機制內存監控…

冰箱熱交換的原理以及如何加氟

冰箱如何加氟&#xff1a; 氟利昂被節流裝置降壓后&#xff0c;進入冰箱的蒸發器&#xff0c;此時它處于低溫低壓液態狀態。在冰箱內部&#xff08;例如 0C 或 -10C&#xff09;&#xff1a;它很容易氣化&#xff08;因為其沸點很低&#xff09;在氣化過程中吸收周圍熱量。 1…

WordPress多語言插件安裝與使用教程

WordPress多語言插件GTranslate的使用方法 在wordpress網站后臺搜索多語言插件GTranslate并安裝&#xff0c;安裝完成、用戶插件后開始設置&#xff0c;以下為設置方法&#xff1a; 1、先在后臺左側找到Gtranslate&#xff0c;進入到設置界面 2、選擇要顯示的形式&#xff0c…

DELL EMC PowerStore BBU更換手冊

寫在前面 上周給客戶賣了一個BBU電池&#xff0c;客戶要寫一個更換方案。順利完成了更換&#xff0c;下面就把這個更換方案給大家share出來&#xff0c;以后客戶要寫&#xff0c;您就Ctrlc 和Ctrlv就可以了。 下面的步驟是最理想的方式&#xff0c;中間沒有任何的問題&#xff…

FastMCP:為大語言模型構建強大的上下文和工具服務

FastMCP&#xff1a;為大語言模型構建強大的上下文和工具服務 在人工智能快速發展的今天&#xff0c;大語言模型&#xff08;LLM&#xff09;已經成為許多應用的核心。然而&#xff0c;如何讓這些模型更好地與外部世界交互&#xff0c;獲取實時信息&#xff0c;執行特定任務&a…

CMake基礎:CMakeLists.txt 文件結構和語法

目錄 1.CMakeLists.txt基本結構 2.核心語法規則 3.關鍵命令詳解 4.常用預定義變量 5.變量和緩存 6.變量作用域與傳遞 7.注意事項 1.CMakeLists.txt基本結構 CMakeLists.txt 是 CMake 構建系統的核心配置文件&#xff0c;采用命令式語法組織項目結構和編譯流程。主要用于…

戰略-2.1 -戰略分析(PEST/五力模型/成功關鍵因素)

戰略分析路徑&#xff0c;先宏觀&#xff08;PEST&#xff09;、再產業&#xff08;產品生命周期、五力模型、成功關鍵因素&#xff09;、再競爭對手分析、最后企業內部分析。 本文介紹&#xff1a;PEST、產品生命周期、五力模型、成功關鍵因素、產業內的戰略群組 一、宏觀環境…