kubernetes 数据持久化
pod本身是无状态,所以很多有状态的应用,就需要将数据进行持久化。
1:将数据挂在到宿主机。但是pod重启之后有可能到另外一个节点,这样数据虽然不会丢但是还是有可能会找不到
apiVersion: v1
kind: Pod
metadata:
name: busybox
labels:
name: busybox
spec:
containers:
- image: busybox
command:
- sleep
- ""
imagePullPolicy: IfNotPresent
name: busybox
volumeMounts:
- mountPath: /busybox-data
name: data
volumes:
- hostPath:
path: /tmp/data
name: data
2:挂到外部存储,如nfs
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx
spec:
replicas: 2
selector:
app: web01
template:
metadata:
name: nginx
labels:
app: web01
spec:
containers:
- name: nginx
image: reg.docker.tb/harbor/nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: /usr/share/nginx/html
readOnly: false
name: nginx-data
volumes:
- name: nginx-data
nfs:
server: 10.0.10.31
path: "/data/www-data"
上述说的是简单的存储方法,直接在deployment中定义了具体的存储,但是这样会存在几个问题。
1:权限管理,任何一个pod都可以动任意一个路径
2:磁盘大小限制,无法对某个存储块进行限制
3:如果NFS的url变了,那么所有的配置都需要修改
为了解决以上的问题,引入了PV-PVC的概念
创建一个卷PV,不属于任何namespaces,可以限制大小,读写权限
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv0001
labels:
app: "my-nfs"
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Recycle
nfs:
path: "/data/disk1"
server: 192.168.20.47
readOnly: false
再对应的namespace下面创建PVC。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
selector:
matchLabels:
app: "my-nfs"
然后kubectl apply 创建PV,PVC
最后在应用用使用该PVC
apiVersion: v1
kind: Pod
metadata:
name: test-nfs-pvc
labels:
name: test-nfs-pvc
spec:
containers:
- name: test-nfs-pvc
image: registry:5000/back_demon:1.0
ports:
- name: backdemon
containerPort: 80
command:
- /run.sh
volumeMounts:
- name: nfs-vol
mountPath: /home/laizy/test/nfs-pvc
volumes:
- name: nfs-vol
persistentVolumeClaim:
claimName: nfs-pvc
这样可以方便的限制每个pvc所在的子目录,同时万一nfs迁移后,只需要更改pv中的url即可
kubernetes 数据持久化的更多相关文章
- K8S学习笔记之Kubernetes数据持久化方案
在开始介绍k8s持久化存储前,我们有必要了解一下k8s的emptydir和hostpath.configmap以及secret的机制和用途. 0x00 Emptydir EmptyDir是一个空目录, ...
- kubernetes 数据持久化之Glusterfs
1.GlusterFS 部署过程请参考上篇文章 2.配置endpoints [root@manager ~]# cat glusterfs-endpoints.json { "kind&q ...
- kubernetes的应用数据持久化
1.无状态应用与有状态应用 应用的有状态和无状态是根据应用是否有持久化保存数据的需求而言的,即持久化保存数据的应用为有状态的应用,反之则为无状态的应用.常见的系统往往是有状态的应用,比如对于微博和微信 ...
- openshift 容器云从入门到崩溃之七《数据持久化》
数据持久化常用的有两种: hostPath 挂载容器宿主机的本地文件夹,直接修改pod的配置 volumes: - hostPath: path: /data/logging-es type: '' ...
- Kubernetes 学习(十)Kubernetes 容器持久化存储
0. 前言 最近在学习张磊老师的 深入剖析Kubernetes 系列课程,最近学到了 Kubernetes 容器持久化存储部分 现对这一部分的相关学习和体会做一下整理,内容参考 深入剖析Kuberne ...
- k8s集群,使用pvc方式实现数据持久化存储
环境: 系统 华为openEulerOS(CentOS7) k8s版本 1.17.3 master 192.168.1.244 node1 192.168.1.245 介绍: 在Kubernetes中 ...
- k8s部署mysql数据持久化
在这里我部署mysql的目的是为了后面将上一篇博客docker打包的el-admin镜像部署到k8s上,所以本文主要是部署mysql并实现持久化. 1.将我们的应用都部署到 el-admin 这个命名 ...
- Redis学习总结(1)——数据持久化
以前研究Redis的时候,很多东西都不太明白,理解得也不太深,现在有时间重新拾起来看看,将一些心得记录下来,希望和大家一起探讨. 一.简介 Redis是一个单线程高可用的Key-Value存储系统,和 ...
- iOS之数据持久化方案
概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) ...
随机推荐
- C++知识整理(进制)
++输出二进制.十进制.八进制和十六进制总结 分类: C++ 2013-01-14 02:26 592人阅读 评论(0) 收藏 举报 在C++中,默认状态下,数据按十进制输入输出.如果要求按八进制或十 ...
- Android干坏事——禁止设备休眠
实现这一功能的方法有两种,一种是在Manifest.xml文件里面声明,一种是在代码里面修改LayoutParams的标志位.具体如下: 1.在Manifest.xml文件里面用user-permis ...
- Android四款系统架构工具
开发者若想开发出一款高质量的应用,一款功能强大的开发工具想必是不可或缺的.开发工具简化了应用的开发流程,也能使开发者在应用开发本身投入更多的精力.本文就为大家带来4款实用的Android应用架构工具. ...
- Linux-Tmux使用初体验
Tmux使用初体验 tmux #开启tmux tmux ls #显示已有tmux列表(ctrl+b s) tmux attach-session -t 数字 #选择tmux ctrl+b c 创建一个 ...
- Hadoop Map/Reduce教程
原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/mapred_tutorial.html 目的 先决条件 概述 输入与输出 例子:WordCount v1.0 ...
- windows下使用mongodb
********************************************************************* ERROR: dbpath (\data\db\) does ...
- OAF_OAF控件系列1 - Region Type汇总(概念)
2014-06-22 Created By BaoXinjian
- 【Oracle错误集锦】:ORA-12154: TNS: 无法解析指定的连接标识符
相信这个错误大家都不陌生,仅仅要安装使用过Oracle的预计都遇到过这个问题,一般出如今用PL/SQL连接Oracle数据库的时候发生的. 导致这个错误的原因以及解决方式都是多种多样的,我也是三番五次 ...
- /usr/local/ssl/lib/libssl.a: error adding symbols: Bad value
一.背景 编译第三方库A的时候提示依赖openssl库. 二.编译openssl库 去官网下载最新版本的openssl-1.0.2l.tar.gztar -zxvf openssl-1.0.2l.ta ...
- 如何用Latex合并多个pdf文件?
如何用Latex合并多个pdf文件? 用TeX合并pdf, 用LaTeX合并pdf 代码: \documentclass[a4paper]{article} \usepackage{pdfpage ...