Kubernetes那点事儿——存储之存储卷

Kubernetes那点事儿------存储之存储卷


前言

在K8s中用Volume为容器提供了外部的存储能力。

Pod需要设置卷来源(spec.volume)和挂载点(spec.containers.volumeMounts)两个信息后才可以使用相应的Volume。

一、K8s数据卷

常用的数据卷:

  • 本地(hostPath,emptyDir)
  • 网络(NFS,Ceph,GlusterFS)
  • 公有云(AWS EBS)
  • K8s资源(Configmap,Secret)

其中像网络存储(NFS,Ceph,GlusterFS)在K8s中主要使用PV/PVC来实现,不仅提高了安全性和还解决了组织分工的问题,我们在后续章节详细研究PV/PVC。

K8s资源存储:

ConfigMap:一般用于应用程序配置文件存储,,支持变量和文件。

Secret:与ConfigMap类似,区别在于Secret主要存储敏感数据,所有的数据要经过base64编码,一般用于凭证存储。

一、临时存储卷emptyDir

emptyDir卷:是一个临时存储卷,与Pod生命周期绑定一起,如果Pod删除了卷也会被删除。

主要应用场景:Pod中容器之间数据共享。

yaml 复制代码
# cat emptyDir.yaml

apiVersion: v1
kind: Pod
metadata:
  name: my-pod-empty
spec:
  containers:
  - name: write
    image: centos
    command: ["bash","-c","for i in {1..100};do
echo $i >> /data/hello;sleep 1;done"]
    volumeMounts:
    - name: data
      mountPath: /data
  - name: read
    image: centos
    command: ["bash","-c","tail -f /data/hello"]
    volumeMounts:
    - name: data
      mountPath: /data
  volumes:
  - name: data
    emptyDir: {}

二、节点存储卷hostPath

hostPath卷:挂载Node文件系统(Pod所在节点)上文件或者目录到Pod中的容器。

主要应用场景:Pod中容器需要访问宿主机文件。

yaml 复制代码
# hostPath示例.yaml

apiVersion: v1
kind: Pod
metadata:
  name: my-pod-hostpath
spec:
  containers:
  - name: busybox
    image: busybox:latest
    args:
    - /bin/sh
    - -c
    - sleep 36000
    volumeMounts:
    - name: data
      mountPath: /data
  volumes:
  - name: data
    hostPath:
      path: /tmp/hostPath # 主机必须存在此目录
      type: Directory

三、网络存储NFS

NFS卷:提供对NFS挂载支持,可以自动将NFS共享路径挂载到Pod中。

YAML 复制代码
# cat nfs_volum.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx-nfs
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx-nfs
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - name: wwwroot
          mountPath: /usr/share/nginx/html
        ports:
        - containerPort: 80
      volumes:
      - name: wwwroot
        nfs:
          server: 10.7.7.222
          path: /ifs/nfsdir
相关推荐
Star(up up up)16 小时前
Redis Windows 安装教程:使用Windows 的 Redis 压缩包
redis·笔记·学习·程序人生·云原生·学习方法·改行学it
分布式存储与RustFS19 小时前
Terraform 状态文件老在本地丢、并发还撞锁:把 state 锁进 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
csdn_aspnet19 小时前
macOS 10 、Docker 玩轉 MySQL
运维·mysql·macos·docker·容器·mac
对象存储与RustFS20 小时前
Jenkins 的构建产物别堆在控制器磁盘:用 RustFS 当它的 S3 工件仓库
后端·docker·云原生
罗小爬EX2 天前
Helm 从概念到实战:以一个普通 Web 应用为例
云原生·helm
java_logo2 天前
Docker 部署 DeepSeek Harness(moelin):轻松搭建带登录的本地 AI Agent 平台
运维·docker·容器·ai agent·deepseek·harness·轩辕镜像
xbzb2 天前
容器 IP 每次重建都变?docker network 五种模式与自定义网桥固定地址
网络·docker·容器·ip·network·固定
打工仔折腾 AI2 天前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化
fengkai45452 天前
Prometheus+K8s弹性伸缩综合项目
运维·kubernetes·k8s·prometheus·hpa·vpa
分布式存储与RustFS2 天前
镜像仓库的层别只堆本地盘:用 RustFS 给 Harbor 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准