k8s数据持久化

扩展

Kubernetes 给出的解决方案是 PersistentVolume 和 PersistentVolumeClaim。

PersistentVolume (PV) 是外部存储系统中的一块存储空间,由管理员创建和维护。

PersistentVolumeClaim (PVC) 是对 PV 的申请 (Claim)。PVC 通常由普通用户创建和维护。

一、部署nfs

1、在k8s-master和k8s-node上下载nfs

yum  -y  install  nfs-utils  nfs-common

2、创建/nfsdata、授权

mkdir  /nfsdata

chmod  666  /nfsdata

3、编辑exports文件

vim   /etc/exports

/nfsdata *(rw,no_root_squash,no_all_squash,sync)(给了读写,允许root用户和普通用户访问)

4、配置生效启动rpc和nfs

systemctl  start  rpcbind

systemclt  start  nfs

二、部署pv

1、创建文件

mkdir  k8s.pv  && cd k8s.yaml

vim nfs-pv1.yml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mypv1
spec:
  capacity:       # 指定 PV 的容量
    storage: 1Gi      # pv容量多大
  accessModes:      # 访问模式
    - ReadWriteOnce       # Once一次读写  Modes#多次读写
  persistentVolumeReclaimPolicy: Recycle    #支持的策略(Recycle清除PV中的数据)
  storageClassName: nfs        # 存储类型  nfs分类

  nfs:
    path: /nfsdata
    server: 192.168.153.148     #指定nfs服务器所在的机器的地址

2、创建资源

#  kubectl  apply  -f  nfs-pv1.yml

查看

#  kubectl  get  pv

STATUSAvailable,表示 mypv1 就绪,可以被 PVC 申请。

 

三、创建pvc

1、vim  nfs-pvs1.yml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc1
spec:
  accessModes:
    - ReadWriteOnce
  resources:       # 资源
    requests:       # 请求,申请

      storage: 1Gi
  storageClassName: nfs

2、创建资源

kubectl  apply  -f  nfs-pvs1.yml

查看资源

kubectl  apply  -f  pvc

四、创建pod

1、vim  nfs-pod1.yml

apiVersion: v1
kind: Pod
metadata:
  name: mypod1
spec:
  containers:
    - name: mypod1
      image: busybox
      args:      #引入变量
      - /bin/sh
      - -c
      - sleep 30000      #睡眠3万秒
      volumeMounts:
      - mountPath: "/mydata"
        name: mydata
  volumes:
    - name: mydata
      persistentVolumeClaim:
        claimName: mypvc1    #指定pvs的元数据名字

2、创建资源

#    kubectl  apply -f  nfs-pod1.yml

3、验证

# kubectl exec -it mypod1 /bin/sh
/ # ls mydata/
/ # echo "youngfit" > mydata/hello.txt
/ # ls mydata/
hello.txt
/ # exit

# ls /nfsdata/    #也可在nfs的共享目录中查看到,说明卷共享成功
hello.txt

# cat /nfsdata/hello.txt 
youngfit

五、PV的回收

一、1、删除pod、pvs

#    kubectl  delete  pod  mypod1

#    kubectl  selete  pvs  mypvs1

删除pvc之后pv的状态变为Available,,此时解除绑定后则可以被新的 PVC 申请。

/nfsdata文件中的文件被删除了

2、查看pv的状态

#    kubectl  get  pv 

 二、回收策略已经变为 Retain

1、重新创建mypvc1、重新创建pod,引用mypvc1

# kubectl apply -f nfs-pvc1.yml

# kubectl apply -f pod1.yml


2、进入pod中,创建文件
# kubectl exec -it mypod1 /bin/sh
/ # echo 'youngfit' > mydata/hello.txt
/ # ls mydata/
hello.txt
/ # exit

3、在nfs目录下检验

# ls /nfsdata/
hello.txt

# cat /nfsdata/hello.txt 
youngfit
 

2、删除pod、pvs

# kubectl delete -f pod1.yml 
pod "mypod1" deleted

# ls /nfsdata/
hello.txt
删除pvc(mypvc1)
# kubectl delete pvc mypvc1
persistentvolumeclaim "mypvc1" deleted

# ls /nfsdata/
hello.txt

# cat /nfsdata/hello.txt 
youngfit

发现数据仍然保留

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值