Containerd 1.7.2 离线安装与配置全指南(生产级优化)

发布于:2025-04-21 ⋅ 阅读:(43) ⋅ 点赞:(0)

Containerd 1.7.2 离线安装与配置全指南(生产级优化)

摘要:本文详细讲解在无外网环境下部署 Containerd 1.7.2 容器运行时的完整流程,涵盖二进制包安装、私有镜像仓库配置、Systemd服务集成等关键步骤,并提供生产环境调优建议。适用于Kubernetes集群、边缘计算等隔离场景。

一、环境准备与架构设计

1.1 系统要求

项目 最低要求 推荐配置
操作系统 CentOS 7+/Ubuntu 18+ CentOS 7.6+/Ubuntu 22.04 LTS
内核版本 ≥ 4.14 ≥ 5.4
磁盘空间 ≥ 1GB SSD + 50GB
架构支持 x86_64 ARM64(需对应包)

二、离线安装全流程

2.1 安装包处理

# 上传并解压二进制包(所有节点执行)
mkdir -p /root/containerd
tar -zxvf containerd-1.7.2-linux-amd64.tar.gz -C /root/containerd

# 复制可执行文件到系统路径
cp /root/containerd/bin/* /usr/bin/
cp /root/containerd/bin/ctr /usr/local/bin/

# 验证安装
containerd --version  # 应输出 containerd github.com/containerd/containerd v1.7.2

三、生产级配置调优

3.1 生成默认配置文件

mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

3.2 关键配置修改

# 文件路径:/etc/containerd/config.toml

# 容器数据存储路径(根据磁盘规划调整)
root = "/data/containerd"  

# 启用systemd cgroup驱动(必须与K8S一致)
SystemdCgroup = true

# 配置私有镜像仓库(替换实际IP和端口)
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
  endpoint = ["http://192.167.14.119:5000"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
  endpoint = ["http://192.167.14.119:5000"]

# 修改pause镜像地址(国内源)
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"

四、Systemd服务集成

4.1 创建服务文件

cat > /usr/lib/systemd/system/containerd.service <<EOF
[Unit]
Description=Containerd Container Runtime
Documentation=https://containerd.io
After=network.target

[Service]
ExecStartPre=/sbin/modprobe overlay
ExecStart=/usr/bin/containerd --config /etc/containerd/config.toml
Restart=always
RestartSec=5
LimitNOFILE=infinity

[Install]
WantedBy=multi-user.target
EOF

4.2 服务管理命令

# 重载配置
systemctl daemon-reload

# 启停服务
systemctl enable containerd --now
systemctl restart containerd

# 查看状态
systemctl status containerd

五、功能验证与测试

5.1 基础功能测试

# 拉取测试镜像(使用私有仓库)
ctr image pull docker.io/library/nginx:alpine

# 运行容器
ctr run -d --net-host docker.io/library/nginx:alpine nginx-test

# 查看运行容器
ctr container ls

5.2 私有仓库连通性验证

ctr image pull registry.k8s.io/pause:3.9
ctr image list | grep pause

六、生产环境调优建议

6.1 存储驱动优化

# 使用 overlay2 存储驱动(需内核支持)
[plugins."io.containerd.grpc.v1.cri".containerd]
  snapshotter = "overlayfs"

6.2 日志配置

# 限制日志大小与保留时间
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
  SystemdCgroup = true
  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options.log]
    max_size = "100MB"
    max_file = 3

6.3 资源限制

# 修改服务文件限制
[Service]
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity

七、故障排查指

现象 排查命令 解决方案
服务启动失败 journalctl -u containerd -xe 检查配置文件语法和路径
镜像拉取失败 ctr image pull -v 验证仓库证书及网络连通性
容器无法创建 ctr run --rm -t debug 检查存储驱动和cgroup配置
节点资源耗尽 df -h /data/containerd 清理旧镜像或扩容存储

扩展工具推荐

  • nerdctl:Containerd的Docker兼容CLI
  • crictl:K8S CRI调试工具

通过本文,您已完成Containerd的离线部署与生产级调优。建议结合Kubernetes集群验证运行时集成效果!

如果本教程帮助您解决了问题,请点赞❤️收藏⭐支持!欢迎在评论区留言交流技术细节!欲了解密码学知识,请订阅《密码学实战》专栏 → 密码学实战


网站公告

今日签到

点亮在社区的每一天
去签到