k8存储使用介绍

k8存储使⽤介绍
hostPath
hostPath 卷能将主机节点⽂件系统上的⽂件或⽬录挂载到您的 Pod 中
代码⽰例:
kind: Deployment
metadata:
name: nginx-pod
namespace: default
spec:
replicas: 3
template:
metadata:
labels:
k8s-app: nginx-pod
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
volumeMounts:
# 在容器中的路径    node节点上的内容被关联到 pod containr的 /test-pd路径下 exec进⼊pod容器的路径内可以看到节点上的内容
- mountPath: /test-pod
name: test-volume
volumes:
- name: test-volume
hostPath:
#directory location on host 绑定的节点的⽂件路径
path: /data
# this field is optional 类型为⽬录,此⽬录必须存在
type: Directory
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
namespace: default
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 32000
selector:
k8s-app: nginx-pod
k8存储介绍之 PV PVC
PV全称叫做PersistentVolume ,持久化存储卷。它是⽤来描述或者说⽤来定义⼀个存储卷的。
PersistentVolumeClaim 持久卷声明(PVC)
PVC全称 PersistentVolumeClaim 是⽤来描述希望使⽤什么样的或者说是满⾜什么条件的存储,也就是持久化存储声明。使⽤这个来描述该容器需要⼀个什么存储。⽐如下⾯使⽤NFS的PVC:
Persistent Volume主要是为了管理集的存储,供pod通过pvc来申请使⽤.
⾃⼰的理解是这样的.
在存储卷上⾯创建PV持久卷,pod 通过pvc申请pv资源,来供pod使⽤,⼤概就是这样的调⽤逻辑.调⽤拓扑图如下:
实验⽰例:
使⽤nfs类型的PV,并使⽤Deployment部署nginx服务来验证PV创建是否创建成功.
⼀、安装nfs服务
微机消谐装置umg92
在k8s master节点上创建nfs服务器,⽤于提供存储
1、安装nfs服务端:
# yum install nfs-utils rpcbind
2、创建⽤于nfs服务的存储⽂件夹:
# mkdir -p /data/nfs-server
3、编辑/etc/exports⽂件:
[root@k8s-master ~]# vim /etc/exports
/data/nfs-server  192.168.10.0/24(rw,async)
4、开启nfs服务:
# systemctl start nfs-server.service
检验是否开启成功:
[root@k8s-master ~]# showmount -e
Export list for k8s-master:
/data/nfs-server 192.168.10.0/24
[root@k8s-master ~]#
#创建好nfs服务后不需要再客户端挂载,保证nfs服务端服务正常即可.
⼆、创建pv对象
1、编辑pv资源的配置⽂件,⽂件如下:
[root@k8s-master ~]# cat pv.yaml
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-testpv
labels:
name: nfs-testpv
spec:
#指定pv为nfs服务器上对应的⽬录
nfs:
机票查询接口path: /data/nfs-server
server: 192.168.10.10
#指定pv的回收策略,即pvc资源释放后的事件,recycle删除pvc的所有⽂件(不建议⽣产环境使⽤)
persistentVolumeReclaimPolicy: Recycle小型塑料封口机
#pv存储类名称
storageClassName: mynfs-pv
#指定访问模式
accessModes:
- ReadWriteOnce
# 设置存储空间⼤⼩
capacity:
storage: 2Gi
[root@k8s-master ~]#
accessModes:⽀持三种类型
ReadWriteMany 多路读写,卷能被集多个节点挂载并读写
ReadWriteOnce 单路读写,卷只能被单⼀集节点挂载读写
ReadOnlyMany 多路只读,卷能被多个集节点挂载且只能读
2、创建该PV资源:
[root@k8s-master ~]# kubectl apply -f pv.yaml
persistentvolume/nfs-testpv created
[root@k8s-master ~]#
3、查看该pv资源:
[root@k8s-master ~]# kubectl get pv
NAME            CAPACITY  ACCESS MODES  RECLAIM POLICY  STATUS      CLAIM      STORAGECLASS      REASON  AGE nfs-testpv      2Gi        RWO            Recycle          Available              mynfs-pv                  52s
⾄此,PV资源创建成功,接下来创建pvc,供pod来申请使⽤
三、创建pvc资源
1、编辑pvc资源配置⽂件:
[root@k8s-master ~]# cat pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nfs-testpvc
spec:
# PVC也需要定义访问模式,不过它的模式⼀定是和现有PV相同或者是它的⼦集,否则匹配不到PV.
accessModes:
- ReadWriteOnce
# 定义资源要求PV满⾜这个PVC的要求才会被匹配到
resources:
requests:身份通认证系统
storage: 2Gi
storageClassName: mynfs-pv
[root@k8s-master ~]#
这个PVC就会和上⾯的PV进⾏绑定,它也有⼀些原则:
1>.PV和PVC中的spec关键字段要匹配,⽐如存储(storage)⼤⼩,访问模式.
2>. PV和PVC中的storageClassName字段必须⼀致.
2、应⽤pvc配置⽂件:
[root@k8s-master ~]# kubectl apply -f pvc.yaml
persistentvolumeclaim/nfs-testpvc created
3、查看该pvc资源:
[root@k8s-master ~]# kubectl get pvc
NAME                          STATUS    VOLUME                                    CAPACITY  ACCESS MODES  STORAGECLASS  AGE
nfs-testpvc                  Bound    nfs-testpv                                2Gi        RWO            mynfs-pv      5m1s
到这⾥,pvc也就创建完成了,接下来就是pod怎么去使⽤pvc.
四、创建nginx pod资源,使⽤pvc存储.
1、这⾥使⽤ Deployment 创建3副本的nginx pod,使⽤volumes来绑定pvc的信息,并创建svc来访问pod来验证.
[root@k8s-master ~]# cat  l
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-pod
namespace: default
spec:
replicas: 3
template:
metadata:
labels:节能煤气灶
k8s-app: nginx-pod
spec:
containers:
- name: nginx
image: nginx
#容器策略
imagePullPolicy: IfNotPresent
#容器内部的挂载点,就是将pvc的卷挂载到pod容器的这个⽬录下.
volumeMounts:
- mountPath: /usr/share/nginx/html/
name: test-volume
#这⾥是挂载卷部分,这是最最最重点部分,volumes name 要和volumeMounts name名称⼀致,claimName为pvc的名称.
volumes:
- name: test-volume
persistentVolumeClaim:
claimName: nfs-testpvc
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
namespace: default
spec:
type: NodePort
iccnports:
- port: 80
targetPort: 80
nodePort: 32000
selector:
k8s-app: nginx-pod
[root@k8s-master ~]#
2、创建nginx pod及svc
root@k8s-master ~]# kubectl apply -l
3、查看pod及svc创建信息.
root@k8s-master ~]# kubectl get pod -o wide
NAME                                    READY  STATUS                  RESTARTS  AGE    IP            NODE        NOMINATED NODE  READINESS GATES nginx-pod-5bdcc49bb7-6f7b7              1/1    Terminating            1          57m    10.244.2.44  k8s-node01  <none>          <none>
nginx-pod-5bdcc49bb7-8grz9              1/1    Terminating            1          57m    10.244.2.45  k8s-node01  <none>          <none>
nginx-pod-5bdcc49bb7-dxn56              1/1    Running                0          57m    10.244.3.55  k8s-node02  <none>          <none>
nginx-pod-5bdcc49bb7-mz9cm              1/1    Running                0          43m    10.244.3.58  k8s-node02  <none>          <none>
nginx-pod-5bdcc49bb7-tcx48              1/1    Running                0          43m    10.244.3.57  k8s-node02  <none>          <none>
[root@k8s-master ~]# kubectl get svc -o wide
NAME                      TYPE        CLUSTER-IP    EXTERNAL-IP  PORT(S)        AGE    SELECTOR
nginx-svc                NodePort    10.1.131.6    <none>        80:32000/TCP  58m    k8s-app=nginx-pod
由于我是将nfs的 /data/nfs-server⽬录作为pvc申请的存储挂载到nginx pod的访问⽬录下,所以我在/data/nfs-server⽬录创建⼀个index.html ⽂件,nginx是可以访问到的
root@k8s-master ~]# cat /data/nfs-server/index.html
hello pvc
[root@k8s-master ~]#
我的pod都是在node2节点上⾯,所以我⽤node2节点的ip:32000就可以访问到我定义的index.html内容.
⾄此,pod使⽤pvc完成,这种是静态pv使⽤的申请,后⾯会在总结pv动态申请,此处明⽩使⽤的⽅法和内在逻辑就可以.

本文发布于:2024-09-22 01:34:34,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/101830.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:创建   节点   资源
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议