k8s-第六节-数据持久化

数据持久化

kubernetes 集群不会为你处理数据的存储,需要为数据库挂载一个磁盘来确保数据的安全。

可以选择云存储、本地磁盘、NFS。

  • 本地磁盘:可以挂载某个节点上的目录,但是这需要限定 pod 在这个节点上运行

  • 云存储:不限定节点,不受集群影响,安全稳定;需要云服务商提供,裸机集群是没有的。

  • NFS:不限定节点,不受集群影响

hostPath 挂载示例

把节点上的一个目录挂载到 Pod,但是已经不推荐使用了,https://kubernetes.io/zh/docs/concepts/storage/volumes/#hostpath

配置方式简单,需要手动指定 Pod 跑在某个固定的节点。
仅供单节点测试使用;不适用于多节点集群。
minikube 提供了 hostPath 存储 https://minikube.sigs.k8s.io/docs/handbook/persistent_volumes

只能挂载固定目录,其他目录丢失数据,不推荐使用,点开手册即可看到

apiVersion: apps/v1
kind: StatefulSet
metadata:name: mongodb
spec:replicas: 1selector:matchLabels:app: mongodbserviceName: mongodbtemplate:metadata:labels:app: mongodbspec:containers:- name: mongoimage: mongo:4.4# IfNotPresent 仅本地没有镜像时才远程拉,Always 永远都是从远程拉,Never 永远只用本地镜像,本地没有则报错imagePullPolicy: IfNotPresentvolumeMounts:- mountPath: /data/db # 容器里面的挂载路径name: mongo-data    # 卷名字,必须跟下面定义的名字一致volumes:- name: mongo-data              # 卷名字hostPath:path: /data/mongo-data      # 节点上的路径 只能挂载指定几个目录之下type: DirectoryOrCreate     # 指向一个目录,不存在时自动创建

持久存储框架

持久储存

物理硬盘存储Storage Class (SC)

将存储卷划分为不同的种类,例如:SSD,普通磁盘,本地磁盘,按需使用。https://kubernetes.io/zh/docs/concepts/storage/storage-classes/

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: slow
provisioner: kubernetes.io/aws-ebs
parameters:type: io1iopsPerGB: "10"fsType: ext4

持久存储卷 PV

  • 持久存储卷(Persistent Volume,PV)是集群中的一块存储,可以被 Pod 挂载到具体的应用容器中使用。
  • 集群管理员需要负责创建并维护这些 PV
  • 持久存储卷是集群资源,不属于任何 namespace(不用项目来区分),但需要与某个 namespace 相关联,因为 Pod 需要通过 namespace 进行调度。

描述卷的具体信息,例如磁盘大小,访问模式 https://kubernetes.io/zh/docs/concepts/storage/persistent-volumes/

apiVersion: v1
kind: PersistentVolume
metadata:name: mongodata
spec:capacity:storage: 2GivolumeMode: Filesystem  # Filesystem(文件系统) Block(块)accessModes:- ReadWriteOnce       # 卷可以被一个节点以读写方式挂载persistentVolumeReclaimPolicy: DeletestorageClassName: local-storage#   存储类型,本地存储,下面要根据所选进行配置local:path: /root/datanodeAffinity:required:# 通过 hostname 限定在某个节点创建存储卷nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node2

持久存储卷声明 PVC

  • 持久存储卷声明(Persistent Volume Claim,PVC)是用户对存储的请求。
  • PVC 并不是具体存储设备,而仅仅是一个存储的“描述”
  • PVC 类似于 Pod,Pod 会消耗节点资源,而 PVC 则消耗 PV 资源。
  • PVC 用于向 Kubernetes 申请存储资源。
  • PVC 所申请的存储资源由 PersistentVolume(PV)提供。

对存储需求的一个申明,可以理解为一个申请单,系统根据这个申请单去找一个合适的 PV还可以根据 PVC 自动创建 PV。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mongodata
spec:accessModes: ["ReadWriteOnce"]storageClassName: "local-storage"resources:requests:storage: 2Gi

为什么要这么多层抽象

  • 更好的分工,运维人员负责提供好存储(指定PV,SC),开发人员不需要关注磁盘细节,只需要写一个申请单(编写PVC)。
  • 方便云服务商提供不同类型的,配置细节不需要开发者关注,只需要一个申请单。
  • 动态创建,开发人员写好申请单后,供应商可以根据需求自动创建所需存储卷。

本地磁盘

本地磁盘不支持动态创建,需要提前创建好,并且需要指定存储类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/39451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GEE计算遥感生态指数RESI

目录 RESI湿度绿度热度干度源代码归一化函数代码解释整体的代码功能解释:导出RSEI计算结果参考文献RESI RSEI = f (Greenness,Wetness,Heat,Dryness)其遥感定义为: RSEI = f (VI,Wet,LST,SI)式中:Greenness 为绿度;Wetness 为湿度;Thermal为热度;Dryness 为干度;VI 为植被指数…

文心一言指令:快速入门手册

文心一言(Wenxin Yiyan)是百度推出的一款人工智能语言模型,能够生成自然语言内容,回答问题,进行翻译等多种任务。以下是详细的文心一言指令使用指南,帮助您快速上手。 目录 简介注册与登录接口调用常用指…

手写starter核心思路流程-全网最详细版本

全网最详细手写starter组件教程 那么在写这篇博客之前,先问一下大家为什么要写starter组件,仅仅只是为了炫技吗?还是真正的在业务中需要.在现在的开发环境下,什么是竞争力? 举例分页查询来说,每个来公司的程序员都有一套自己写分页的流程,但是这套流程基本上都是重复的,那么…

Docker学习笔记(一)概念理解

一、什么是docker容器 Docker容器是一种轻量级、可移植的软件封装技术,它允许开发者将应用程序及其依赖、配置文件、运行环境等打包到一个独立的、自包含的执行单元中。容器与虚拟机相似,都提供了隔离的运行环境,但容器更加轻量级&#xff0c…

如何清理电脑内存?让电脑运行如飞!

电脑内存(RAM)的清理对于维持系统的流畅运行至关重要。随着使用时间的增加,系统内存会被各种应用程序和后台进程占用,导致系统响应变慢,甚至出现卡顿现象。通过有效地清理内存,可以提升电脑的性能&#xff…

深入理解如何撤销 Git 中不想提交的文件

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

初识 ANTLR4:构建强大解析器的利器

初识 ANTLR4:构建强大解析器的利器 在现代软件开发中,解析和处理各种形式的文本数据是一个常见而又复杂的任务。无论是编译器、数据格式转换工具,还是协议解析器,解析器的作用都至关重要。ANTLR4(ANother Tool for La…

MySQL内存使用率高且不释放问题排查与总结

背景 生产环境mysql 5.7内存占用超过90%以上,且一直下不来。截图如下: 原因分析 1、确定mysql具体的占用内存大小,通过命令:cat /proc/Mysql进程ID/status查看 命令执行后的结果比较多(其他参数的含义想了解可参考这…

静态路由的配置

5.3静态路由 静态路由由网络管理员手动配置,配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络。缺点是不能自动适应网络拓扑的变化,需要人工干预。 5.3.1静态路由实验 1、实验需求 ① 掌握路由表的概念&#xff1…

低代码开发的终局:数字化应用创新智能平台

随着数字化转型的加速,企业和开发者们面临着越来越多的压力来快速交付创新的数字化解决方案。在这样的背景下,低代码开发平台逐渐成为了一种强大的工具,帮助开发者们在不需要深入编码的情况下快速构建应用程序。 低代码开发的定义和优势 低代…

cpp随笔——如何实现一个简单的进程心跳功能

什么是进程的心跳 在我们日常后台服务程序运行中,一般是调度模块,进程心跳以及进程监控共同工作,进而实现实现服务的稳定运行,在前面我们介绍过如何去实现一个简单的调度模块,而今天我们所要介绍的就是如何实现进程的心跳,首先什么是进程的心…

git上传文件

git init git add . git commit -m " " git remote add origin 仓库的地址 git push -u origin master 如果出现以下问题 可以用这一句强制上传 git push -f origin master

Centos下rpm和yum执行卡住问题(已解决)

问题描述 执行rpm和yum卡住, 没有任何报错信息,且无法 ctrl c 终止,只能通过后台 kill -9 杀死。 问题排查: 查看yum日志:yum -vv 软件包 会发现卡在 loading keyring from rpmdb,即load DB存在问题。 …

C++ QT 全局信号的实现

每次做全局信号都需要重新建立文件&#xff0c;太麻烦了&#xff0c;记录一下&#xff0c;以后直接复制。 头文件 globalSignalEmitter.h #pragma once //#ifndef GLOBALSIGNALEITTER_H //#define GLOBALSIGNALEITTER_H#include <QObject>class GlobalSignalEmitter : …

使用 llamaIndex 快速实现智能体

AI 智能体就是可以根据当前环境进行推理&#xff0c;并根据处理结果进行下一步的操作。简单来说 AI 智能体可以与外界环境进行交互&#xff0c;并根据结果执行更复杂的操作。本文将通过llamaIndex 实现一个简单的 Agent 实时获取数据&#xff0c;由于大模型是通过静态数据进行训…

收银系统源码分享-PHP可二开

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 私有化独立…

游戏工作室如何巧妙应对IP封禁风险?

游戏工作室在使用IP时&#xff0c;面临着封号的风险&#xff0c;因此需要采取一些防封技巧来保护自己的运营。以下是一些游戏工作室常用的防封技巧。 1. 多IP轮换 游戏工作室可以使用多个代理IP&#xff0c;并定期轮换它们。这样做可以减少单个IP被频繁访问同一游戏服务器而被…

sqlalchemy分页查询

sqlalchemy分页查询 在SQLAlchemy中,可以使用limit和offset方法实现分页查询 from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine from models import MyModel # 假设MyModel是你定义的模型# 连接数据库 engine = create_engine(sqlite:///myd…

C++_03

1、构造函数 1.1 什么是构造函数 类的构造函数是类的一种特殊的成员函数&#xff0c;它会在每次创建类的新对象时执行。 每次构造的是构造成员变量的初始化值&#xff0c;内存空间等。 构造函数的名称与类的名称是完全相同的&#xff0c;并且不会返回任何类型&#xff0c;也不…

MODBUS TCP协议简介

目录 一、协议概述 二、协议结构 三、功能码 四、通信过程 五、注意事项 六、应用实例 七、优点 八、缺点 MODBUS TCP协议是一种基于TCP/IP协议的Modbus变种&#xff0c;它允许Modbus协议在以太网网络上运行&#xff0c;使得设备之间可以通过IP网络交换数据。以下是MOD…