kubernetes
  • Introduction
  • 安装
    • 组件端口
    • 二进制安装
    • Kubeadm
      • 安装单Master集群
      • 安装高可用集群(手动分发证书)
      • 安装高可用集群(自动上传证书)
      • 安装ETCD集群
      • 安装高可用集群(外部ETCD)
    • 启动参数解析
      • ETCD相关参数
  • 负载均衡
    • Service
    • Ingress
    • 安装MetalLB
    • Nginx-ingress-controller
      • 转发TCP与UDP服务
      • 启动参数
      • 自定义Nginx模板
  • 存储
    • Volume
    • PV与PVC
    • StorageClass
    • Local-PV
      • Static-Provisioner
    • 实践
      • Ceph-RBD
      • NFS
  • 有状态服务
    • Mysql实践
    • Operator
      • Etcd
      • Zookeeper
      • Mysql
  • 认证与授权
    • 认证
      • 实践
    • 授权
  • Helm
    • 安装
    • Chart
      • 依赖
    • Helm命令
    • Repository
  • 日志
  • 监控
    • Prometheus体系
      • Prometheus
        • 内置函数
        • 配置
          • 规则文件
        • PromQL
      • Exporter
        • Metrics
      • Grafana
        • 配置
      • AlertManager
        • 配置
    • 容器监控
      • Cadvisor的指标
      • k8s中部署Prom与Cadvisor
  • Istio
  • 资源预留
    • imagefs与nodefs
    • 总结
  • 集群联邦
    • 联邦DNS原理
    • 联邦DNS安装
    • 安装federation-v1
  • Other
    • ImagePullSecret
    • QOS
    • Apiserver的代理
    • 资源配额
Powered by GitBook
On this page
  • HostPath
  • EmptyDir
  • NFS
  • RBD

Was this helpful?

  1. 存储

Volume

Pod里面的数据是不持久的,当Pod被删掉后,Pod里面的数据也就不复存在,所以我们需要使用Volume来持久化Pod里面的数据。

常用的Volume的类型有HostPath、EmptyDir、NFS、RBD等等。接下来,我们来介绍一下这四种Volume

HostPath

HostPath就是把主机的一个目录挂载到Pod中,如下:

EmptyDir

EmptyDir会在宿主机上创建一个临时目录,然后把该目录挂载到Pod中,当Pod被删除时,宿主机上的该目录也会被删掉

NFS

NFS会先把远程文件系统挂载到本地的一个目录,然后再把本地目录挂载到Pod中。如下一个Pod

当创建好该Pod后,我们执行命令df -hT,会发现如下一条,/app/nfs是nfs-server共享的根目录。kubelet会先把远程文件系统挂载到本地的目录/var/lib/kubelet/pods/8636d572-a165-11e9-9593-000c29a3131e/volumes/kubernetes.io~nfs/volume1,然后再把该目录挂载到Pod中

$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
...
192.168.2.100:/app/nfs nfs4 17G 1.6G 16G 9% /var/lib/kubelet/pods/8636d572-a165-11e9-9593-000c29a3131e/volumes/kubernetes.io~nfs/volume1

RBD

kubelet会先把RBD块挂成本地的一个磁盘,然后把磁盘格式化为文件系统,及挂载到本地的一个目录,最后再把这个目录挂载到Pod中。创建了如上的Pod后,执行命令lsblk可以看到多了一个磁盘rbd0,它的挂载目录为/var/lib/kubelet/pods/3c18348a-a172-11e9-9593-000c29a3131e/volumes/kubernetes.io~rbd/volume1

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
rbd0 252:0 0 1G 0 disk /var/lib/kubelet/pods/3c18348a-a172-11e9-9593-000c29a3131e/volumes/kubernetes.io~rbd/volume1

注意:在ceph中创建kube/image1的命令为rbd create kube/image1 --size 1024 --image-format 2 --image-feature layering,一定要加上--image-feature layering,否则把rbd挂载成本地磁盘的过程会报错。

Previous存储NextPV与PVC

Last updated 5 years ago

Was this helpful?