文章目录

  • 前言
  • 步骤
    • 持久化服务器上操作
    • 设置挂载路径
    • Node节点上操作
  • PV和PVC
    • 实现流程
    • 举例

前言

之前我们有提到数据卷:emptydir ,是本地存储,pod重启,数据就不存在了,需要对数据持久化存储

对于数据持久化存储【pod重启,数据还存在】

  • nfs:网络存储【通过一台服务器来存储】

步骤

持久化服务器上操作

  • 找一台新的服务器nfs服务端,安装nfs
  • 设置挂载路径
    使用命令安装nfs
[root@k8s-master ~]$ yum install -y nfs-utils

首先创建存放数据的目录

[root@k8s-master ~]$ mkdir -p /data/nfx

设置挂载路径

# 打开文件
[root@k8s-master ~]$ vim /etc/exports# 添加如下内容
/data/nfs *(rw,no_root_squash)

执行完成后,即部署完持久化服务器

Node节点上操作

然后需要在k8s集群node节点上安装nfs,这里需要在 node1 和 node2节点上安装

[root@k8s-node ~]$ yum install -y nfs-utils

执行完成后,会自动帮我们挂载上

启动nfs服务端

[root@k8s-master ~]$ systemctl start nfs

K8s集群部署应用
最后我们在k8s集群上部署应用,使用nfs持久化存储

# 创建一个pv文件
[root@k8s-master ~]$ mkdir pv# 进入
[root@k8s-master ~]$ cd pv

然后创建一个yaml文件 nfs-nginx.yaml

[root@k8s-master ~]$ cat > nfs-nginx.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-dep1
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxvolumeMounts:- name: wwwrootmountPath: /usr/share/nginx/htmlports:- containerPort: 80volumes:- name: wwwrootnfs:server: 192.168.88.10path: /data/nfs
EOF

通过这个方式,就挂载到了刚刚我们的nfs数据节点下的 /data/nfs 目录

最后就变成了: /usr/share/nginx/html -> 192.168.88.10/data/nfs 内容是对应的

通过这个 yaml文件,创建一个pod

[root@k8s-master ~]$ kubectl apply -f nfs-nginx.yaml

创建完成后,我们也可以查看日志

[root@k8s-master ~]$ kubectl describe pod nginx-dep1

下面我们就可以进行测试了,比如现在nfs服务节点上添加数据,然后在看数据是否存在 pod中

# 进入pod中查看
[root@k8s-master ~]$ kubectl exec -it nginx-dep1 bash

PV和PVC

对于上述的方式,我们都知道,我们的ip 和端口是直接放在我们的容器上的,这样管理起来可能不方便

所以这里就需要用到 pv 和 pvc的概念了,方便我们配置和管理我们的 ip 地址等元信息

  • PV:持久化存储,对存储的资源进行抽象,对外提供可以调用的地方【生产者】

  • PVC:用于调用,不需要关心内部实现细节【消费者】

PV 和 PVC 使得 K8S 集群具备了存储的逻辑抽象能力。使得在配置Pod的逻辑里可以忽略对实际后台存储 技术的配置,而把这项配置的工作交给PV的配置者,即集群的管理者。存储的PV和PVC的这种关系,跟 计算的Node和Pod的关系是非常类似的;PV和Node是资源的提供者,根据集群的基础设施变化而变 化,由K8s集群管理员配置;而PVC和Pod是资源的使用者,根据业务服务的需求变化而变化,由K8s集 群的使用者即服务的管理员来配置。

实现流程

  • PVC绑定PV
  • 定义PVC
  • 定义PV【数据卷定义,指定数据存储服务器的ip、路径、容量和匹配模式】

举例

创建一个 pvc.yaml

[root@k8s-master ~]$ cat > pvc.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-dep1
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxvolumeMounts:- name: wwwrootmountPath: /usr/share/nginx/htmlports:- containerPort: 80volumes:- name: wwwrootpersistentVolumeClaim:claimName: my-pvc---apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: my-pvc
spec:accessModes:- ReadWriteManyresources:requests:storage: 5Gi
EOF

第一部分是定义一个 deployment,做一个部署

  • 副本数:3
  • 挂载路径
  • 调用:是通过pvc的模式

然后定义pvc

[root@k8s-master ~]$ cat > pv.yaml << EOF
apiVersion: v1
kind: PersistentVolume
metadata:name: my-pv
spec:capacity:storage: 5GiaccessModes:- ReadWriteManynfs:path: /k8s/nfsserver: 192.168.88.10
EOF

然后就可以创建pod了

[root@k8s-master ~]$ kubectl apply -f pv.yaml

然后我们就可以通过下面命令,查看我们的 pv 和 pvc之间的绑定关系

[root@k8s-master ~]$ kubectl get pv, pvc

到这里为止,我们就完成了我们 pv 和 pvc的绑定操作,通过之前的方式,进入pod中查看内容

[root@k8s-master ~]$ kubect exec -it nginx-dep1 bash

然后查看 /usr/share/nginx.html

也同样能看到刚刚的内容,其实这种操作和之前我们的nfs是一样的,只是多了一层pvc绑定pv的操作

14、Kubernetes持久化存储相关推荐

  1. Kubernetes持久化存储Cephfs

    女主宣言 上一篇 kubernetes持久化存储Ceph RBD 介绍了Ceph RBD在kubernetes中的使用,本篇将会介绍Cephfs在kubernetes中的使用.本文最先发布于 opsd ...

  2. 干货 | 如何评估Kubernetes持久化存储方案

    在2018年的Garnter技术成熟度曲线中,容器存储出现在了技术触发期,已经开始进入大众的视野.我相信,在未来的两年内,容器存储会随着Kubernetes的进一步成熟和商业化,其地位会越来越重要.如 ...

  3. 如何评估Kubernetes持久化存储方案

    在2018年的Garnter技术成熟度曲线中,容器存储出现在了技术触发期,已经开始进入大众的视野.我相信,在未来的两年内,容器存储会随着Kubernetes的进一步成熟和商业化,其地位会越来越重要.如 ...

  4. Kubernetes持久化存储PV、PVC和StorageClass介绍

    PV和PVC Kubernetes Volume提供了非常好的数据持久化方案,不过对于大型Kubernetes集群来说管理上还有不方便之处.Volume方案需要创建Pod或者Deployment的管理 ...

  5. Kubernetes 持久化存储 Cephfs

    熟悉kubernetes volume的同学应该了解,kubernetes 对volume的提供支持"静态PV"和"动态PV"两种方式. 静态PV:集群管理员创 ...

  6. K8s 或 K3s 集群中持久化存储方案选型

    存储架构 1 三个概念: pv , pvc ,storageclass pv - 持久化卷, 支持本地存储和网络存储, 例如hostpath,ceph rbd, nfs等,只支持两个属性, capac ...

  7. 四大开源分布式存储_Kubernetes持久化存储方案测试

    在2018年的Garnter技术成熟度曲线中,容器存储出现在了技术触发期,已经开始进入大众的视野.我相信,在未来的两年内,容器存储会随着Kubernetes的进一步成熟和商业化,其地位会越来越重要.如 ...

  8. 使用Ceph集群作为Kubernetes的动态分配持久化存储

    2019独角兽企业重金招聘Python工程师标准>>> 使用Docker快速部署Ceph集群 , 然后使用这个Ceph集群作为Kubernetes的动态分配持久化存储. Kubern ...

  9. Kubernetes 使用 ceph-csi 消费 RBD 作为持久化存储

    本文详细介绍了如何在 Kubernetes 集群中部署 ceph-csi(v3.1.0),并使用 RBD 作为持久化存储. 需要的环境参考下图: 本文使用的环境版本信息: Kubernetes 版本: ...

最新文章

  1. LeetCode简单题之数组序号转换
  2. 用简单术语让你看到贝叶斯优化之美
  3. Java并发学习之玩转线程池
  4. 10月了,聊聊我今年参加秋招的真实感受
  5. linux不同发行版 程序通用吗,为什么各种Linux发行版使用不同的包管理器?
  6. Share Point 开发系列之一:开发方式的选择
  7. 教你做前端表单文本框必填
  8. 怎样查看class文件的jdk版本号
  9. Codeforces Round #513 总结
  10. java 包之 BeanUtils包的使用
  11. Pandas常用操作方法
  12. 2021-09-13 《鸟叔Linux私房菜》阅读纪录 第一章-Linux是什么如何学习-Linux 是什么Torvalds的Linux 发展
  13. 一种低成本的机械动平衡方法 郑氏橡皮泥动平衡法
  14. 2020年程序员年薪、婚恋、跳槽等报告出炉,说的是你吗?
  15. 北京联合大学计算机学院在哪个校区,2021年北京联合大学有几个校区,大一新生在哪个校区...
  16. String转成JSON或String转为list后转为JSON或String转为map后转为JSON
  17. 留学人员入户佛山需要哪些材料
  18. springboot毕业设计 基于springboot校园二手交易网站系统毕业设计设计与实现参考
  19. mcafee 杀毒软件防火墙下载和病毒库升级及设置教程
  20. 发泡聚苯乙烯(EPS)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. R语言ggplot2可视化指定图像标题(title)、副标题(subtitle)的内容、字体大小、字体类型、色彩、对齐方式等实战
  2. R可视化包ggplot2设置透明背景实战
  3. R语言广义线性模型Logistic回归模型C Statistics计算
  4. python代码实现鸡尾酒排序(双向冒泡排序)
  5. 局部加权线性回归(Local Weighted Linear Regression)+局部加权回归+局部线性回归
  6. 俞敏洪+摆脱恐惧+世界想让你做一个平凡的人、你信了吗
  7. 使用hyperopt(Bayesian optimization)为lightGBM模型挑选最优参数进行模型构建、by Cross Validation
  8. 窗口函数(防忘笔记)
  9. Two Straws May Make a Perfect Diamond: Selecting Individually Weak Features for a Better Accuracy
  10. 单片微型计算机系统应用和开发特点,单片微机原理及应用 徐春辉 电子工业出版社习题答案.doc...