0
点赞
收藏
分享

微信扫一扫

Containerd 进阶

Containerd

Containerd 是一个基于 Go 语言编写的开源容器运行时,是 Docker 项目的核心组件之一,也是 Kubernetes 等容器编排工具的基础组件之一。
其原理是在操作系统内核中创建隔离的 Linux 容器,每个容器拥有自己的文件系统、网络和进程空间,从而实现轻量级的虚拟化,实现多个应用程序在同一个操作系统实例上运行的目的。

Containerd 架构图

image.png

Containerd 的架构包括以下组件:

  • Shim: 用于容器生命周期的管理。它作为容器和容器运行时之间的代理,负责在容器启动、停止等生命周期事件发生时与容器运行时进行交互。
  • Runtime: 实际运行容器的组件。常见的运行时包括 runc 和 crun 等。
  • Snapshotter: 管理容器文件系统快照的组件。常见的快照器包括 overlayfs 和 zfs 等。
  • Content Store: 管理容器镜像和元数据的组件。可以将容器镜像存储在本地或远程存储库中。
  • Registry: 用于管理容器镜像的存储、分发和检索。可以通过配置不同的 Registry,实现从不同的容器镜像仓库中拉取容器镜像。

部署 Containerd 的前置条件

  • 操作系统:Linux(x86_64或ARM64)
  • 内核版本:4.14或更高版本
  • 容器运行时:Docker或CRI-O
  • 数据库:etcd(可选)

步骤如下:

1.下载并安装containerd二进制文件 从containerd的官方Github仓库(https://github.com/containerd/containerd/releases)下载最新版本的二进制文件。

$ wget https://github.com/containerd/containerd/releases/download/v1.5.5/containerd-1.5.5-linux-amd64.tar.gz
$ tar -xvf containerd-1.5.5-linux-amd64.tar.gz
$ sudo cp bin/* /usr/local/bin/

2.创建并编辑containerd的配置文件

$ sudo mkdir -p /etc/containerd/
$ sudo nano /etc/containerd/config.toml

在配置文件中,可以设置containerd的监听地址、数据库配置、镜像存储位置等。以下是一个示例配置文件:

[plugins]
[plugins.io.containerd.grpc.v1.cri]
sandbox_image = k8s.gcr.io/pause:3.2

[debug]
level = debug

[grpc]
address = /run/containerd/containerd.sock

[metrics]
address = 127.0.0.1:1338

[proxy_plugins]

[plugins.io.containerd.grpc.v1.cri.cni]
bin_dir = /opt/cni/bin
conf_dir = /etc/cni/net.d
max_conf_num = 4
conf_template =

[plugins.io.containerd.grpc.v1.cri.registry]
[plugins.io.containerd.grpc.v1.cri.registry.mirrors]
[plugins.io.containerd.grpc.v1.cri.registry.mirrors.docker.io]
endpoint = [https://registry-1.docker.io]
[plugins.io.containerd.grpc.v1.cri.registry.mirrors.docker.io].skip_verify = true

[plugins.io.containerd.grpc.v1.cri.containerd]
snapshotter = overlayfs
[plugins.io.containerd.grpc.v1.cri.containerd.default_runtime_name]
runtime_type = io.containerd.runtime.v1.linux
runtime_engine = /usr/local/bin/runc
[plugins.io.containerd.grpc.v1.cri.containerd.untrusted_workload_runtime]
runtime_type = io.containerd.runtime.v1.linux
runtime_engine = /usr/local/bin/runsc

创建并编辑containerd的systemd服务文件

$ sudo nano /etc/systemd/system/containerd.service

在服务文件中,可以设置containerd的启动参数和依赖项。以下是一个示例服务文件:

[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target

[Service]
ExecStartPre=/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd
Restart=always
RestartSec=5
Delegate=yes
举报

相关推荐

0 条评论