k8s修改存储目录-介绍

k8s修改存储目录-介绍

文章目录

  • k8s修改存储目录-介绍
  • 总结:
  • 介绍
  • [指定 Docker 或 containerd 镜像和容器存储目录](#指定 Docker 或 containerd 镜像和容器存储目录)
    • [Docker 存储目录](#Docker 存储目录)
    • [containerd 存储目录](#containerd 存储目录)
  • [指定 Kubelet 的存储目录](#指定 Kubelet 的存储目录)
  • [指定 Pod 和容器存储目录](#指定 Pod 和容器存储目录)

docker 运行时,迁移目录实操:https://blog.csdn.net/admin_233/article/details/144930001

总结:

通过这些方法,你可以灵活地指定 Kubernetes 中容器、镜像以及 Pod 数据的存储目录。

  • Docker: 修改 /etc/docker/daemon.json 中的 data-root 参数来指定存储目录。
  • containerd: 修改 /etc/containerd/config.toml 中的 root 和 state 参数来指定存储目录。
  • Kubelet: 通过 --kubelet-root-dir 参数来指定存储路径。
  • Pod 数据存储: 使用 PersistentVolumes 或 emptyDir 来指定存储路径。

介绍

在 Kubernetes (K8s) 中,指定镜像、容器和 Pod 的存储目录通常涉及以下几个方面的配置:

容器运行时存储目录、Kubelet 存储目录以及 Docker 或 containerd 的存储目录。

以下是配置方法:

指定 Docker 或 containerd 镜像和容器存储目录

Kubernetes 使用容器运行时(如 Docker 或 containerd)来管理容器的生命周期。

默认情况下,Docker 和 containerd 将镜像和容器存储在特定的目录中。

你可以通过修改它们的配置来更改存储目录。

Docker 存储目录

Docker 默认将镜像和容器存储在 /var/lib/docker 目录下。要更改 Docker 的存储路径,可以修改 Docker 的配置文件。

修改 Docker 存储路径:

编辑 Docker 配置文件 /etc/docker/daemon.json,添加或修改 data-root 参数来指定存储目录:

bash 复制代码
{
  "data-root": "/your/custom/directory"
}

# 例如:
{
  "data-root": "/mnt/docker-data"
}

# 重启 Docker 服务:
systemctl restart docker # 修改配置后,重启 Docker 服务使配置生效

containerd 存储目录

如果你使用 containerd 作为容器运行时,容器和镜像的存储目录默认位于 /var/lib/containerd。要更改存储路径,需要修改 containerd 的配置文件。

修改 containerd 存储路径:

编辑 containerd 的配置文件(通常位于 /etc/containerd/config.toml),修改 root 和 state 配置项:

bash 复制代码
root = "/your/custom/root"
state = "/your/custom/state"

重启 containerd 服务:
systemctl restart containerd # 修改配置后,重启 containerd 服务

指定 Kubelet 的存储目录

Kubelet 存储 Pod 数据和容器运行时数据。默认情况下,Kubelet 使用 /var/lib/kubelet 目录。你可以通过修改 Kubelet 启动参数来更改其存储路径。

修改 Kubelet 配置文件:

编辑 Kubelet 的 systemd 配置文件(通常为 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf),并添加或修改 -

kubelet-root-dir 参数,指定存储目录:

或者在 /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf

bash 复制代码
--kubelet-root-dir=/your/custom/kubelet-directory

# 重启 Kubelet 服务:
systemctl daemon-reload
systemctl restart kubelet # 修改配置后,重启 Kubelet 服务

指定 Pod 和容器存储目录

你还可以通过设置 Persistent Volumes (PV) 或使用 emptyDir 来控制 Pod 和容器的数据存储位置。以下是一些方法:

  • 使用 Persistent Volumes (PV)
    你可以创建 PersistentVolume (PV) 来指定存储卷的路径。PV 支持使用不同的存储后端(如本地存储、NFS、Ceph 等),你可以将存储路径指定为某个目录。

例如,创建一个本地存储的 PersistentVolume:

yaml 复制代码
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-pv
spec:
  capacity:
    storage: 1Gi
  volumeMode: Filesystem
  storageClassName: manual
  local:
    path: /mnt/disks/vol1
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  • 使用 emptyDir
    如果你希望容器在 Pod 中使用临时存储,可以使用 emptyDir,它将为每个 Pod 创建一个临时存储目录,存储目录的位置会由 Kubelet 决定。emptyDir 默认使用 /var/lib/kubelet/pods 目录,但你也可以通过指定 Kubelet 的 --kubelet-root-dir 来更改存储位置。

例如,使用 emptyDir 配置存储目录:

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: pod-with-emptydir
spec:
  containers:
    - name: busybox
      image: busybox
      volumeMounts:
        - mountPath: /data
          name: empty-dir
  volumes:
    - name: empty-dir
      emptyDir: {}
相关推荐
阿里云云原生8 分钟前
剧透丨AI 原生研发组织的探索和实践
云原生
名字还没想好☜2 小时前
Docker 网络实战:bridge/host/none/自定义网络、容器互通与端口映射踩坑
运维·docker·kubernetes
探索云原生4 小时前
KubeClipper 1.7.0 发布:Operation 优化与 Kubernetes 1.37 支持
linux·docker·云原生·kubernetes·go
fengkai45455 小时前
八、Docker详解1-3
运维·docker·容器
MrSYJ8 小时前
Veth pair 细讲
docker·云原生·容器
Elastic 中国社区官方博客8 小时前
将 Vercel 数据导入 Elastic:无需安装任何东西的无服务器可观测性
大数据·运维·elasticsearch·搜索引擎·云原生·serverless·全文检索
秦jh_9 小时前
【Docker】容器
运维·docker·容器
天天喝旺仔11 小时前
Prometheus + Grafana 监控告警体系搭建实战:从 Exporter 指标采集、PromQL 查询到 Alertmanager 告警落地
容器·kubernetes·grafana·prometheus·时序数据库
大盛供应链·卢生20 小时前
哪些国产芯片可以替代进口芯片,哪些替代不了
fpga开发·容器
Mr小林1 天前
Docker 安装教程(在线 + 离线)
运维·docker·容器