[k8s實戰]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集群驗證運行時集成效果!
如果本教程幫助您解決了問題,請點贊??收藏?支持!歡迎在評論區留言交流技術細節!欲了解密碼學知識,請訂閱《密碼學實戰》專欄 → 密碼學實戰