什么是pv和pvc
- PersistentVolume(PV)持久卷,是一块集群里由管理员手动提供,或 kubernetes 通过 StorageClass 动态创建的存储。 PersistentVolumeClaim(PVC)持久卷声明,是一个满足对 PV 存储需要的请求。简单来说,可以这样理解,pv是生产者,pvc是消费者
pv和pvc的使用
-
这里我们使用的是NFS—PV—PVC架构,先使用NFS创建PV,PVC使用我们用NFS创建的PV
-
我们这里的实验使用两台虚拟机,一台作为NFS服务器,一台搭建minikube -
搭建NFS服务器:
1、在两台机器上yum install -y nfs-utils
2、在NFS服务器上创建共享目录 mkdir /nfsdata
3、chmod 777 /nfsdata
4、vim /etc/exports—/nfsdata 192.168.0.0/24(rw,no_root_squash,no_all_squash,sync)
5、export -rv
6、systemctl start nfs -
在minikube上创建PV
[root@minikube pv_pvc_nfs]# cat pv_nfs.yaml apiVersion: v1 kind: PersistentVolume #资源类型 metadata: name: mysql-nginx labels: type: mysql-nginx-nfs spec: capacity: storage: 5Gi accessModes: - ReadWriteMany #访问模式,多个客户端读写 persistentVolumeReclaimPolicy: Recycle #回收策略-可以回收 storageClassName: nfs nfs: path: "/nfsdata" server: 192.168.0.153 #k8s-nfs matser readOnly: false #只读
-
创建PVC
[root@minikube pv_pvc_nfs]# cat pvc_nfs.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-nginx-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi storageClassName: nfs
-
创建Deployment
[root@minikube pv_pvc_nfs]# cat mysql_nfs.yaml apiVersion: extensions/v1beta1 kind: Deployment #副本控制器Deployment metadata: name: biaobiaomysql #Deployment的名称,全局唯一 spec: replicas: 1 #Pod副本的期待数量 template: #根据此模版创建Pod的副本(实例) metadata: labels: app: biaobiaomysql #Pod副本拥有的标签,对应Deployment的selector spec: containers: #Pod内,定义容器 - name: biaobiaomysql #容器名称 image: mysql:5.7.31 #Docker image ports: - containerPort: 3306 #容器应用监听的端口 volumeMounts: - name: mysql-data-pvc #和下面一致 mountPath: /var/lib/mysql #是mysql默认存放数据的目录 datadir env: #注入容器内的环境变量 - name: MYSQL_ROOT_PASSWORD #这里设置root初始密码 value: "123456" volumes: # - name: mysql-data-pvc #pvc名字 persistentVolumeClaim: claimName: mysql-nginx-pvc
-
将它们写到kustomization.yaml这个文件(kubectl会自动识别这个文件里面的内容,统一管理)
[root@minikube pv_pvc_nfs]# cat kustomization.yaml resources: - mysql_nfs.yaml - pv_nfs.yaml - pvc_nfs.yaml
-
应用
[root@minikube pv_pvc_nfs]# kubectl apply -k . deployment.extensions/biaobiaomysql created persistentvolume/mysql-nginx created persistentvolumeclaim/mysql-nginx-pvc created