PVC 的全称是:PersistentVolumeClaim(持久化卷声明),PVC 是用户存储的一种声明,PVC 和 Pod 比较类似,
Pod 消耗的是节点,PVC 消耗的是 PV 资源,Pod 可以请求 CPU 和内存,而 PVC 可以请求特定的存储空间和访问模式。对于真正使用存储的用户不需要关心底层的存储实现细节,只需要直接使用 PVC 即可。

1、将各个节点像上一节一样部署nfs客户端

2、部署PVC

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-1
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
kubectl apply -f pvc-demo.yaml
[root@k8s-node1 k8s]# kubectl get pv
NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM               STORAGECLASS   REASON   AGE
pv001   1Gi        RWO            Recycle          Bound    default/www-web-1                           5d
pv002   1Gi        RWO            Recycle          Bound    default/www-web-0                           5d
pv1     1Gi        RWO            Recycle          Bound    default/pvc-1                               56m

pv的状态已经是Bound

[root@k8s-node1 k8s]# kubectl get pvc
NAME        STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
pvc-1       Bound    pv1      1Gi        RWO                           80s
www-web-0   Bound    pv002    1Gi        RWO                           5d
www-web-1   Bound    pv001    1Gi        RWO                           5d

3、测试使用pvc
构建一个deployment,将nginx的usr/share/nginx/html指向nfs的共享存储路径/data/k8s

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: use-pvc-deployment
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: use-pvc-deployment
    spec:
      containers:
      - name: nginx
        image: 172.16.10.190:8008/nginx
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          name: use-pvc-web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
      volumes:
      - name: www
        persistentVolumeClaim:
          claimName: pvc-1

---

apiVersion: v1
kind: Service
metadata:
  name: nfs-pvc
  labels:
    app: nfs-pvc
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: use-pvc-web
    nodePort: 32112
  selector:
    app: use-pvc-deployment
kubectl apply -f use-pvc.yaml

这时访问http://192.168.100.87:32112/报403错误
在这里插入图片描述
在/data/k8s创建index.html

<html>
Hello This is Nginx in K8S
</html>

再次访问http://192.168.100.87:32112/ 成功了
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐