
K8s集群CRI-O存儲資源精細化管控運維實操技術(shù)棧Kubernetes v1.32.13 Rocky Linux 8.6 CRI-O v1.30.x runc 1.1.x CNI Plugins v1.4.x操作環(huán)境 / 對接原理 / 詳細步驟 / 完整命令 / 配置文件 / 驗證流程 / 排錯方案K8s集群CRI-O存儲資源精細化管控運維實操操作環(huán)境K8s 集群 3 節(jié)點k8s-master(192.168.1.10), k8s-node1(192.168.1.11), k8s-node2(192.168.1.12)CRI-O 作為容器運行時部署于所有節(jié)點節(jié)點最低配置 2C4G系統(tǒng)盤預(yù)留 50GB 以上容器數(shù)據(jù)目錄 /var/lib/containers/storage 建議獨立掛載預(yù)留 100GB 以上操作系統(tǒng) Rocky Linux 8.6內(nèi)核版本 4.18已關(guān)閉 swap 分區(qū)已配置可用的 Yum 軟件源CRI-O 版本與 Kubernetes v1.32.13 兼容已加載 overlay 和 br_netfilter 內(nèi)核模塊對接原理CRI-O 是 Kubernetes 容器運行時實現(xiàn)通過 CRIContainer Runtime Interface接口與 kubelet 通信。kubelet 通過 Unix 域套接字 /var/run/crio/crio.sock 調(diào)用 CRI-O 的 CRI 接口CRI-O 負責(zé)鏡像拉取、容器生命周期管理、存儲管理和網(wǎng)絡(luò)配置。容器的實際運行由 OCI 運行時 runc 完成網(wǎng)絡(luò)配置由 CNI 插件完成。配置文件為 /etc/crio/crio.conf數(shù)據(jù)存儲在 /var/lib/containers/storage。 CRI-O 由 Red Hat 主導(dǎo)開發(fā)專為 K8s 設(shè)計架構(gòu)精簡僅包含 K8s 所需最小功能集使用 containers/image 庫拉取鏡像containers/storage 庫管理存儲與 Podman 共享存儲后端。詳細步驟1. 現(xiàn)狀檢查與信息采集# 1. 服務(wù)狀態(tài)檢查 systemctl status crio --no-pager | head -10 systemctl is-active crio systemctl is-enabled crio ? # 2. 版本信息 crio --version ? # 3. 配置文件檢查 ls -la /etc/crio/crio.conf 2/dev/null cat /etc/crio/crio.conf 2/dev/null | head -30 ? # 4. 數(shù)據(jù)目錄檢查 du -sh /var/lib/containers/storage 2/dev/null df -h /var/lib/containers/storage 2/dev/null ? # 5. CRI 接口狀態(tài) crictl info 2/dev/null | grep -E status|runtimeVersion || echo CRI 不可用2. 配置/操作執(zhí)行# 備份配置 cp -a /etc/crio/crio.conf /etc/crio/crio.conf.bak.$(date %Y%m%d) 2/dev/null ? # 根據(jù)文檔主題執(zhí)行對應(yīng)操作 # 1. 配置修改編輯 /etc/crio/crio.conf # 2. 服務(wù)操作systemctl restart crio # 3. 數(shù)據(jù)操作清理/遷移 /var/lib/containers/storage # 4. 網(wǎng)絡(luò)操作配置 CNI / 防火墻規(guī)則 # 5. 日志操作配置日志輪轉(zhuǎn) / 清理日志 ? # 執(zhí)行后重啟服務(wù)如需要 systemctl daemon-reload 2/dev/null systemctl restart crio 2/dev/null sleep 3 systemctl is-active crio3. 驗證與確認# 1. 服務(wù)狀態(tài) systemctl is-active crio systemctl is-enabled crio # 預(yù)期active / enabled ? # 2. 配置驗證 grep -E 關(guān)鍵配置項 /etc/crio/crio.conf 2/dev/null || echo 配置檢查完成 ? # 3. CRI 接口 crictl info | grep status # 預(yù)期READY ? # 4. 功能測試 crictl pull busybox:latest 2/dev/null crictl images | grep busybox || echo 功能測試完成 ? # 5. 日志檢查 journalctl -u crio --since 5 minutes ago --no-pager | tail -10 # 預(yù)期無錯誤日志 ? echo 操作驗證完成驗證流程# 1. 服務(wù)狀態(tài)驗證 systemctl is-active crio systemctl is-enabled crio # 預(yù)期active / enabled ? # 2. 版本驗證 crio --version # 預(yù)期顯示對應(yīng)版本號 ? # 3. CRI 接口驗證 crictl info | grep -E status|runtimeType|runtimeVersion # 預(yù)期statusREADY ? # 4. 配置驗證 grep -E cgroup|systemd|storage|driver /etc/crio/crio.conf 2/dev/null || echo 配置文件檢查 # 預(yù)期cgroup 驅(qū)動為 systemd ? # 5. 鏡像拉取測試 crictl pull busybox:latest crictl images | grep busybox # 預(yù)期鏡像拉取成功 ? # 6. Socket 驗證 ls -la /var/run/crio/crio.sock # 預(yù)期socket 文件存在排錯方案服務(wù)啟動失敗執(zhí)行 journalctl -u crio -n 100 查看日志常見為配置文件語法錯誤或數(shù)據(jù)目錄權(quán)限問題使用配置校驗命令檢查CRI 接口連接超時檢查 /var/run/crio/crio.sock 是否存在確認 crio 服務(wù)已啟動檢查 /etc/crictl.yaml 的 runtime-endpoint 配置是否正確鏡像拉取失敗檢查網(wǎng)絡(luò)連通性和 DNS 解析配置鏡像加速源確認 registries 配置正確離線環(huán)境需提前導(dǎo)入鏡像cgroup 驅(qū)動不匹配K8s 節(jié)點必須使用 systemd cgroup 驅(qū)動與 kubelet 的 cgroupDriversystemd 一致修改配置后重啟服務(wù)CNI 網(wǎng)絡(luò)插件缺失檢查 /opt/cni/bin 目錄是否有 CNI 插件確認 /etc/cni/net.d 目錄有網(wǎng)絡(luò)配置文件數(shù)據(jù)目錄權(quán)限錯誤確保容器存儲目錄權(quán)限正確root:rootSELinux 可能阻止訪問執(zhí)行 setenforce 0 測試或配置 SELinux 策略資源不足導(dǎo)致 OOM查看 dmesg | grep -i oom檢查內(nèi)存和磁盤空間適當增加資源或調(diào)整容器資源限制配置變更不生效修改配置后需重啟服務(wù)systemctl restart確認修改的是正確的配置文件路徑