k8s存储卷(2)

挂载在宿主机的目录 hostPath

#cat pod-vol-hostpath.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-vol-hostpath
namespace: default
spec:
containers:

  • name: myapp
    image: ikubernetes/myapp:v1
    volumeMounts:
    • name: html
      mountPath: /usr/share/nginx/html/
      volumes:
  • name: html
    hostPath:
    path: /data/pod/volume1
    type: DirectoryOrCreate
    ##类型有:-DirectoryOrCreate: 它可以是宿主机上的一个已存在的目录,也可不存在,若不存在则自动创建.
      -Directory: 它必须是宿主机上一个已经存在的目录。
      -FileOrCreate: 它可以是宿主机上的一个文件,若此文件不存在则创建一个空文件来挂载。
      -File:宿主机上的一个已经存在的文件,若不存在则报错。
      -Socket:宿主机上一个已经存在的Unix Socket文件.
      -CharDevice: 宿主机上一个已存在的字符类型的设备文件.
      -BlockDevice: 宿主机上一个已存在的块类型的设备文件。

在node01节点上创建
mkdir -p /data/pod/volume1
echo node01 >> /data/pod/volume1/index.html

在node02节点上创建
mkdir -p /data/pod/volume1
echo node02>> /data/pod/volume1/index.html

master机器上运行
kuebctl apply -f pod-hostpath-vol.yaml
kubectl get pods -o wide
curl pod-vol-hostpath-ip

kubectl delete -f pod-vol-hosstpath.yaml
kuebctl apply -f pod-hostpath-vol.yaml
kubectl get pods -o wide
curl pod-vol-hostpath-ip

nfs:
选择1个nfs服务器(yum install nfs-utils -y,systemctl start nfs)
node节点上要有mount命令,没有的话(yum -y install nfs-utils )
注意每个节点下/etc/host/添加nfs服务器主机名 nfshost

测试是否可以挂载
mount -t nfs nfshost:/data/volumes /mnt

cd /data/volumes
echo store01 >> index.html

在nfshost主机上操作:
yum -y install nfs-utils
mkdir -p /data/volumes
vim /etc/exports
/data/volumes 网段(rw,no_root_squash)
/data/volumes 网段(rw,no_root_squash)
systemctl start nfs
查看服务:ss -tnl
2049被监听

master节点上
vim pod-vol-nfs.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-vol-nfs
namespace: default
spec:
containers:

  • name: myapp
    image: ikubernetes/myapp:v1
    volumeMounts:
    • name: html
      mountPath: /usr/share/nginx/html/
      volumes:
  • name: html
    nfs:
    path: /data/volumes
    server: nfshost
    kubectl apply -f pod-vol-nfs.yaml
    kubectl get pods -i wide ###pod被重构,数据依然存在
    curl pod-vol-nfs-ip

pv,pvc

accessModes:(PV的访问模型)
   ReadWriteOnce【简写:RWO】: 单路读写,即仅能有一个节点挂载读写
   ReadOnlyMany【ROX】: 多路只读
   ReadWriteMany【RWX】:多路读写

pv
准备:nfshost
#mkdir /data/volumes/{v1,v2,v3}
#vim /etc/exports
/data/volumes/v1 网段(rw,no_root_squash)
/data/volumes/v2 网段(rw,no_root_squash)
/data/volumes/v3 网段(rw,no_root_squash)
#exportfs -arv
#showmount -e

先定义pv (pv属于集群级别,不属于名称空间中,每一个名称空间都可以使用)
#vim pv-demo.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv001
labels:
name: pv001
spec:
nfs:
path: /data/volumes/v1
server: nfshost
accessModes: [“ReadWriteMany”,“ReadWriteOnce”]
capacity:

storage: 2Gi

apiVersion: v1
kind: PersistentVolume
metadata:
name: pv002
labels:
name: pv002
spec:
nfs:
path: /data/volumes/v2
server: nfshost
accessModes: [“ReadWriteOnce”]
capacity:

storage: 5Gi

apiVersion: v1
kind: PersistentVolume
metadata:
name: pv003
labels:
name: pv003
spec:
nfs:
path: /data/volumes/v3
server: nfshost
accessModes: [“ReadWriteMany”,“ReadWriteOnce”]
capacity:
storage: 20Gi

#kubectl apply -f pv-demo.yaml
#kubectl get pv
创建pvc
#cat pod-vol-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
namespace: default
spec:
accessModes: [“ReadWriteMany”] ###必须是现有pv的子集
resources:
requests:

  storage: 6Gi

apiVersion: v1
kind: Pod
metadata:
name: pod-vol-pvc
namespace: default
spec:
containers:

  • name: myapp
    image: ikubernetes/myapp:v1
    volumeMounts:
    • name: html
      mountPath: /usr/share/nginx/html
      volumes:
  • name: html
    persistentVolumeClaim:
    claimName: mypvc

kubectl apply -f pod-vol-pvc.yaml
kubectl get pv
kubectl get pvc
kubectl describe pods pod-vol-pvc

删除pv pvc,先删除pvc
#kubectl delete pvc myapp
删除所有pv
#kubectl delete pv --all

pv回收的策略,即若Pod绑定了一个PVC,PVC绑定了一个PV,后来Pod删除了,那么PV中的数据要怎么处理?
-Retain: 保留,Retain是默认回收策略,即这些数据保留着,以便Pod再次创建时还能使用。
-Released: 这种回收策略是, 不保留数据, 即Pod删除,则PV自动回收,清空里面的数据,并允许其他Pod绑定使用.
-Delete: 删除,即PVC和PV解除绑定后,PV自动删除.数据也就被清空了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值