【Cri-Dockerd】安装cri-dockerd

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,v0.3.15】。所有在k8s1.24之后如果还想继续用docker做为容器运行时的话,就要安装这个cri-dockerd了。

安装步骤1

下载安装文件,可以直接下载二进制文件 或者 安装包,由于我系统是arm的,发布里面之后二进制文件:  cri-dockerd-v0.3.15.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.rhkb.cn/news/459919.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git下载和配置

git是什么? Git是一种分布式版本控制系统,用于跟踪文件的变化,尤其是源代码。它允许多个开发者在同一项目上进行协作,同时保持代码的历史记录。Git的主要特点包括: 分布式:每个开发者都有项目的完整副本&a…

GPT避坑指南:如何辨别逆向、AZ、OpenAI官转

市面上有些说自己是官转,一刀只需要1块甚至几毛钱,并声称官方倍率的,很大可能就是使用的是 逆向或Azure。 如何鉴别逆向 逆向的种类很多,主要分为3类 逆向不知名A| 镜像站或偷的 key。成本约等于0,调用聊天数据可能在…

postgresql增量备份系列一

简介 在一些大容量得数据库应用中,采用全量备份得方式,会带来大量时间浪费和开销,此时定期的增量备份可以使得数据存储周期变长。本文讲解几个增量备份工具 pg_basebackup pg_receivewal(异地归档模式) 使用pg_bas…

arcgis pro 3.3.1安装教程

一、获取方式: http://dt4.8tupian.net/2/29913a61b1500.pg3二、软件目录: 三、安装步骤: (1)安装软件运行环境windowsdesktop-runtime 8.0.4; (2)选中安装文件arcgispro_33zh_cn_190127.exe&…

LabVIEW汽车状态监测系统

LabVIEW汽车状态监测系统通过模拟车辆运行状态,有效地辅助工程师进行故障预测和维护计划优化,从而提高汽车的可靠性和安全性。 项目背景: 现代汽车工业面临着日益增长的安全要求和客户对于车辆性能的高期望。汽车状态监测系统旨在实时监控汽…

GiantPandaCVARM Neon Intrinsics 学习指北:从入门、进阶到学个通透

【GiantPandaCV导语】Neon是手机普遍支持的计算加速指令集,是AI落地的工程利器。Neon Intrinsics 的出现,缓解了汇编语言难学难写的难题,值得工程师们开发利用。 前言 Neon是ARM平台的向量化计算指令集,通过一条指令完成多个数据…

python爬虫抓取豆瓣数据教程

环境准备 在开始之前,你需要确保你的Python环境已经安装了以下库: requests:用于发送HTTP请求。BeautifulSoup:用于解析HTML文档。 如果你还没有安装这些库,可以通过以下命令安装: pip install requests…

SD-WAN分布式组网:构建高效、灵活的企业网络架构

随着企业数字化转型的深入,分布式组网逐渐成为企业网络架构中的核心需求。无论是跨区域的分支机构互联,还是企业与云服务的连接,如何在不同区域实现高效、低延迟的网络传输,已成为业务成功的关键。SD-WAN(软件定义广域…

使用Python和OpenCV实现火焰检测

使用Python和OpenCV实现火焰检测 项目解释: 此 Python 代码是使用 OpenCV、线程、声音和电子邮件功能的火灾探测系统的简单示例。 以下是它的功能的简单描述: 导入库:代码首先导入必要的库: cv2:用于图像和视频处理…

一篇文章入门傅里叶变换

文章目录 傅里叶变换欧拉公式傅里叶变换绕圈记录法质心记录法傅里叶变换公式第一步:旋转的表示第二步:缠绕的表示第三步:质心的表示最终步:整理积分限和系数 参考文献 傅里叶变换 在学习傅里叶变换之前,我们先来了解一…

基于uniapp微信小程序的校园二手书交易系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

Spring 框架环境搭建

一、环境要求 JDK版本: JDK1.7及以上版本 Spring版本: Spring5.x版本 二、新建Maven项目 1. 创建 Maven 的普通 Java 项⽬ 2.设置项目坐标 3.设置项目的Maven环境 4.设置项目的名称和存放的工作空间 三、调整项目环境 1.修改JDK版本 properties&g…

前端 eslint 配置,以及在git提交之前自动format

目录 1、配置eslint步骤 1、eslint安装配置步骤 2、配置scripts步骤 3、测试eslint 2、配置git-hook1、安装环境2、最终效果 众所周知,前端项目可以在报很多error的情况下运行。但是良好的代码规范仍然有利于项目的开发维护,这里提供我的规范&#xff0c…

SpringBoot篇(运维实用篇 - 临时属性)

目录 一、临时属性设置 1. 简介 2. 属性加载优先级 那是否还有其他的配置方式呢? 3. 知识小结 二、开发环境中使用临时属性 1. 如何操作 2. 知识小结 3. 思考 三、配置文件分类 1. 简介 2. 4个级别 3. 为什么设计多种配置文件? 一个典型的应…

基于vue框架的的汇生活家居商城的设计与实现bdjlq(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:商品分类,商品信息,用户 开题报告内容 开题报告 项目名称:基于Vue框架的汇生活家居商城的设计与实现 一、项目背景与意义 随着互联网技术的不断发展和普及,电子商务已成为现代商业的重要组成部分。家居商城作…

免费可离线的AI抠图工具(鲜艺AI抠图 )免费下载

鲜艺AI抠图是一款使用Tauri 2 和RMBG-1.4 开发并免费提供的AI抠图工具,它能够快速去除图片背景,并支持本地和在线图片处理。: 极速AI抠图: 基于最新的AI技术,能够精准识别图像中的前景和背景,实现快速抠图…

面试经典 150 题.P27. 移除元素(002)

本题来自:力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解: class Solution {public int removeElement(int[] nums, int…

标准正态分布的数据 tensorflow 实现正态分布图,python 编程,数据分析和人工智能...

登录后复制 import tensorflow as tfimport matplotlib.pyplot as plt# 设置随机种子以获得可重复的结果tf.random.set_seed(42)# 生成正态分布的数据# mean0 和 stddev1 表示生成标准正态分布的数据# shape(1000,) 表示生成1000个数据点data tf.random.normal(mean0, stddev1…

13.音乐管理系统(基于SpringBoot + Vue)

目录 1.系统的受众说明 ​​​​​​​ 2 需求分析 2.1用例图及用例分析 2.1.1 用户用例图及用例分析 2.1.2 管理员用例图及用例分析 2.2 系统结构图和流程图 2.2.1 音乐播放器的系统流程图(图2.2.1-1) 2.2.2 系统功能表(表2.2.2…

iOS调试真机出现的 “__llvm_profile_initialize“ 错误

一、错误形式&#xff1a; app启动就崩溃&#xff0c;如下&#xff1a; Demo__llvm_profile_initialize:0x1045f7ab0 <0>: stp x20, x19, [sp, #-0x20]!0x1045f7ab4 <4>: stp x29, x30, [sp, #0x10]0x1045f7ab8 <8>: add x29, sp, #0x100x1…