Skip to content

containerd 数据路径

说明

  1. 在脚本运行 containerd-config 参数时,会根据 containerd-rootcontainerd-state 的值修改 containerd 的储存位置。

    1. containerd-root:默认值 /var/lib/containerd
    2. containerd-state:默认值 /run/containerd
  2. 脚本 standalone(单机模式)、cluster(集群模式)、node(工作节点)会运行 containerd-config 参数(同上)。

  3. 如果 Kubernetes 已经运行,发现系统默认硬盘空间不够(需要调整到其他硬盘),可以执行下列命令修改储存位置

操作

shell
# 查看当前 containerd 运行状态
sudo systemctl status containerd -l --no-pager
# 查看当前 kubelet 运行状态
sudo systemctl status kubelet -l --no-pager

# 停止 containerd 
sudo systemctl stop containerd
# 停止 kubelet
sudo systemctl stop kubelet

# 查看当前 containerd 运行状态
sudo systemctl status containerd -l --no-pager
# 查看当前 kubelet 运行状态
sudo systemctl status kubelet -l --no-pager

# 自定义 containerd 根路径
containerd_root=/custom/root
# 自定义 containerd 运行状态路径
containerd_state=/custom/state

# 修改 containerd 根路径
sudo sed -i "s#^root = \".*\"#root = \"$containerd_root\"#" /etc/containerd/config.toml
# 修改 containerd 运行状态路径
sudo sed -i "s#^state = \".*\"#state = \"$containerd_state\"#" /etc/containerd/config.toml
shell
# 停止 k8s.io 命名空间运行的 “旧容器”
# 此操作用于解决:k8s 中,“旧容器” 已占用宿主机的端口,修改了 containerd 路径后,“新容器” 无法使用这些宿主机的端口
# 修改了 containerd 路径后,“旧容器” 已不受管理

# 停止 pods
systemctl daemon-reload
systemctl stop kubepods.slice

# 查看当前 k8s.io 命名空间运行的 “容器”
ps -ef | grep 'namespace k8s.io'

# 停止 k8s.io 命名空间运行的 “旧容器”
# 此操作用于解决:k8s 中,“旧容器” 已占用宿主机的端口,修改了 containerd 路径后,“新容器” 无法使用这些宿主机的端口
# 修改了 containerd 路径后,“旧容器” 已不受管理
ps -ef | grep 'namespace k8s.io' | awk '{print $2}' | xargs kill -9

# 恢复 pods
systemctl daemon-reload
systemctl restart kubepods.slice
shell
# 停止 k8s.io 命名空间运行的 “旧容器”
# 此操作用于解决:k8s 中,“旧容器” 已占用宿主机的端口,修改了 containerd 路径后,“新容器” 无法使用这些宿主机的端口
# 修改了 containerd 路径后,“旧容器” 已不受管理

reboot
shell
# 重启 containerd
sudo systemctl restart containerd
# 查看当前 containerd 运行状态
sudo systemctl status containerd -l --no-pager

# 重启 kubelet
sudo systemctl restart kubelet
# 查看当前 kubelet 运行状态
sudo systemctl status kubelet -l --no-pager