K8s 存储卷配置
docker存储容器删除,数据也删除,针对需要应用持久化的数据就要配置存储,常见就是基于存储到节点上(而节点存储可以是NFS、ceph、iscsi等等)K8s的Pod存储由于Pod是基于容器的集合,基于pause容器实现存储共享K8s 存储卷存储卷作用就是由于容器的结构,数据会随着容器删除而删除,那么Pod对于需要数据的共享和持久化就需要借助存储卷配置1、使用配置结构docker:docker的存
·
docker存储
容器删除,数据也删除,针对需要应用持久化的数据就要配置存储,常见就是基于存储到节点上(而节点存储可以是NFS、ceph、iscsi等等)
K8s的Pod存储
由于Pod是基于容器的集合,基于pause容器实现存储共享
K8s 存储卷
存储卷作用就是由于容器的结构,数据会随着容器删除而删除,那么Pod对于需要数据的共享和持久化就需要借助存储卷配置
1、使用配置结构
- docker:docker的存储使用是直接相对于容器本身
- 配置资源,基于节点目录或者NFS,ceph都要基于节点上配置好
- mount使用:docker run -v /root/xxxx:/root/xxxx (docker存储分2种,详细可以看之前文章)
- Pod:Pod的存储是基于Pod资源之上来定义的,因为Pod不是单一个体
- 需要先定义存储,也就是把存储资源准备好,volumes字段(Pod层)
- 容器mount挂载存储资源(绑定存储资源), volumeMounts字段(containers层)
2、存储卷分类
- 共享存储卷:针对临时数据使用或者基于一个Pod内使用
- 持久化共享存储卷:数据可以实现持久化的共享存储,并不会随着容器生命周期而被删除
共享存储卷
- emptyDir:类似docker直接运行,而Pod是内容器需要共享数据,会随着Pod生命周期而消失
- 可以基于内存实现提供高性能
持久化共享存储卷
- hostPath:基于节点的目录存储,节点可以是NFS存储或者ceph存储,但是无法实现控制器的副本策略,数据只能在节点持久化和共享(适合daemonset控制器,只在各自节点负责收集数据)
- nfs/cinder/ceph…:基于网络存储,实现真正的持久化共享存储
举例(NFS)
前提条件
node节点需要安装nfs客户端
apiVersion: apps/v1
kind: Deployment
metadata:
name: centos-nfs
namespace: default
labels:
app: centos
version: "7.6"
spec:
replicas: 1
selector:
matchLabels:
app: centos
version: "7.6"
template:
metadata:
labels:
app: centos
version: "7.6"
spec:
containers:
- name: centos-nfs
image: centos:7.6.1810
imagePullPolicy: IfNotPresent
command: [ /usr/sbin/init ]
volumeMounts: #挂载存储
- mountPath: /mnt #容器内挂载目录
name: nfs #定义存储的name名称
volumes: #定义存储
- name: nfs #名称
nfs: #存储类型
path: /nfs_share #nfs定义的目录
server: 192.168.12.10 #服务器地址
readOnly: true #开启只读,volumeMounts也可以设置针对容器,这里开启就是针对Pod
- 参考:书籍-kubernetes进阶实战-马永亮
更多推荐
已为社区贡献15条内容
所有评论(0)