宁波建网站可按需定制,叙永县城乡建设部网站首页,成都明腾网站建设公司,著名建站公司原文网址#xff1a;K8S--持久卷(PersistentVolume)的用法-CSDN博客 
简介 
本文介绍K8S的持久卷(PersistentVolume)的用法。 
目标#xff1a;用持久卷的方式将主机的磁盘与容器磁盘映射#xff0c;安装nginx并运行。 
--------------------------------------------------…原文网址K8S--持久卷(PersistentVolume)的用法-CSDN博客 
简介 
本文介绍K8S的持久卷(PersistentVolume)的用法。 
目标用持久卷的方式将主机的磁盘与容器磁盘映射安装nginx并运行。 
----------------------------------------------------------------------------------------------- 分享Java真实高频面试题吊打面试官 Java后端真实面试题大全 - 自学精灵 分享靠谱的Java高级实战包含高并发、架构、全局处理等JavaWeb高级实战 - 自学精灵 ----------------------------------------------------------------------------------------------- 
官网 
https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-persistent-volume-storage/ 
概念 
Pod 里的容器是由镜像产生的进程要读写磁盘只能用一个临时的存储空间一旦 Pod 销毁临时存储会立即释放数据也就丢失了。为保证 Pod 销毁后重建数据依然存在Kubernetes 使用 Volume 存储文件一般是容器与主机路径进行映射。 
Volume和使用它的Pod都是一种静态绑定关系无法像创建其他资源例如PodNodeDeployment等等一样创建一个Volume。因此K8S提出了PersistentVolumePV可以用Kubernetes API创建PersistentVolume对象。PV与Volume最大的不同是PV拥有着独立于Pod的生命周期。 
PersistentVolumeClaimPVC代表了用户对PV资源的请求。用户需要使用PV资源时只需要创建一个PVC对象包括指定使用何种存储资源使用多少GB以何种模式使用PV等信息K8S会自动分配我们所需的PV。 
如果把PersistentVolume类比成集群中的Node那么PersistentVolumeClaim就相当于集群中的PodKubernetes为Pod分配可用的Node为PersistentVolumeClaim分配可用的PersistentVolume。 
准备工作 
创建目录并进入。 
mkdir -p /work/devops/k8s/pv/mntcd /work/devops/k8s/pv/ 
1.创建 PersistentVolume 
创建pv-volume.yml文件内容如下 
apiVersion: v1
kind: PersistentVolume
metadata:name: tast-pv-volumelabels:type: local
spec:storageClassName: manualcapacity:storage: 3GiaccessModes:- ReadWriteOncehostPath:path: /work/devops/k8s/pv/mnt 
创建 PersistentVolume 
kubectl apply -f pv-volume.yaml 
结果 
persistentvolume/tast-pv-volume created 
查看 PersistentVolume 的信息 
kubectl get pv tast-pv-volume 
结果 
NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
tast-pv-volume   3Gi        RWO            Retain           Available           manual                  6s 
输出结果显示该 PersistentVolume 的状态STATUS为 Available。 这意味着它还没有被绑定给 PersistentVolumeClaim。  
2.创建 PersistentVolumeClaim 
创建pv-claim.yaml文件内容如下 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: tast-pv-claim
spec:storageClassName: manualaccessModes:- ReadWriteOnceresources:requests:storage: 1Gi 
创建 PersistentVolumeClaim  
kubectl apply -f pv-claim.yaml 
结果 
persistentvolumeclaim/tast-pv-claim created 
再次查看 PersistentVolume 信息 
kubectl get pv tast-pv-volume 
结果 
NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                   STORAGECLASS   REASON   AGE
tast-pv-volume   3Gi        RWO            Retain           Bound    default/tast-pv-claim   manual                  33s 
现在输出的 STATUS 为 Bound。 
查看 PersistentVolumeClaim 
kubectl get pvc tast-pv-claim 
结果 
NAME            STATUS   VOLUME           CAPACITY   ACCESS MODES   STORAGECLASS   AGE
tast-pv-claim   Bound    tast-pv-volume   3Gi        RWO            manual         13s 
3.创建 Pod 
创建pv-pod.yaml文件内容如下 
apiVersion: v1
kind: Pod
metadata:name: tast-pv-pod
spec:volumes:- name: tast-pv-storagepersistentVolumeClaim:claimName: tast-pv-claimcontainers:- name: tast-pv-containerimage: nginx:latestports:- containerPort: 80name: nginx-80volumeMounts:- mountPath: /usr/share/nginx/htmlname: tast-pv-storage 
创建 Pod 
kubectl apply -f pv-pod.yaml 结果 
pod/tast-pv-pod created 
查看Pod 
kubectl get pods -A 
结果已创建 4.访问测试  
进入到容器内部 
kubectl exec -it tast-pv-pod -- bash 
用curl访问nginx 
curl http://localhost/ 
结果访问成功 
html
headtitle403 Forbidden/title/head
body
centerh1403 Forbidden/h1/center
hrcenternginx/1.21.5/center
/body
/html 
5.清理 
cd /work/devops/k8s/pv
kubectl delete -f pv-pod.yaml
kubectl delete -f pv-claim.yaml
kubectl delete -f pv-volume.yaml