当前位置: 首页 > news >正文

Rocky Linux 9.0 完整安装 containerd(K8s )教程

Rocky Linux 9.0 完整安装 containerd(K8s 标准容器运行时)分步教程

Rocky9 系列官方弃用 Docker,K8s 1.24+ 强制使用 containerd,全程永久配置、重启不失效,适配 K8s 1.24~1.33。

前置准备(所有节点必须执行)

1. 关闭防火墙 / SELinux(生产可选放行端口,测试直接关闭)

bash
# 关闭防火墙开机自启并立即停止
systemctl stop firewalld
systemctl disable firewalld

# SELinux 永久关闭
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 临时生效
setenforce 0

2. 永久关闭 Swap(K8s 硬性要求)

bash
# 临时关闭
swapoff -a
# 永久注释 fstab 中的swap
sed -i '/swap/s/^/#/' /etc/fstab

3. 加载内核模块、开启 ip 转发(容器网络必需)

bash
# 加载overlay、br_netfilter内核模块
modprobe overlay
modprobe br_netfilter

# 永久内核参数配置
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF

# 生效配置
sysctl --system
# 验证
sysctl net.ipv4.ip_forward

步骤 1:配置阿里云 containerd 软件源(国外源太慢)

bash
# 安装yum工具
dnf install -y dnf-utils

# 添加kubernetes阿里云yum源(同时附带containerd)
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el9-x86_64/
enabled=1
gpgcheck=1
repo_gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# 刷新yum缓存
dnf clean all && dnf makecache

步骤 2:安装 containerd

bash
# 安装指定稳定版 1.7.20(适配K8s全版本)
dnf install -y containerd.io-1.7.20

步骤 3:生成默认配置文件(关键)

containerd 默认无配置文件,需要导出标准配置到/etc/containerd/config.toml

bash
containerd config default > /etc/containerd/config.toml

步骤 4:修改配置文件(4 项核心修改,K8s 必改)

4.1 修改配置

bash
vim /etc/containerd/config.toml

执行以下替换命令(不用手动改文件,一键替换)

bash
# 1. cgroup驱动改为systemd(K8s强制要求)
sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

# 2. 修改镜像加速器(阿里云镜像仓库,解决拉取k8s镜像超时)
sed -i 's#registry.k8s.io#registry.aliyuncs.com/google_containers#g' /etc/containerd/config.toml

# 3. 配置国内docker.io镜像加速(可选,加速业务镜像)
sed -i '/\[plugins."io.containerd.grpc.v1.cri".registry.mirrors\]/a \ [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]\n endpoint = ["https://docker.mirrors.ustc.edu.cn"]' /etc/containerd/config.toml

4.2 验证修改结果

bash
grep SystemdCgroup /etc/containerd/config.toml
# 输出 SystemdCgroup = true 代表修改成功

步骤 5:设置 containerd 开机自启 + 启动服务

bash
# 开机自启并立即启动
systemctl enable --now containerd

# 查看运行状态(显示 active (running) 正常)
systemctl status containerd

步骤 6:验证 containerd 功能

6.1 查看版本

bash
ctr --version

6.2 测试拉取镜像

bash
# 拉取nginx测试镜像
ctr images pull docker.io/library/nginx:alpine
# 查看本地镜像
ctr images list

步骤 7:(可选)安装 crictl 工具(K8s 专用容器调试工具)

crictl 是 k8s 标准容器调试命令,替代 docker 命令

bash
# 安装
dnf install -y cri-tools

# 配置crictl连接containerd
cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF

# 验证连通性
crictl info

完整一键脚本(复制直接整条执行,Rocky9.0 通用)

bash
# 1. 基础环境优化
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
modprobe overlay && modprobe br_netfilter
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system

# 2. 配置yum源
dnf install -y dnf-utils
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el9-x86_64/
enabled=1
gpgcheck=1
repo_gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
dnf clean all && dnf makecache

# 3. 安装并配置containerd
dnf install -y containerd.io-1.7.20 cri-tools
containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
sed -i 's#registry.k8s.io#registry.aliyuncs.com/google_containers#g' /etc/containerd/config.toml
sed -i '/\[plugins."io.containerd.grpc.v1.cri".registry.mirrors\]/a \ [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]\n endpoint = ["https://docker.mirrors.ustc.edu.cn"]' /etc/containerd/config.toml

# 4. 启动服务
systemctl enable --now containerd
cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF

# 5. 校验
systemctl status containerd
crictl info

常见故障排查

  1. containerd 启动失败:检查/etc/containerd/config.toml语法,不能有多余空格
  1. K8s node 初始化报错 cgroup:确认SystemdCgroup = true
  1. 镜像拉取超时:检查镜像加速器配置,切换阿里云 / 中科大镜像源
  1. 重启后失效:确认systemctl enable containerd执行成功,swap、sysctl 配置写入永久文件
http://www.jsqmd.com/news/1355156/

相关文章:

  • web前端基础到入门——15day
  • 字节跳动算法面试通关指南:2年高频LeetCode题目深度解析与实战策略
  • 为什么选择OpenAlphaDiffract?材料科学研究者不可错过的AI辅助工具
  • 被子植物DNA甲基化预测新突破:a2zchromatin-methylation模型原理解析与代码实现
  • GeoJSON终极指南:解锁地理数据处理的完整工具生态
  • Cap开源录屏工具完整指南:3步快速上手与专业录制方案
  • 深度学习音频降噪实战:DeepFilterNet让声音瞬间清晰的完整指南
  • 如何快速集成Django-photologue?5分钟上手的安装与配置攻略
  • 如何使用Open GPX Tracker:从安装到导出GPX文件的终极教程
  • 碳硅共轭:人类与AI深度协同的哲学与科学架构
  • hackernews-TUI常见问题解决:从安装失败到性能优化的完整方案
  • 终极指南:如何在Pixi.js中轻松集成Live2D模型实现二次元角色动画
  • web前端基础到入门——14day
  • 如何在10分钟内用RVC WebUI实现专业级AI语音克隆?完整免费指南
  • 探索全球29k+机场数据:Airports项目终极指南与实用价值解析
  • 提升用户体验的细节:Corner Smoothing插件在移动端应用的最佳实践
  • Rosetta 国际化库技术解密:298字节背后的架构哲学
  • 静态vs动态词向量深度对比:gh_mirrors/tex/text_matching项目双方案实现与效果评测
  • Obsidian Easy Typing智能退格功能:一键清除空列表项和引用行
  • Laravel Gamify与前端集成:实时更新用户声誉积分的Socket.io实现方案
  • 颍上建设网站:从零到一打造属于本地企业的数字名片与流量引擎
  • 抖音保存视频去水印的实用方法,看这篇答疑就够了 - 耶斯去水印
  • 从0到1:使用transitfeed创建你的第一个GTFS公交数据feed
  • 从论文到代码:DeepCpG-DNA-hou2016-mesc背后的科学原理与实现细节
  • 字节跳动算法面试指南:117道高频LeetCode题目解析与实战策略
  • 为什么Cap成为你首选的屏幕录制工具?5分钟掌握开源录屏新体验
  • 工程采购深度解析:工业级无缝混合矩阵切换器选型指南​ - 无缝混合矩阵厂家
  • 掌握专业3D打印工作流:Blender 3MF插件完整指南
  • 如何快速掌握Blockly:可视化编程的完整入门指南
  • Cling文件路径索引机制详解:为何它能比传统搜索快3倍?