k8s修改存储目录-介绍

k8s修改存储目录-介绍


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 参数来指定存储目录:

{
  "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 配置项:

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

--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:

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 配置存储目录:

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: {}
### 在 Kubernetes 中配置 NFS 挂载目录 #### 安装 NFS 服务 为了使 Kubernetes 使用 NFS 进行存储卷挂载,需先确保 NFS 服务器已正确设置。对于基于 Debian 的系统,可以使用如下命令来安装必要的软件包: ```bash sudo apt update && sudo apt install nfs-kernel-server -y ``` 而对于 CentOS 或其他 Red Hat 衍生版本,则应通过 `yum` 来完成相同的操作[^1]。 #### 创建共享目录与导出规则 接着定义想要分享给 Kubernetes Pod 访问的具体文件夹位置,并编辑 `/etc/exports` 文件指定该路径及其对应的访问控制选项。例如: ```plaintext /mnt/nfs_share *(rw,sync,no_subtree_check,no_root_squash) ``` 此条目表示允许所有 IP 地址对该目录拥有读写权限而不压缩根用户身份验证[^2]。 #### 启动并启用 NFS 服务 修改完成后,记得启动 NFS 及其依赖的服务(如 RPC 绑定),并且将其设为随系统自启项之一: ```bash systemctl start rpcbind && systemctl start nfs-server systemctl enable rpcbind && systemctl enable nfs-server ``` 这一步骤同样适用于大多数 Linux 发行版上的 NFS 部署环境[^3]。 #### 准备 PersistentVolume (PV) 现在转向 Kubernetes 方面的工作——创建一个名为 `nfs-pv.yaml` 的 YAML 文件用于描述 PV 对象: ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 5Gi accessModes: - ReadWriteMany nfs: path: /mnt/nfs_share server: <NFS_SERVER_IP> ``` 这里指定了 NFS 提供者的位置以及所期望分配的空间大小;注意替换 `<NFS_SERVER_IP>` 成实际的 NFS 服务器地址[^4]。 #### 构建 PersistentVolumeClaim (PVC) 紧接着编写另一个 YAML 文件 `nfs-pvc.yaml` ,用来声明 PVC 请求资源: ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi ``` 上述配置请求了一个具有至少 5GB 大小且支持多实例并发读写的持久化卷。 #### 应用至集群内 最后利用 kubectl 工具提交这些对象定义到 K8s API Server 上使之生效: ```bash kubectl apply -f nfs-pv.yaml kubectl apply -f nfs-pvc.yaml ``` 此时便完成了整个过程,后续只需按照常规方式引用这个 PVC 就可以在应用中享受来自远程 NFS 存储带来的便利了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值