kubernetes 存储volume,pv和pvc的使用
emptyDIR 临时目录
hostPath :使用主机的路径
网络存储:
传统的设备存储:NAS,SAN
分布式存储:glusterfs,rbd,cephfs
云存储:EBS,Azure,阿里云的
一、emptyDir 的类型:一个pod里面2个容易,挂载同一个目录,
注意:emptyDir的生命周期同pod周期,简单来说,pod删除了,emptyDir也随之删除
apiVersion: v1
kind: Pod
metadata:
name: pod-demo
namespace: default
labels:
app: myapp
tier: frontend
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
ports:
- name: http
containerPort:
volumeMounts: #容器挂载
- name: html
mountPath: /data/web/html/
- name: busybox
image: busybox:latest
command: ["/bin/sh" ,"-c","sleep 3600"]
volumeMounts: #容器挂载
- name: html
mountPath: /data/
volumes: #定义存储
- name: html
emptyDir: {}
二、hostPath 类型存储
apiVersion: v1
kind: Pod
metadata:
name: nginx-volume
namespace: default
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort:
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html/
volumes:
- name: html
hostPath:
path: /data/nginx/v1/
type: DirectoryOrCreate
三、nfs 类型存储
首先要准备好nfs,我在172.17.1.36的机器上安装nfs,到处的目录为/nfs/data
yum install nfs-utils
vim vim /etc/exports
/nfs/data/ 172.17.0.0/16(rw,no_root_squash)
systemctl start nfs
nfs准备好了,注意,在pod的节点机器要一定确定可以挂载nfs类型的,否则创建pod会出错。执行yum install nfs-utils 就可以挂载了
nfs pod 的yaml文件:
apiVersion: v1
kind: Pod
metadata:
name: nginx-volume-nfs
namespace: default
spec:
containers:
- name: nginx-nfs
image: nginx
ports:
- containerPort:
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html/
volumes:
- name: html
nfs:
path: /nfs/data/
server: 172.17.1.36
四、pv,pvc的使用
对于pv和pvc,首先要准备存储的,我用的是nfs,在172.17.1.36的节点上划分了5个路径作为存储的设备。
mkdir /data/{v1,v2,v3,v4,v5} -pv
vim /etc/exports
添加如下的内容:
/data/v1 172.17.0.0/16(rw,no_root_squash)
/data/v2 172.17.0.0/16(rw,no_root_squash)
/data/v3 172.17.0.0/16(rw,no_root_squash)
/data/v4 172.17.0.0/16(rw,no_root_squash)
/data/v5 172.17.0.0/16(rw,no_root_squash)
保存,导出下。
exportfs -avr

查看下是否正常。
nfs的存储的好了。下一步要先创建pv,yaml文件如下
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv01
labels:
name: pv01
spec:
nfs:
path: /data/v1/
server: 172.17.1.36
accessModes: ["ReadWriteOnce","ReadWriteMany"]
capacity:
storage: 5Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv02
labels:
name: pv02
spec:
nfs:
path: /data/v2/
server: 172.17.1.36
accessModes: ["ReadWriteOnce","ReadWriteMany"]
capacity:
storage: 3Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv03
labels:
name: pv03
spec:
nfs:
path: /data/v3/
server: 172.17.1.36
accessModes: ["ReadWriteOnce","ReadWriteMany"]
capacity:
storage: 5Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv04
labels:
name: pv04
spec:
nfs:
path: /data/v4/
server: 172.17.1.36
accessModes: ["ReadWriteOnce","ReadWriteMany"]
capacity:
storage: 10Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv05
labels:
name: pv05
spec:
nfs:
path: /data/v5/
server: 172.17.1.36
accessModes: ["ReadWriteOnce","ReadWriteMany"]
capacity:
storage: 10Gi
kubectl apply -f pv-nfs.yaml

显示,pv创建完成
接下来创建pvc 和pod,yaml文件如下
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
namespace: default
spec:
accessModes: ["ReadWriteMany"]
resources:
requests:
storage: 5Gi #到这里是创建pvc的
---
apiVersion: v1
kind: Pod
metadata:
name: nginx-volume-pvc
namespace: default
spec:
containers:
- name: nginx-pvc
image: nginx
ports:
- containerPort:
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html/
volumes: #这里是选择volume的类型
- name: html
persistentVolumeClaim:
claimName: mypvc

显示pvc创建好了,同时pvc绑定了一个pv,到此pv和pvc的安装部署完成。
ps:pv和pvc是一对一绑定的。但是多个pod可以挂载同一个pvc
通常使用的流程是,首先创建存储,在创建pv,接着创建pvc,pod挂载到相应的pvc。
kubernetes 存储volume,pv和pvc的使用的更多相关文章
- Kubernetes集群PV和PVC详解
Kubernetes集群高级存储资源PV及PVC 文章目录 Kubernetes集群高级存储资源PV及PVC 1.高级存储PV和PVC概念部分 2.PV和PVC资源的生命周期 3.PV资源介绍与案例配 ...
- 6.k8s.存储Volume.PV.PVC
#Volume Volume 解决数据持久化和容器间共享数据 Kubernetes支持几十种类型的后端存储卷 #hostPath挂载实例,挂载Node节点/tmp/test-volume目录到容器/t ...
- kubernetes系列11—PV和PVC详解
本文收录在容器技术学习系列文章总目录 1.认识PV/PVC/StorageClass 1.1 介绍 管理存储是管理计算的一个明显问题.该PersistentVolume子系统为用户和管理员提供了一个A ...
- Kubernetes 中的pv和pvc
原文地址:http://www.cnblogs.com/leidaxia/p/6485646.html 持久卷 PersistentVolumes 本文描述了 Kubernetes 中的 Persis ...
- Kubernetes中的PV和PVC是啥
K8S引入了一组叫作Persistent Volume Claim(PVC)和Persistent Volume(PV)的API对象,大大降低了用户声明和使用持久化Volume的门槛. 在Pod的Vo ...
- Kubernetes中的PV和PVC
K8S引入了一组叫作Persistent Volume Claim(PVC)和Persistent Volume(PV)的API对象,大大降低了用户声明和使用持久化Volume的门槛.在Pod的Vol ...
- 持久化存储之 PV、PVC、StorageClass
PV介绍: PersistentVolume(PV)是群集中由管理员配置的一块存储. 它是集群中的资源,就像节点是集群资源一样. PV是容量插件,如Volumes,但其生命周期独立于使用PV的任何单个 ...
- (九)Kubernetes 存储卷
Kubernetes存储卷概述 Pod本身具有生命周期,这就带了一系列的问题,第一,当一个容器损坏之后,kubelet会重启这个容器,但是文件会丢失-这个容器会是一个全新的状态:第二,当很多容器在同一 ...
- Kubernetes 系列(六):持久化存储 PV与PVC
在使用容器之后,我们需要考虑的另外一个问题就是持久化存储,怎么保证容器内的数据存储到我们的服务器硬盘上.这样容器在重建后,依然可以使用之前的数据.但是显然存储资源和 CPU 资源以及内存资源有很大不同 ...
随机推荐
- 剑指offer40:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
1 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 2 思路和方法 (1)异或:除了有两个数字只出现了一次,其他数字都出现了两次.异或运算中,任 ...
- 编写程序模拟strlwr()和strupr()函数功能
strlwr(字符串)strlwr()的作用是将字符串中大写字母转换成小写字母 strupr(字符串)strupr()的作用是将字符串中小写字母转换成大写字母 /* strlwr(字符串) strlw ...
- WPF入门(1)——DataContext
在WPF中,应用程序有两层:UI层和Data层.这里新建一个项目说明哪些是UI层,哪些是数据层. UI层很明显,就是用户看到的界面.但是数据层并不是下图所示: 上图中是UI层view的后台代码.当然, ...
- shell脚本查询某一目录的某一部分文件并且拷贝到其他目录(有则跳过没有则拷贝)
#!/bin/bash dir=`ls /root//*` for i in $dir do #basename 返回一个字符串参数的基本文件名称.(只剩下文件名除去路径名) a=`basename ...
- Django模型(model)系统
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- Till I Collapse CodeForces - 786C (主席树区间加,二分最小值)
大意: 给定序列, 将序列划分为若干段, 使得每段不同数字不超过k, 分别求出k=1...n时的答案. 考虑贪心, 对于某个k 从1开始, 每次查询最后一个颜色数<=k的点作为一个划分, 直到全 ...
- postman中传参说明
1.form-data 表单传递,对应multipart/form-data, 2.x-www-form-urlencoded 默认传递,对应application/x-www-from-urlenc ...
- winfrom_权限设置_TreeView的相关问题
1.获取TreeView的值: 循环TreeView,获取checked每个节点的Text,串起来用逗号“,”隔开,保存到数据库. List<string> list = new List ...
- [NOIP10.5模拟赛]3.c题解--思维
题目链接 这次不咕了 https://www.luogu.org/problemnew/show/AT2389 闲扯 考场20分爆搜走人 \cy 话说这几天T3都很考验思维啊 分析 我们先钦定一只鸡( ...
- 封装AJAX库(参考JQ)
//jQ方法 $.ajax([URL],[OPTIONS]) $.ajax({ url:'', data:null, datatype:'json', method:'GET', async:true ...