网站竞争对手如何做调研,医疗类网站哪家做的好,做零食的网站,环境网站模板cri-dockerd的作用#xff1a; 在k8s1.24之前。k8s会通过dockershim来调用docker进行容器运行时containerd#xff0c;并且会自动安装dockershim#xff0c;但是从1.24版本之前k8s为了降低容器运行时的调用的复杂度和效率#xff0c;直接调用containerd了#xff0c;并且…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 · GitHubv0.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]
DescriptionCRI Interface for Docker Application Container Engine
Documentationhttps://docs.mirantis.com
Afternetwork-online.target firewalld.service docker.service
Wantsnetwork-online.target
Requirescri-docker.socket #注意这个[Service]
Typenotify
ExecStart/usr/bin/cri-dockerd[这个就是你放cri-dockerd执行文件的地方] --network-plugincni --pod-infra-container-imageregistry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6[自己根据实际情况填写] --container-runtime-endpoint fd://
ExecReload/bin/kill -s HUP $MAINPID
TimeoutSec0
RestartSec2
Restartalways# 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.
StartLimitBurst3# 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.
StartLimitInterval60s# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILEinfinity
LimitNPROCinfinity
LimitCOREinfinity# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMaxinfinity
Delegateyes
KillModeprocess[Install]
WantedBymulti-user.target
/usr/lib/systemd/system/cri-docker.socket
[Unit]
DescriptionCRI Docker Socket for the API
PartOfcri-docker.service[Socket]
ListenStream/run/cri-dockerd.sock [这个路径告诉了 系统systemd cri-dockerd的通信地址]
SocketMode0660
SocketUserroot
SocketGroupdocker[Install]
WantedBysockets.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就是真正的容器运行时嵌套字通信接口文件。