【Cri-Dockerd】安装cri-dockerd

news2024/11/28 10:33:50

cri-dockerd的作用: 

    在k8s1.24之前。k8s会通过dockershim来调用docker进行容器运行时containerd,并且会自动安装dockershim,但是从1.24版本之前k8s为了降低容器运行时的调用的复杂度和效率,直接调用containerd了,并且不会在安装dockershim,也不在维护升级了。由于docker并没有完全遵守cri的规范,那么k8s想继续使用docker做为容器运行时的话,就要单独在用一个接口,且这个接口遵守了相关的cri接口规范,然后就有了cri-dockerd【下载地址:Releases · Mirantis/cri-dockerd · GitHub】。所有在k8s1.24之后如果还想继续用docker做为容器运行时的话,就要安装这个cri-dockerd了。

安装步骤1

下载安装文件,可以直接下载二进制文件 或者 安装包,由于我系统是arm的,发布里面之后二进制文件:  cri-dockerd-0.2.6.arm64.tgz ,解压之后是一个二进制文件cri-dockerd

把文件放到正确的目录

然后把上面的执行文件 放到 /usr/bin/ 目录中,并给于可执行权限  

chmod +x cri-dockerd

  当然也可以放在/usr/local/bin. 自己根据习惯放,这个存放目录下面会用到

/usr/bin/ 和 /usr/local/bin/目录区别

下面解释下两个目录的基本区别:/usr/bin/ 和 /usr/local/bin/ 都是 Unix 和 Linux 系统中用于存放可执行文件的目录,但它们之间有一些关键的区别,主要体现在用途和管理上:

/usr/bin/

用途上:这是系统默认安装的大多数用户命令的存放位置。通常由包管理系统(如 Debian/Ubuntu 的 APT 或 Red Hat/CentOS 的 YUM/DNF)来管理。
内容:这里存放的是操作系统自带的或通过官方软件仓库安装的程序。
权限:一般情况下,普通用户没有权限直接向这个目录写入文件,需要超级用户权限才能修改。

/usr/local/bin/

用途:

     这个目录主要用于存放本地编译安装的软件、脚本或第三方应用程序,这些通常不是通过系统的包管理器安装的。
内容:

      这里可以存放你自己编译的软件、从源代码安装的程序、或者你手动下载并解压的二进制文件等。
权限:

      虽然默认情况下也需要超级用户权限来修改此目录,但是它被设计为供管理员用来放置不在标准发行版中的软件,因此更灵活。
主要区别

维护方式:
    /usr/bin/ 中的内容通常是通过包管理器维护,更新时会被覆盖。
    /usr/local/bin/ 里的内容不会被系统更新影响,适合存放自定义或第三方工具。
安全性与稳定性:
      使用 /usr/local/bin/ 可以避免因系统升级导致的手动安装软件被意外删除或覆盖。
将个人添加的软件放在 /usr/local/bin/ 而不是 /usr/bin/,有助于保持系统的整洁,并且更容易区分哪些是系统自带的,哪些是你自己安装的。
环境变量:
      在许多Linux发行版中,/usr/local/bin 通常位于 PATH 环境变量的前面,这意味着如果两个目录中存在同名的可执行文件,那么 /usr/local/bin 中的版本会优先被使用。
总结来说,如果你安装的是来自官方渠道的软件,它通常会被放置在 /usr/bin/;而如果你手动编译了某个软件,或者安装了一个不在官方仓库中的第三方应用,则推荐将其放置在 /usr/local/bin/ 中。这样做的好处是可以更好地管理和维护你的系统。

编写相关的配置文件

     由于只是一个二进制文件,现在需要把cri-dockerd作为一个系统启动服务的话,就需要编写cri-docker.service 文件,以便cri-dockerd能被纳入systemd维护中,以及 cri-docker.socket文件,此cri-docker.socket 文件实际上是一个 systemd socket unit 文件,这个文件定义了 systemd 如何管理一个特定的 Unix 域套接字,以便在有连接请求时启动相应的服务.

/usr/lib/systemd/system/cri-docker.service 文件内容

[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket   #注意这个

[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd[这个就是你放cri-dockerd执行文件的地方] --network-plugin=cni   --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6[自己根据实际情况填写] --container-runtime-endpoint fd://
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3

# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target

/usr/lib/systemd/system/cri-docker.socket

[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service

[Socket]
ListenStream=/run/cri-dockerd.sock  [这个路径告诉了 系统systemd cri-dockerd的通信地址]
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target

  这个几个步骤就把准备工作做好了,然后执行

执行

 1、systemctl daemon-reload

  2、 启动docker

  3、systemctl enable cri-docker 

      systemctl start  cri-docker 

  4、查看状态

      systemctl status  cri-docker

最后 

  最后这个cri-docker 是要被k8s使用的,而k8s中和容器调度相关的进程就是kubelet了,那么就要告诉kubelet,用这个cri-docker来和docker进行交互了,需要修改配置文件中的内容: 把参数container-runtime-endpoint 的值改成:

 --container-runtime-endpoint unix:///run/crio-docker.sock  如果不用cri-docker,而直接用containerd的话,这个参数就配置成:  /run/containerd/containerd.sock。这个sock就是真正的容器运行时嵌套字通信接口文件。

   

  

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

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

相关文章

java实现的音视频格式转化器

一、前言 最近写了一款图形界面版的音视频格式转化器&#xff0c;可以实现将多种视频之间进行转化&#xff0c;非常好用&#xff0c;如将AVI转换为&#xff0c;TS&#xff0c;FLV&#xff0c;MP4等。音频可将MP3转成WAV。 二、实现 1.需引入相关maven依赖。 <!-- 核心包 -…

Java知识巩固(十二)

I/O JavaIO流了解吗&#xff1f; IO 即 Input/Output&#xff0c;输入和输出。数据输入到计算机内存的过程即输入&#xff0c;反之输出到外部存储&#xff08;比如数据库&#xff0c;文件&#xff0c;远程主机&#xff09;的过程即输出。数据传输过程类似于水流&#xff0c;因…

1.3 面向对象 C++面试问题

1.3.1 简述一下什么是面向对象,面向对象与面向过程的区别 什么是面向对象 面向对象&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种编程范式&#xff0c;它通过将现实世界中的实体抽象为“对象”来组织代码。面向对象编程关注对象及其交互&#x…

Visual Studio Code

代码自动保存 打开设置搜索auto save&#xff0c;设置为afterDelay 设置延迟时间&#xff0c;单位是毫秒 启用Ctrl鼠标滚轮对字体进行缩放 搜索Mouse Wheel Zoom&#xff0c;把该选项勾选上即可 Python插件 运行和调试Python

Hash表算法

哈希表 理论知识&#xff08;本文来自于代码随想录摘抄&#xff09;什么是哈希常见的三种哈希结数组&#xff1a;set:map:其他常用方法或者技巧&#xff08;自己总结的&#xff09; 练习题和讲解有效的字母移位词349. 两个数组的交集1. 两数之和454. 四数相加 II15. 三数之和 总…

广泛的四款录屏工具专业软件解析!!!

当代社会的进步&#xff0c;电脑、手机等数码产品的普及&#xff0c;改变了我们的沟通形式&#xff0c;只需要动动手指&#xff0c;就能实现视频连接&#xff0c;影像播放等。有时候就需要我们录屏留存。在市面上的录屏软件种类繁多&#xff0c;从简洁易用的小工具到功能丰富的…

通俗直观介绍ChatGPT背后的大语言模型理论知识

“AI 的 iPhone 时刻到来了”。非算法岗位的研发同学’被迫’学习 AI&#xff0c;产品岗位的同学希望了解 AI。但是&#xff0c;很多自媒体文章要么太严谨、科学&#xff0c;让非科班出身的同学读不懂&#xff1b;要么&#xff0c;写成了科幻文章&#xff0c;很多结论都没有充分…

力扣21 : 合并两个有序链表

链表style 描述&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#xff1a; 节点大小相同时&#xff0c;l1的节点在前 何解&#xff1f; 1&#xff0c;遍历两个链表&#xff0c;挨个比较节点大小 同时遍…

MATLAB——入门知识

内容源于b站清风数学建模 目录 1.帮助文档 2.注释 3.特殊字符 4.设置MATLAB数值显示格式 4.1.临时更改 4.2.永久改 5.常用函数 6.易错点 1.帮助文档 doc sum help sum edit sum 2.注释 ctrl R/T 3.特殊字符 4.设置MATLAB数值显示格式 4.1.临时更改 format lon…

LCR 024. 反转链表 最细图片逐行解析过程

LCR 024. 反转链表 给定单链表的头节点 head &#xff0c;请反转链表&#xff0c;并返回反转后的链表的头节点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例…

【JavaEE】【多线程】定时器

目录 一、定时器简介1.1 Timer类1.2 使用案例 二、实现简易定时器2.1 MyTimerTask类2.2 实现schedule方法2.3 构造方法2.4 总代码2.5 测试 一、定时器简介 定时器&#xff1a;就相当于一个闹钟&#xff0c;当我们定的时间到了&#xff0c;那么就执行一些逻辑。 1.1 Timer类 …

TVM前端研究--Relay

文章目录 深度学习IR梳理1. IR属性2. DL前端发展3. DL编译器4. DL编程语言Relay的主要内容一、Expression in Relay1. Dataflow and Control Fragments2. 变量3. 函数3.1 闭包3.2 多态和类型关系3.3. Call4. 算子5. ADT Constructors6. Moudle和Global Function7. 常量和元组8.…

SSL/TLS 密码套件漏洞分析以及修复方法

1. 前言 在当今数字化时代&#xff0c;网络安全至关重要。SSL/TLS 协议作为保障网络通信安全的重要手段&#xff0c;广泛应用于各类网络应用中。然而&#xff0c;如同任何技术一样&#xff0c;SSL/TLS 也并非绝对安全&#xff0c;存在着一些可能被攻击者利用的漏洞。本文将深入…

stm32入门教程--DMA 超详细!!!

目录 简介 工作模式 1、数据转运DMA 2、ADC扫描模式DMA 简介 工作模式 1、数据转运DMA 这个例子的任务是将SRAM的数组DataA&#xff0c;转运到另一个数组DataB中&#xff0c;这个基本结构里的各个参数应该如何配置呢&#xff1f; 首先是外设站点和存储器站点的起始地址、…

大数据新视界 -- 大数据大厂之大数据重塑影视娱乐产业的未来(4 - 3)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

TIFS-2024 细粒度表示和重组在换衣行人重识别中的应用

总体结论 本文提出了一种新的细粒度表示与重构&#xff08;FIRe2&#xff09;框架&#xff0c;用于解决布变人重识别问题。通过细粒度特征挖掘和属性重构&#xff0c;FIRe2在不依赖任何辅助信息的情况下&#xff0c;实现了最先进的性能。该方法在多个基准数据集上取得了显著的…

基于JSP的篮球系列网上商城系统【附源码】

基于JSP的篮球系列网上商城系统 效果如下&#xff1a; 系统首页界面 商品信息界面 购物车界面 购物车界面 管理员登录界面 管理员功能界面 用户注册界面 我的收藏界面 研究背景 21世纪&#xff0c;我国早在上世纪就已普及互联网信息&#xff0c;互联网对人们生活中带来了无限…

重学SpringBoot3-怎样优雅停机

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-怎样优雅停机 1. 什么是优雅停机&#xff1f;2. Spring Boot 3 优雅停机的配置3. Tomcat 和 Reactor Netty 的优雅停机机制3.1 Tomcat 优雅停机3.2 Reac…

MySQL 数据库备份与恢复全攻略

MySQL 数据库备份与恢复全攻略 引言 在现代应用中&#xff0c;数据库是核心组件之一。无论是个人项目还是企业级应用&#xff0c;数据的安全性和完整性都至关重要。为了防止数据丢失、损坏或意外删除&#xff0c;定期备份数据库是必不可少的。本文将详细介绍 MySQL 数据库的备…

Cesium基础-(Entity)-(Billboard)

里边包含Vue、React框架代码 2、Billboard 广告牌 Cesium中的Billboard是一种用于在3D场景中添加图像标签的简单方式。Billboard提供了一种方法来显示定向的2D图像,这些图像通常用于表示简单的标记、符号或图标。以下是对Billboard的详细解读: 1. Billboard的定义和特性 B…