您的位置:首页 > 新闻 > 会展 > 苏州百度推广公司地址_优秀包装设计作品及解析_长沙网站优化方法_2345网址导航 中国最

苏州百度推广公司地址_优秀包装设计作品及解析_长沙网站优化方法_2345网址导航 中国最

2025/1/8 10:48:20 来源:https://blog.csdn.net/binqian/article/details/143350542  浏览:    关键词:苏州百度推广公司地址_优秀包装设计作品及解析_长沙网站优化方法_2345网址导航 中国最
苏州百度推广公司地址_优秀包装设计作品及解析_长沙网站优化方法_2345网址导航 中国最

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就是真正的容器运行时嵌套字通信接口文件。

   

  

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com