网络存储
网络存储卷∶
云存储——awsElasticBlockStore、gcePersistentDisk、azureDisk 和 azureFile。
网络文件系统——NFS、GlusterFS、CephFS 和 Cinder。
主流的存储有三种方式,一种叫fs文件,文件系统级别的,目录和目录,就是格式化好了文件系统,我们就可以直接在里面创建目录的方式
第二种块设备:其实就是我们的硬盘,我们的块设备就是硬盘,拿个硬盘放上去做好格式化,做好文件系统这种方式就是整块硬盘一个分区格式化的方式
第三种对象存储:支持http,或者ftp的这种协议通过url地址去访问和链接,通常这种对象存储的,都是在公有云上提供的比较多
网络块设备——iscsi、FC、RBD和 vSphereVolume。
其实就是我们的硬盘,我们的块设备就是硬盘,拿个硬盘放上去做好格式化,做好文件系统这种方式就是整块硬盘一个分区格式化的方式
网络存储平台———Quobyte、PortworxVolume、StorageOS 和 ScaleIO。
一般都是厂商给提供,就是网络存储
Kubernetes 内置了多种类型的网络存储卷插件,它们支持的存储服务包括传统的NAS或SAN设备(例如NFS、iscsi 和 FC等)、分布式存储(例如 GlusterFS、CephFS和RBD等)、云存储(例如 gcePersistentDisk、azureDisk、Cinder 和 awsElasticBlockStore等)以及构建在各类存储系统之上的抽象管理层(例如flocker、portworxVolume和vSphereVolume 等)。这类服务通常都是独立运行的存储系统,因相应的存储卷可以支持超越节点生命周期的数据持久性。
NFS
找台节点比如node3安装nfs
[root@k8s-node3 ~]# yum -y install nfs-utils rpcbind
[root@k8s-node3 ~]# mkdir /data/redis -p
#创建个目录
配置nfs配置文件
[root@k8s-node3 ~]# vim /etc/exports
/data/redis 172.17.8.0/24(rw,no_root_squash)
启动
[root@k8s-node3 ~]# systemctl restart rpcbind && systemctl restart nfs-server
#注意先后顺序,先启动rpcbind 在启动nfs-servere
所有node节点安装showmount
for i in 1 2 3 ; do ssh k8s-node${i} yum -y install showmount; done
找台node节点检测一下是否成功共享
[root@k8s-node1 logs]# showmount -e 172.17.8.13
Export list for 172.17.8.13:
/data/redis 172.17.8.0/24
写一个
[root@k8s-master1 nfs]# cat nfs-redis.yaml
apiVersion: v1
kind: Pod
metadata:
name: redis-pod
spec:
volumes:
- name: nfs #名字下面要引用
nfs: #使用nfs类型
path: /data/redis #nfs共享出来的目录
server: 192.168.1.103 #nfs服务器的ip 或者写主机名 主机名能解析出来
containers:
- name: redis
image: images.guoguo.com/apps/nginx:1.22.1
ports:
- containerPort: 80
volumeMounts:
- name: nfs #引用上面的名字
mountPath: /apps/nginx/logs #挂载到容器的目录
[root@k8s-master1 nfs]# kubectl apply -f nfs-redis.yaml
pod/redis-pod created
[root@k8s-master1 nfs]# kubectl get pods -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
redis-pod 1/1 Running 0 14s 192.17.65.198 k8s-node3.guoguo.com <none> <none>
[root@k8s-master1 nfs]# curl 192.17.65.198
NGINX:1.22.1-Ubuntu:18.04
[root@k8s-master1 nfs]# curl 192.17.65.198
NGINX:1.22.1-Ubuntu:18.04
[root@k8s-master1 nfs]# curl 192.17.65.198
NGINX:1.22.1-Ubuntu:18.04
[root@k8s-master1 nfs]# curl 192.17.65.198
NGINX:1.22.1-Ubuntu:18.04
[root@k8s-master1 nfs]# curl 192.17.65.198
NGINX:1.22.1-Ubuntu:18.04
[root@k8s-master1 nfs]# curl 192.17.65.198
NGINX:1.22.1-Ubuntu:18.04
[root@k8s-master1 nfs]# curl 192.17.65.198
NGINX:1.22.1-Ubuntu:18.04
[root@k8s-master1 nfs]# curl 192.17.65.198
NGINX:1.22.1-Ubuntu:18.04
[root@k8s-master1 nfs]# curl 192.17.65.198
NGINX:1.22.1-Ubuntu:18.04
[root@k8s-node3 ~]# tail -f /data/redis/access.log
192.26.159.128 - - [18/Aug/2023:01:52:57 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:52:58 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:52:58 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:52:59 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:52:59 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:53:00 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:53:00 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:53:01 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:53:43 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
这时候我们呢把容器删掉,看看nfs服务器里面的东西还在不在
[root@k8s-master1 nfs]# kubectl delete -f nfs-redis.yaml
pod "redis-pod" deleted
[root@k8s-node3 ~]# ll /data/redis/
total 8
-rw-r--r-- 1 root root 810 Aug 18 09:53 access.log
-rw-r--r-- 1 root root 0 Aug 18 09:52 error.log
-rw-r--r-- 1 root root 6 Aug 18 09:41 index.html
[root@k8s-node3 ~]# tail -10 /data/redis/access.log
192.26.159.128 - - [18/Aug/2023:01:52:57 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:52:58 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:52:58 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:52:59 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:52:59 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:53:00 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:53:00 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:53:01 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
192.26.159.128 - - [18/Aug/2023:01:53:43 +0000] "GET / HTTP/1.1" 200 26 "-" "curl/7.29.0"
[root@k8s-node3 ~]#
东西都在,这就持久化存储了