You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K8s Deployment的Pod仅20G磁盘,如何挂载节点SSD扩容?

核心问题直接答复
  • 针对“是否必须指定volume才能让Pod获得更大的磁盘空间”的问题:要用上节点上独立挂载的350GB本地SSD,确实必须通过显式的存储卷映射才能实现。你当前看到的20GB容器可用空间,本质是容器运行时为容器根文件系统(overlay层)配置的默认存储配额,对应的是节点系统盘上的容器存储池划分,和节点上独立挂载的350GB SSD完全属于两个隔离的存储分区——没有做卷映射的情况下,容器的文件系统命名空间根本看不到这个独立SSD的存在,不存在“无配置扩容容器根分区、自动接入独立SSD”的通用机制。就算不使用本地SSD、单纯要扩大容器根分区的容量上限,也需要调整节点上容器运行时的全局配置,无法通过Deployment层面的简单修改实现。
  • 针对“Deployment是否支持使用volume挂载”的问题:Deployment完全支持所有类型的volume挂载,没有任何语法或功能限制。你看到的示例多是独立Pod的场景,只是因为Deployment的存储卷配置语法和独立Pod100%通用——所有卷配置都写在Deployment的spec.template.spec段落下,和直接定义独立Pod的语法完全一致。Deployment本身是Pod的调度控制器,本质是按照Pod模板的定义批量创建Pod,不存在Deployment场景下的专属volume语法约束。
存储场景原理解释

你执行df -h的输出结果可以直接对应现状:

  • 所有挂载在/dev/nvme0n1p1上的路径,都属于节点系统盘的第一个分区,也就是存放容器根文件系统的存储池,所有这些路径的容量上限都受20GB的默认配额限制,所以你看到的根目录、配置文件目录的可用空间都只有20GB左右
  • 你提到的350GB本地SSD是独立的块设备,因为没有通过卷映射挂入容器命名空间,容器内完全感知不到这个设备的存在,自然不会显示在df的输出里
适配当前场景的配置修改方案

你目前所有节点都已挂载同规格的350GB SSD,只需要两步修改即可接入SSD存储:

  1. 先在任意节点上执行df -h确认350GB SSD的实际挂载路径(常见路径为/mnt/ssd、/mnt/local),记录这个路径的绝对地址
  2. 在原有Deployment配置基础上补充卷映射配置,修改后的关键段落示例如下:
# 原有Deployment配置不变,仅修改以下段落
spec:
  template:
    spec:
      # 补充volumes定义
      volumes:
        - name: local-ssd-storage
          hostPath:
            # 替换为你节点上SSD的实际挂载路径
            path: /mnt/ssd
            type: DirectoryOrCreate
      containers:
        - name: main
          # 原有容器配置不变,补充volumeMounts定义
          volumeMounts:
            - name: local-ssd-storage
              # 替换为你应用实际读写大容量文件的容器内路径
              mountPath: /app/data
          # 原有resources、command、env等配置保持不变

重新部署Pod后,在容器内执行df -h就可以看到/app/data路径对应的350GB SSD容量,不再受20GB根分区的配额限制。

补充说明:如果后续需要对SSD存储做容量配额、调度亲和性管控,可以将hostPath替换为local类型PV搭配PVC使用,语法逻辑和hostPath完全一致,只是通过PV/PVC层增加了管控能力。


内容的提问来源于stack exchange,提问作者user3691191

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 00:06:05