k8s存储卷
1.emptyDir存储卷
apiVersion: v1
kind: Pod
metadata:
name: cunchujuan
spec:
containers:
- name: myapp
#定义第一容器用于显示index.html文件内容
image: ikubernetes/myapp:v1
imagePullPolicy: IfNotPresent
volumeMounts:
#调用存储卷
- name: html
#使用存储卷的名称要和下面定义的一样
mountPath: /usr/share/nginx/html/
#在容器内部挂载的路径
- name: busybox
#定义第二个容器用于产生index.html内容
image: busybox:latest
imagePullPolicy: IfNotPresent
volumeMounts:
- name: html
mountPath: /data/
command: ['/bin/sh','-c','while true;do echo $(date) >> /data/index.html;sleep 2;done']
#该命令会不停向,存储卷的index.html文件追加时间
volumes:
#定义存储卷
- name: html
#定义存储卷名称
emptyDir: {}
#定义存储卷类型
在上面,我们定义了2个容器,其中第二个容器是输入日期到存储卷的index.html当中,因为两个容器都是挂载的同一个存储卷,所以第一个容器的index.html是和第二个共享的,不停curl 能看见index.html在不停的增长
创新互联长期为千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为老城企业提供专业的成都网站设计、网站建设,老城网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
2.hostPath存储卷
apiVersion: v1
kind: Pod
metadata:
name: cs-hostpath
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
imagePullPolicy: IfNotPresent
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html/
volumes:
- name: html
hostPath:
#存储卷类型为 hostPath
path: /data/hostpath
#实际node节点上的路径
type: DirectoryOrCreate
先看下调度到那个node的节点上,这边调度到cs27节点上了
mkdir /data/hostpath/ -pv #在cs27节点上创建 hostpath的存储卷文件夹
echo "hostpath存储卷测试" >/data/hostpath/index.html #在存储卷里生成一个主页文件
curl 访问一下,能看到文件内容就是上面我们生成的
注意这边容器在里面修改了数据,是会同步到hostpath 的存储卷的就和挂载一样
3.nfs共享存储卷
再找一台主机充当nfs server
mkdir data #创建nfs文件夹
echo "nfs测试">index.html #创建测试html文件
yum install -y nfs-utils #安装nfs 软件
vim /etc/exports #修改nfs配置文件
/data/ 192.168.0.0/24(rw,no_root_squash)
#配置文件 路径加共享对方的网段
每个node节点也要安装 yum install -y nfs-utils ,否则无法没挂载驱动
#在node的节点运行showmount -e 50.1.1.111 看看有没有挂载权限
kubectl apply -f nfs.yaml #载入容器资源
查看下ip ,curl 访问一下看是不是之前在nfs server上创建的html的测试文件
4.NFS使用PV和PVC
4.1 pv定义方式介绍
[root@k8s-master ~]# kubectl explain pv #查看pv的定义方式
FIELDS:
apiVersion
kind
metadata
spec
[root@k8s-master ~]# kubectl explain pv.spec #查看pv定义的规格
spec:
nfs(定义存储类型)
path(定义挂载卷路径)
server(定义服务器名称)
accessModes(定义访问模型,有以下三种访问模型,以列表的方式存在,也就是说可以定义多个访问模式)
ReadWriteOnce(RWO) 单节点读写
ReadOnlyMany(ROX) 多节点只读
ReadWriteMany(RWX) 多节点读写
capacity(定义PV空间的大小)
storage(指定大小)
[root@k8s-master volumes]# kubectl explain pvc #查看PVC的定义方式
KIND: PersistentVolumeClaim
VERSION: v1
FIELDS:
apiVersion
kind
metadata