containerd 数据路径
说明
在脚本运行
containerd-config
参数时,会根据containerd-root
、containerd-state
的值修改containerd
的储存位置。containerd-root
:默认值/var/lib/containerd
containerd-state
:默认值/run/containerd
脚本
standalone
(单机模式)、cluster
(集群模式)、node
(工作节点)会运行containerd-config
参数(同上)。如果
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