Skip to content

Volumes 详解

常见卷类型

  • ConfigMap
  • emptyDir
  • Local
  • NFS
  • Secret

搭建NFS

安装nfs-server

安装nfs-server

bash
#安装nfs-server
yum -y install nfs-utils
echo "/nfs/data *(insecure,rw,sync,no_root_squash)" >/etc/exports
mkdir -p /nfs/data
# 启动服务
systemctl enable rpcbind --now
systemctl enable nfs-server --now
# 配置生效
exportfs -r
exportfs

配置nfs-client

bash
showmount -e master
mkdir -p /nfs/data
mount -t nfs master:/nfs/data /nfs/data

NFS方式数据挂载

nginx-pod-volumes.yaml 注意创建nfs文件夹

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-volume-demo
  name: nginx-volume-demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-volume-demo
  template:
    metadata:
      labels:
        app: nginx-volume-demo
    spec:
      containers:
        - name: nginx
          image: nginx
          volumeMounts:
            - mountPath: /usr/share/nginx/html
              name: html
      volumes:
        - name: html
          nfs:
            path: /nfs/data/nginx-volume-demo
            server: master

PV & PVC

创建PV

yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfs/data/volume # 目录名称 
    server: master # ip地址

示例 创建3个目录

bash
mkdir -p /nfs/data/01 /nfs/data/02 /nfs/data/03

创建PV资源

yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv-01
spec:
  capacity:
    storage: 10m
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfs/data/01 # 目录名称 
    server: master # ip地址 
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv-02
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfs/data/02 # 目录名称 
    server: master # ip地址 
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv-03
spec:
  capacity:
    storage: 3Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfs/data/03 # 目录名称 
    server: master # ip地址

查看pv

bash
kubectl get pv

申请pvc

pvc.yaml

yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nginx-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 200Mi
  storageClassName: nfs

查看pvc

可以查看到分配的pc

bash
kubectl get pvc

创建deploy静态提供

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-delpoy-pvc
  name: nginx-deploy-pvc
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-deploy-pvc
  template:
    metadata:
      labels:
        app: nginx-deploy-pvc
    spec:
      containers:
        - name: nginx
          image: nginx
          volumeMounts:
            - mountPath: /usr/share/nginx/html
              name: html
      volumes:
        - name: html
          persistentVolumeClaim:
            claimName: nginx-pvc

创建deploy动态提供