南通海洲建设集团网站,wordpress后台慢的问题,聊城网站建设费用,汕头市网站建设分站公司NFS网络存储
emptyDir和hostPath存储#xff0c;都仅仅是把数据存储在pod所在的节点上#xff0c;并没有同步到其他节点#xff0c;如果pod出现问题#xff0c;通过deployment会产生一个新的pod#xff0c;如果新的pod不在之前的节点#xff0c;则会出现问题#xff0c…NFS网络存储
emptyDir和hostPath存储都仅仅是把数据存储在pod所在的节点上并没有同步到其他节点如果pod出现问题通过deployment会产生一个新的pod如果新的pod不在之前的节点则会出现问题找不到对应的数据。使用网络存储可以解决该问题。 所有工作节点需安装nfs-common(ubuntu)或nfs-utils(centos7)客户端组件。
yum install -y nfs-u*在master上搭建NFS服务器
yum install -y rpcbind
yum install -y nfs-utils
# 创建共享目录
mkdir /123
chmod 777 /123
# 修改配置文件
vim /etc/exports
/123 *(rw,sync,no_root_squash)
# 启动服务
systemctl start rpcbind
systemctl start nfs-server
systemctl enable rpcbind
systemctl enable nfs-server测试
showmount -e创建nfs.yaml文件内容如下
apiVersion: v1
kind: Pod
metadata:name: pod1
spec:volumes:- name: volume1nfs:server: 192.168.159.164path: /123containers:- image: nginximagePullPolicy: IfNotPresentname: pod1volumeMounts:- name: volume1mountPath: /usr/share/nginx/html创建pod并查看
kubectl apply -f nfs.yaml
kubectl get pod -o wide测试
kubectl cp nfs.yaml pod1:/usr/share/nginx/html
ls /123/# 删除pod
kubectl delete -f nfs.yaml持久性存储
kubernets的持久化存储机制的核心是PV(Persistent Volume)和PVC(Persistent Volume Claim)。
PersistentVolume持久卷
pv不属于任何命名空间全局可见。
创建pv1.yaml文件内容如下
apiVersion: v1
kind: PersistentVolume
metadata:name: pv1
spec:capacity: ## 指定存储容量storage: 5GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: Recyclenfs:server: 192.168.159.164path: /123注意storage的大小和accessModes的值这是pvc和pv绑定的关键 accessModes有以下三个值 ReadWriteOnce(RWO)允许单个节点挂载读写 ReadWriteMany(RWX)允许多个节点挂载读写 ReadOnlyMany(ROX)允许单个节点挂载只读 Deployment由于多副本要使用RWX。 创建pv查看其属性
kubectl apply -f pv1.yaml
kubectl get pv
kubectl describe pv pv1可以看到pv1所使用的后端类型为NFSNFS的服务器是192.168.159.164共享目录是/123。
删除pv的方法
kubectl delete -f pv1.yamlPersistentVolumeClaim
pvc是基于命名空间创建的不同命名空间里的pvc相互隔离。如果有多个不同命名空间绑定属性相同的的PVC去和PV绑定只有一个PVC能和PV绑定其他状态为pending。pvc通过storage的大小和accessModes的值和pv进行绑定PV storage PVC storage。为了控制PV和PVC绑定可以通过增加一个属性storageClassName进行控制。在PV和PVC里添加storageClassName
spec:
- storageClassName: xyz创建pvc1.yaml文件内容如下
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pvc1
spec:accessModes:- ReadWriteOncevolumeMode: Filesystemresources:requests:storage: 5Gi创建pvc并查看其属性
kubectl apply -f pvc1.yaml
kubectl get pvc
kubectl describe pvc pvc1删除pvc的方法
kubectl delete -f pvc1.yaml使用持久性存储
创建pod_pvc.yaml文件内容如下
apiVersion: v1
kind: Pod
metadata:name: pod1
spec:volumes:- name: volume1persistentVolumeClaim:claimName: pvc1containers:- image: nginximagePullPolicy: IfNotPresentname: pod1volumeMounts:- name: volume1mountPath: /mnt创建pod并查看
kubectl apply -f pod_pvc.yaml
kubectl get pod -o wide拷贝文件测试
kubectl cp pod_pvc.yaml pod1:/mnt
ls /123pv回收策略
前面创建pv的时候有一句persistentVolumeReclaimPolicy: Recycle有以下两种策略
Recycle删除pvc后会生成一个pod回收数据删除pv里的数据删除pvc后pv可以复用pv状态由Released变为Available。Retain不回收数据删除pvc后pv依然不可用pv状态长期保持为Released需要手动删除pv然后重新创建。但是删除pv的时候并不会删除里面的数据。