配置Pod使用PersistentVolume作为存储,PV类型为 hostPath

本文详细介绍了如何在Kubernetes单节点集群中创建hostPath类型的PersistentVolume,配置PersistentVolumeClaim,以及如何将它们与Pod结合,展示如何在Pod中挂载和访问存储。最后展示了资源清理步骤和相关API参考。
摘要由CSDN通过智能技术生成
准备开始

在节点主机上创建一个 /mnt/data 目录:

mkdir -p /mnt/data

创建一个index.html文件

echo 'Hello from Kubernetes storage' > /mnt/data/index.html
创建PV

创建一个 hostPath 类型的 PersistentVolume。 Kubernetes 支持用于在单节点集群上开发和测试的
hostPath 类型的 PersistentVolume。 hostPath 类型的 PersistentVolume
使用节点上的文件或目录来模拟网络附加存储。

下面是pv-volume.yaml配置文件

apiVersion: v1	
kind: PersistentVolume	
metadata:	
  name: task-pv-volume		# pv 名称
  labels:
    type: local				
spec:
  storageClassName: manual		# 设置 PV 属于哪一个类,PVC 可以绑定此这个类
  capacity:				
    storage: 10Gi				# 指定卷的容量为10GB
  accessModes:
    - ReadWriteOnce				# 单个节点以读写方式安装
  hostPath:				# PV 类型为 hostPath
    path: "/mnt/data"		# 主机目录为 /mnt/data	

创建 PersistentVolume

kubectl apply -f pv-volume.yaml

查看PV

[root@k8s-master home]# kubectl get pv
NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
task-pv-volume   10Gi       RWO            Retain           Available           manual                  3s
  • RWO : 仅单节点可读写
  • Retain : 回收策略手动回收
  • Available :未被PVC绑定
  • manual :指定存储类为 manual ,只有pvc选择 存储类为 manual 才能绑定PV

查看PV的相关信息

kubectl describe pv task-pv-volume
[root@k8s-master home]# kubectl describe pv task-pv-volume
Name:            task-pv-volume
Labels:          type=local
Annotations:     <none>
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    manual
Status:          Available
Claim:           
Reclaim Policy:  Retain
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        10Gi
Node Affinity:   <none>
Message:         
Source:
    Type:          HostPath (bare host directory volume)
    Path:          /mnt/data
    HostPathType:  
Events:            <none>
创建PersistentVolumeClaim

下一步是创建一个 PersistentVolumeClaim。Pod 使用 PersistentVolumeClaim 来请求物理存储。申请10GB存储,请求模式为单节点可读写。

以下是 pv-claim.yaml配置文件

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
spec:
  storageClassName: manual	# 绑定 和PV相同的 storageClass
  accessModes:
    - ReadWriteOnce		# 访问模式为单节点可读写
  resources:
    requests:
      storage: 10Gi		# 存储请求10GB,不能比PV卷大

创建PersistentVolumeClaim

kubectl apply -f pv-claim.yaml
[root@k8s-master home]# kubectl apply -f pv-claim.yaml
persistentvolumeclaim/task-pv-claim created

查看PV和PVC状态

[root@k8s-master home]# kubectl get pvc
NAME            STATUS   VOLUME           CAPACITY   ACCESS MODES   `STORAGECLASS`   AGE
task-pv-claim   Bound    task-pv-volume   10Gi       RWO            manual         16s
[root@k8s-master home]# kubectl get pv
NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                   STORAGECLASS   REASON   AGE
task-pv-volume   10Gi       RWO            Retain           Bound    default/task-pv-claim   manual                  13m

PV 和 PVC 属于相同的 STORAGECLASS
STATUS 都是 Bound 表示是PV 是有绑定PVC,而PVC是有绑定PV
在PV CLAIM 字段可以看出 贝PVC default/task-pv-claim 绑定着(default为命名空间)

创建Pod

Pod的存储卷绑定PVC

以下是pv.-pod.yaml的配置

apiVersion: v1
kind: Pod
metadata:
  name: task-pv-pod		
spec:
  volumes:
    - name: task-pv-storage			# 给存储卷命名
      persistentVolumeClaim:	# 绑定PVC,PVC名称为 task-pv-claim
        claimName: task-pv-claim
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"		# 容器路径
          name: task-pv-storage		# 绑定 新命名的存储卷名称
kubectl create -f  pv.-pod.yaml

查看Pod更多相关信息

kubectl describe pod  task-pv-pod

在这里插入图片描述

访问Pod查看是否能访问到 index.html文件
kubectl get pod task-pv-pod  -o wide

在这里插入图片描述
在这里插入图片描述

清理

删除Pod

kubectl delete pod task-pv-pod

删除PVC

kubectl delete pvc task-pv-claim

删除PV

kubectl delete pv task-pv-volume

删除节点目录

rm -rf /mnt/data

扩展:

所有工作负载api的参考:https://kubernetes.io/zh-cn/docs/reference/kubernetes-api/workload-resources/

查看所有命令空间的资源

kubectl get all  --all-namespaces

查看指定命名空间下所有的资源

kubectl get all -n <namespace>

删除指定namespace所有资源

kubectl delete all --all -n <namespace>
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值