求和跟我算的数不一样(表格求和跟自己算的不一样)
618
2022-05-29
k8s-存储pv和pvc-7
1.概述
PersistentVolume(一些简称PV):由管理员添加的的一个存储的描述,是一个全局资源,包含存储的类型,存储的大小和访问模式等。它的生命周期独立于Pod,例如当使用它的Pod销毁时对PV没有影响。
PersistentVolumeClaim(一些简称PVC):是Namespace里的资源,描述对PV的一个请求。请求信息包含存储大小,访问模式等。
2.创建nfs存储
pv存储数据类型有很多种,这类选择了nfs存储。所以我们先安装nfs服务。
NFS 服务需要依赖 RPC 服务,所以这里 NFS 服务端需要安装 rpcbind 和 nfs-utils,客户端只需要安装 nfs-utils
# 服务端安装,提供nfs存储的节点为服务端,例如master节点 yum install -y nfs-utils rpcbind #客户端安装,访问nfs服务存储节点为客户端,例如node节点 yum install -y nfs-utils
1
2
3
4
我们在服务端创建一个共享目录 /data/share ,作为客户端挂载的远端入口,然后设置权限。
mkdir -p /data/share chmod 777 /data/share
1
2
然后,修改 NFS 配置文件 /etc/exports
vim /etc/exports # 配置内容 /data/share 172.16.8.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)
1
2
3
配置文件内容说明
此处,我配置了将 /data/share 文件目录设置为允许 IP 为该 172.16.8.0/24 区间的客户端挂载,(注意这个IP地址范围要改成你当前nfs服务所在主机的ip地址)当然,如果客户端 IP 不在该区间也想要挂载的话,可以设置 IP 区间更大或者设置为 * 即允许所有客户端挂载,例如:/home *(ro,sync,insecure,no_root_squash) 设置 /home 目录允许所有客户端只读挂载。
重启nfs服务
systemctl restart rpcbind systemctl restart nfs
1
2
测试nfs
在另一个node节点测试是否可以正常挂在nfs服务
#注意这个IP地址不是随便写的,他是上面部署nfs服务节点的IP地址 showmount -e 172.16.8.111
1
2
3.创建pv
#在nfs共享目录下创建一个目录存放pv配置 cd /data/share/ mkdir volume # 创建pv配置文件 vim t1_pv.yaml
1
2
3
4
5
pv配置文件说明
apiVersion: v1 #资源版本 kind: PersistentVolume #资源类型是pv metadata: name: test #pv资源名称 labels: type: test #资源标签 spec: capacity: storage: 10Gi # pv 提供最大的存储 accessModes: - ReadWriteMany # pv访问模式,允许多人同时读写 persistentVolumeReclaimPolicy: Recycle #pvc回收策略,允许回收 nfs: #pv 存储类型是nfs path: "/data/share" # nfs数据存储路径 server: 10.0.0.11 #nfs服务地址 readOnly: false # nfs 挂在是否只读,否
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
kubectl create -f t1_pv.yaml
1
查看pv状态
kubectl get pv
1
4.创建pvc
vim t1_pvc.yaml
1
apiVersion: v1 kind: PersistentVolumeClaim #资源类型是pvc metadata: name: nfs #pvc名称 spec: accessModes: - ReadWriteMany #pvc访问模式:多人同时访问 resources: requests: #pvc需求资源 storage: 1Gi # pvc需要1G存储空间
1
2
3
4
5
6
7
8
9
10
# 启动pvc kubectl create -f t1_pvc.yaml
1
2
查看pvc状态
kubectl get pvc
1
pvc绑定到名称test的pv上
5.持久化存储应用到项目
前面我们创建了pv和pvc,他们的作用就是用来做持久化存储。例如一个部署到k8s的项目,分别有一个tomcat业务pod和mysql数据库pod,当mysql的pod重启后,存储在mysql中的数据也随着pod的销毁而消失,这个时候我们需要将mysql中的数据持久化存储,不受pod创建和销毁影响。
# 编辑mysql rc文件,添加pvc vim mysql-rc-pvc.yml
1
2
文件配置说明
apiVersion: v1 kind: ReplicationController metadata: name: mysql spec: replicas: 1 selector: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: 10.0.0.11:5000/mysql:5.7 ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD value: '123456' volumeMounts: #挂载一个目录 - name: data # 定义目录的名称 mountPath: /var/lib/mysql #目录的路径 volumes: #使用挂载的目录 - name: data #这个名称必须和上面volumeMounts名称一致 persistentVolumeClaim: #pvc配置 claimName: nfs # pvc的名称是我们创建好的pvc名称
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
kubectl create -f mysql-rc-pvc.yaml
1
启动pod后,查看nfs的共享目录下已经有mysql的数据。
MySQL
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。