从 Docker 到 Containerd:Kubernetes 容器运行时迁移实战指南

news2025/7/28 8:35:19

一、背景

Kubernetes 自 v1.24 起移除了 dockershim,不再原生支持 Docker Engine,用户需迁移至受支持的 CRI 兼容运行时,如:

  • Containerd(推荐,高性能、轻量级)

  • CRI-O(专为 Kubernetes 设计)

  • Docker Engine + cri-dockerd(兼容方案,但需额外维护)

二、迁移步骤

1.前置准备

当前是3个node节点,都是docker运行时,现在驱逐node-3节点

图片

#移除节点
[root@master-1 ~]# kubectl drain node-3 --ignore-daemonsets

#停止相关服务
[root@node-3 ~]# systemctl stop kubelet
[root@node-3 ~]# systemctl stop docker
[root@node-3 ~]# systemctl disable docker --now
[root@node-3 ~]# systemctl stop kube-proxy

2.部署containerd服务

Containerd部署指南

3.修改kubelet参数

加上containerd运行时参数--container-runtime=remote  --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock  

[root@node-3 ~]# cat /usr/lib/systemd/system/kubelet.service
[Unit]
Description=Kubernetes Kubelet
Documentation=https://github.com/kubernetes/kubernetes
After=containerd.service
Requires=containerd.service

[Service]
WorkingDirectory=/var/lib/kubelet
ExecStart=/usr/local/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/cfg/kubelet-bootstrap.kubeconfig --cert-dir=/etc/kubernetes/ssl --kubeconfig=/etc/kubernetes/cfg/kubelet.config --config=/etc/kubernetes/cfg/kubelet.json --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.2   --alsologtostderr=true --logtostderr=false --log-dir=/var/log/kubernetes --container-runtime=remote --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock --v=2 
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

4.启动各个服务

#启动服务
[root@node-3 ~]# systemctl daemon-reload
[root@node-3 ~]# systemctl restart kubelet
[root@node-3 ~]# systemctl start kube-proxy

[root@node-3 ~]# systemctl status kubelet
[root@node-3 ~]# systemctl status kube-proxy

5.查看node-3节点状态

#目前节点3已经准备好啦,处于不可调度状态
[root@master-1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
node-1   Ready <none> 71d v1.23.1
node-2   Ready <none> 71d v1.23.1
node-3   Ready,SchedulingDisabled <none> 24h v1.23.1

6.将node节点恢复为可调度

#恢复可调度状态
[root@master-1 ~]# kubectl uncordon node-3
node/node-3 uncordoned

7.查看节点运行时

#发现运行时已经切换成功啦
[root@master-1 ~]# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
node-3   Ready <none> 24h v1.23.1   192.168.91.23   <none> CentOS Linux 7 (Core) 3.10.0-862.el7.x86_64 containerd://1.6.4

8.测试业务

部署一个nginx业务

[root@master-1 ~]# cat nginx.yaml 
apiVersion: apps/v1
kind: Deployment 
metadata:
  name: nginx-demo
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        imagePullPolicy: IfNotPresent


[root@master-1 ~]# kubectl apply -f nginx.yaml
[root@master-1 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-demo-68984b745f-5k5ts 1/1     Running 0          7m14s 10.244.1.2     node-2   <none> <none>
nginx-demo-68984b745f-9pmwk 1/1     Running 0          29m   10.244.2.56    node-3   <none> <none>
nginx-demo-68984b745f-bp8x2 1/1     Running 0          7m14s 10.244.0.2     node-1   <none> <none>

以上效果说明我们集群已从 Docker 全面切换至 Containerd,运行状态正常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2398696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp中view标签使用范围

不止用于微信小程序。兼容型号&#xff0c;是uniapp内置组件之一&#xff0c;在uniapp中进行了跨平台适配。支持所有uniapp的平台。如微信小程序、h5、app、支付宝小程序

欢乐熊大话蓝牙知识14:用 STM32 或 EFR32 实现 BLE 通信模块:从0到蓝牙,你也能搞!

&#x1f680; 用 STM32 或 EFR32 实现 BLE 通信模块&#xff1a;从0到蓝牙&#xff0c;你也能搞&#xff01; “我能不能自己用 STM32 或 EFR32 实现一个 BLE 模块&#xff1f;” 答案当然是&#xff1a;能&#xff01;还能很帅&#xff01; &#x1f468;‍&#x1f3ed; 前…

IDEA 在公司内网配置gitlab

赋值项目链接 HTTPS 将HTTP的链接 ip地址换成 内网地址 例如&#xff1a;https:172.16.100.18/...... 如果出现需要需要Token验证的情况&#xff1a; 参考&#xff1a;Idea2024中拉取代码时GitLab提示输入token的问题_gitlab token-CSDN博客

黑马Java面试笔记之 微服务篇(业务)

一. 限流 你们项目中有没有做过限流?怎么做的? 为什么要限流呢? 一是并发的确大(突发流量) 二是防止用户恶意刷接口 限流的实现方式: Tomcat:可以设置最大连接数 可以通过maxThreads设置最大Tomcat连接数,实现限流,但是适用于单体架构 Nginx:漏桶算法网关,令牌桶算法自定…

通过WiFi无线连接小米手机摄像头到电脑的方法

通过WiFi无线连接小米手机摄像头到电脑的方法 以下是基于Scrcpy和DroidCam两种工具的无线连接方案&#xff0c;需提前完成开发者模式与USB调试的开启&#xff08;参考原教程步骤&#xff09;&#xff1a; 方法一&#xff1a;Scrcpy无线投屏&#xff08;无需手机端安装&#xf…

长短期记忆(LSTM)网络模型

一、概述 长短期记忆&#xff08;Long Short-Term Memory&#xff0c;LSTM&#xff09;网络是一种特殊的循环神经网络&#xff08;RNN&#xff09;&#xff0c;专门设计用于解决传统 RNN 在处理长序列数据时面临的梯度消失 / 爆炸问题&#xff0c;能够有效捕捉长距离依赖关系。…

CSS3美化页面元素

1. 字体 <span>标签 字体样式⭐ 字体类型&#xff08;font-family&#xff09; 字体大小&#xff08;font-size&#xff09; 字体风格&#xff08;font-style&#xff09; 字体粗细&#xff08;font-weight&#xff09; 字体属性&#xff08;font&#xff09; 2. 文本 文…

WPS 利用 宏 脚本拆分 Excel 多行文本到多行

文章目录 WPS 利用 宏 脚本拆分 Excel 多行文本到多行效果需求背景&#x1f6e0; 操作步骤代码实现代码详解使用场景注意事项总结 WPS 利用 宏 脚本拆分 Excel 多行文本到多行 在 Excel 工作表中&#xff0c;我们经常遇到一列中包含多行文本&#xff08;用换行符分隔&#xff…

AI“实体化”革命:具身智能如何重构体育、工业与未来生活

近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术的飞速发展正在重塑各行各业&#xff0c;而具身智能&#xff08;Embodied AI&#xff09;作为AI领域的重要分支&#xff0c;正逐渐从实验室走向现实应用。具身智能的核心在于让AI系统具备物理实体&#xff0c;能够与环…

R语言基础| 创建数据集

在R语言中&#xff0c;有多种数据类型&#xff0c;用以存储和处理数据。每种数据类型都有其特定的用途和操作函数&#xff0c;使得R语言在处理各种数据分析任务时非常灵活和强大&#xff1a; 向量&#xff08;Vector&#xff09;: 向量是R语言中最基本的数据类型&#xff0c;它…

Centos7搭建zabbix6.0

此方法适用于zabbix6以上版本zabbix6.0前期环境准备&#xff1a;Lamp&#xff08;linux httpd mysql8.0 php&#xff09;mysql官网下载位置&#xff1a;https://dev.mysql.com/downloads/mysql/Zabbix源码包地址&#xff1a;https://www.zabbix.com/cn/download_sourcesZabbix6…

Docker 部署前后端分离项目

1.Docker 1.1 什么是 Docker &#xff1f; Docker 是一种开源的 容器化平台&#xff0c;用于开发、部署和运行应用程序。它通过 容器&#xff08;Container&#xff09; 技术&#xff0c;将应用程序及其依赖项打包在一个轻量级、可移植的环境中&#xff0c;确保应用在不同计算…

云游戏混合架构

云游戏混合架构通过整合本地计算资源与云端能力&#xff0c;形成了灵活且高性能的技术体系&#xff0c;其核心架构及技术特征可概括如下&#xff1a; 一、混合架构的典型模式 分层混合模式‌ 前端应用部署于公有云&#xff08;如渲染流化服务&#xff09;&#xff0c;后端逻辑…

【小红书】API接口,获取笔记核心数据

小红书笔记核心数据API接口详解 - 深圳小于科技提供专业数据服务 深圳小于科技&#xff08;官网&#xff1a;https://www.szlessthan.com&#xff09;推出的小红书笔记核心数据API接口&#xff0c;为开发者提供精准的笔记互动数据分析能力&#xff0c;助力内容运营与商业决策。…

会议室钥匙总丢失?换预约功能的智能门锁更安全

在企业日常运营中&#xff0c;会议室作为重要的沟通与协作场所&#xff0c;其管理效率与安全性直接影响着企业的运作顺畅度。然而&#xff0c;传统会议室管理方式中钥匙丢失、管理不便等问题频发&#xff0c;给企业带来了不少困扰。近期&#xff0c;某企业引入了启辰智慧预约系…

Redis底层数据结构之跳表(SkipList)

SkipList是Redis有序结合ZSet底层的数据结构&#xff0c;也是ZSet的灵魂所在。与之相应的&#xff0c;Redis还有一个无序集合Set&#xff0c;这两个在底层的实现是不一样的。 标准的SkipList&#xff1a; 跳表的本质是一个链表。链表这种结构虽然简单清晰&#xff0c;但是在查…

Ubuntu安装Docker命令清单(以20.04为例)

在你虚拟机上完成Ubuntu的下载后打开终端&#xff01;&#xff01;&#xff01; Ubuntu安装Docker终极命令清单&#xff08;以20.04为例&#xff09; # 1. 卸载旧版本&#xff08;全新系统可跳过&#xff09; sudo apt-get remove docker docker-engine docker.io containerd …

HarmonyOS Next 弹窗系列教程(2)

HarmonyOS Next 弹窗系列教程&#xff08;2&#xff09; 上一章节我们讲了自定义弹出框 (openCustomDialog)&#xff0c;那对于一些简单的业务场景&#xff0c;不一定需要都是自定义&#xff0c;也可以使用 HarmonyOS Next 内置的一些弹窗效果。比如&#xff1a; 名称描述不依…

中小企业搭建网站选择虚拟主机还是云服务器?华为云有话说

这是一个很常见的问题&#xff0c;许多小企业在搭建网站时都会面临这个选择。虚拟主机和云服务器都有各自的优缺点&#xff0c;需要根据自己的需求和预算来决定。 虚拟主机是指将一台物理服务器分割成多个虚拟空间&#xff0c;每个空间都可以运行一个网站。虚拟主机的优点是价格…

使用 HTML + JavaScript 在高德地图上实现物流轨迹跟踪系统

在电商行业蓬勃发展的今天&#xff0c;物流信息查询已成为人们日常生活中的重要需求。本文将详细介绍如何基于高德地图 API 利用 HTML JavaScript 实现物流轨迹跟踪系统的开发。 效果演示 项目概述 本项目主要包含以下核心功能&#xff1a; 地图初始化与展示运单号查询功能…