Kubernetes之存储管理(中)
NFS网络存储
emptyDir和hostPath存储,都仅仅是把数据存储在pod所在的节点上,并没有同步到其他节点,如果pod出现问题,通过deployment会产生一个新的pod,如果新的pod不在之前的节点,则会出现问题,找不到对应的数据。使用网络存储可以解决该问题。
所有工作节点需安装nfs-common(ubuntu)或nfs-utils(centos7)客户端组件。
yum install -y nfs-u*
- 在master上搭建NFS服务器
yum install -y rpcbind
yum install -y nfs-utils
# 创建共享目录
mkdir /123
chmod 777 /123
# 修改配置文件
vim /etc/exports
/123 *(rw,sync,no_root_squash)
# 启动服务
systemctl start rpcbind
systemctl start nfs-server
systemctl enable rpcbind
systemctl enable nfs-server

- 测试
showmount -e

- 创建
nfs.yaml文件,内容如下
apiVersion: v1
kind: Pod
metadata:name: pod1
spec:volumes:- name: volume1nfs:server: 192.168.159.164path: /123containers:- image: nginximagePullPolicy: IfNotPresentname: pod1volumeMounts:- name: volume1mountPath: /usr/share/nginx/html
- 创建pod并查看
kubectl apply -f nfs.yaml
kubectl get pod -o wide

- 测试
kubectl cp nfs.yaml pod1:/usr/share/nginx/html
ls /123/# 删除pod
kubectl delete -f nfs.yaml

持久性存储
kubernets的持久化存储机制的核心是PV(Persistent Volume)和PVC(Persistent Volume Claim)。

PersistentVolume(持久卷)
pv不属于任何命名空间,全局可见。
- 创建
pv1.yaml文件,内容如下
apiVersion: v1
kind: PersistentVolume
metadata:name: pv1
spec:capacity: ## 指定存储容量storage: 5GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: Recyclenfs:server: 192.168.159.164path: /123
注意:storage的大小和accessModes的值,这是pvc和pv绑定的关键
accessModes有以下三个值:
ReadWriteOnce(RWO):允许单个节点挂载读写
ReadWriteMany(RWX):允许多个节点挂载读写
ReadOnlyMany(ROX):允许单个节点挂载只读
Deployment由于多副本,要使用RWX。
- 创建pv,查看其属性
kubectl apply -f pv1.yaml
kubectl get pv
kubectl describe pv pv1

可以看到,pv1所使用的后端类型为NFS,NFS的服务器是192.168.159.164,共享目录是/123。
- 删除pv的方法
kubectl delete -f pv1.yaml
PersistentVolumeClaim
- pvc是基于命名空间创建的,不同命名空间里的pvc相互隔离。
- 如果有多个不同命名空间绑定属性相同的的PVC去和PV绑定,只有一个PVC能和PV绑定,其他状态为pending。
- pvc通过storage的大小和accessModes的值和pv进行绑定,PV storage >= PVC storage。
- 为了控制PV和PVC绑定,可以通过增加一个属性storageClassName进行控制。在PV和PVC里添加storageClassName:
spec:
- storageClassName: xyz
- 创建
pvc1.yaml文件,内容如下
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pvc1
spec:accessModes:- ReadWriteOncevolumeMode: Filesystemresources:requests:storage: 5Gi
- 创建pvc,并查看其属性
kubectl apply -f pvc1.yaml
kubectl get pvc
kubectl describe pvc pvc1

- 删除pvc的方法
kubectl delete -f pvc1.yaml
使用持久性存储
- 创建
pod_pvc.yaml文件,内容如下
apiVersion: v1
kind: Pod
metadata:name: pod1
spec:volumes:- name: volume1persistentVolumeClaim:claimName: pvc1containers:- image: nginximagePullPolicy: IfNotPresentname: pod1volumeMounts:- name: volume1mountPath: /mnt
- 创建pod并查看
kubectl apply -f pod_pvc.yaml
kubectl get pod -o wide

- 拷贝文件,测试
kubectl cp pod_pvc.yaml pod1:/mnt
ls /123

pv回收策略
前面创建pv的时候,有一句persistentVolumeReclaimPolicy: Recycle,有以下两种策略:
- Recycle:删除pvc后,会生成一个pod回收数据,删除pv里的数据,删除pvc后pv可以复用,pv状态由Released变为Available。
- Retain:不回收数据,删除pvc后,pv依然不可用,pv状态长期保持为Released,需要手动删除pv,然后重新创建。但是,删除pv的时候并不会删除里面的数据。
相关文章:
Kubernetes之存储管理(中)
NFS网络存储 emptyDir和hostPath存储,都仅仅是把数据存储在pod所在的节点上,并没有同步到其他节点,如果pod出现问题,通过deployment会产生一个新的pod,如果新的pod不在之前的节点,则会出现问题,…...
MySQL workbench的基本操作
1. 创建新的连接 hostname主机名输入“local host”和“127.0.0.1”效果是一样的,指的是本地的服务器。 需要注意的是,此处的密码在安装软件的时候已经设定。 点击【Test Connection】,测试连接是否成功。 创建完的连接可以通过,…...
【Flink】FlinkSQL中Table和DataStream互转
在我们实际使用Flink的时候会面临很多复杂的需求,很可能需要FlinkSQL和DataStream互相转换的情况,这就需要我们熟练掌握Table和DataStream互转,本篇博客给出详细代码以及执行结果,可直接使用,通过例子可学会Table和DataStream互转,具体步骤如下: maven如下<?xml ver…...
网络总结知识点(网络工程师必备)一
♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放,树高千尺,落叶归根人生不易,人间真情 目录 1.TCP UDP协议的区别 2.ARP是第几层协议,其作用...
离线安装samba与配置(.tar方式安装)
一、samba离线安装【安装并设置成功后,相关文件及其位置:①smbd:/usr/local/samba/sbin/smbd②nmdb:/usr/local/samba/sbin/nmbd③配置文件 smb.conf:/usr/local/samba/lib/smb.conf④添加用户的 smbpasswd 文件&#…...
[Java基础]—JDBC
前言 其实学Mybatis前就该学了,但是寻思目前主流框架都是用mybatis和mybatis-plus就没再去看,结果在代码审计中遇到了很多cms是使用jdbc的因此还是再学一下吧。 第一个JDBC程序 sql文件 INSERT INTO users(id, NAME, PASSWORD, email, birthday) VAL…...
基本面向对象编程-计算机基本功能实现_
《C/S项目实训》实验报告 实验名称: 基本面向对象编程-计算机基本功能实现_ 一、实验目的 通过综合实践项目,理解Java 程序设计是如何体现面向对象编程基本思想,掌握OOP方法,掌握事件触发、消息响应机制。进一步巩固面向对…...
C++面向对象之多态性
文章目录C面向对象之多态性1.静态多态2.动态多态3.多态的好处3.1使用方法4.纯虚函数5.虚析构与纯虚析构5.1问题5.2解决6.其他知识点7.代码8.测试结果8.1父类中无虚函数,父类的指针指向子类对象,将调用父类中的函数,无法调用子类中的重写函数&…...
Android性能优化系列篇:弱网优化
弱网优化1、Serializable原理通常我们使用Java的序列化与反序列化时,只需要将类实现Serializable接口即可,剩下的事情就交给了jdk。今天我们就来探究一下,Java序列化是怎么实现的,然后探讨一下几个常见的集合类,他们是…...
Mysql 插入大批量数据调优方法
Mysql 插入大批量数据调优方法[toc]1、多线程插入(单表)在数据里做插入操作的时候,整体时间的分配是这样的:链接耗时 (30%)发送query到服务器 (20%)解析query (20%&#…...
matlab基础
系列文章目录 文章目录系列文章目录前言1 基本用法总结基础语法桌面管理矩阵均匀间隔矢量矩阵创建矩阵索引前言 介绍了matlab的基本用法 1 基本用法 >> save filename.mat % 将当前工作区的所有变量保存为mat文件 >> load filename.mat % 加载文件>> loa…...
自动化测试——多窗口切换和切换frame
这里写目录标题一、多窗口切换1、base.py:公共代码2、切换句柄的方式1,通过for循环3、切换句柄的方式2,通过索引切换4、源代码二、frame窗口1、什么是frame?2、Frame 分类3、判断要定位的元素在不在frame中两种方式方式一:鼠标选…...
C#中,Elasticsearch.Net判断空字符串
之前有个业务需求,由于最开始存储到es里的,是默认空字符串。 后面程序取数据时,发现需要取空字符串的数据时,不好取出来。 字符串的字段如图: 实际数据如图: 我用的是C#语言,使用的是Elastic…...
23种设计模式-适配器模式
适配器模式(Adapter Pattern)是一种常用的设计模式,它可以将不兼容的接口转换成可兼容的接口,使得原本不能一起工作的类可以协同工作。 在Java中,适配器模式一般有两种实现方式,即类适配器模式和对象适配器…...
深入理解this指向问题
this指向 在运行时绑定,所以this和函数的调用方式和调用的位置有关,和定义的位置没关系 绑定规则 默认绑定(非严格模式下this指向全局变量,在严格模式下函数内的this指向undefined) 独立函数调用,没有主题 …...
事业单位联考(综合应用A类)典型例题教案
【联考A类】根据材料2,请你概括C市B县旅游质监所投诉处理科小王在接待投诉时存在的主要问题,并指出问题的具体表现。(35分)要求:准确、全面、分条作答。字数在300字以内。材料2:某日,几位游客家…...
frp内网穿透实验
Frp (Fast Reverse Proxy) 是比较流行的一款。FRP 是一个免费开源的用于内网穿透的反向代理应用,它支持 TCP、UDP 协议, 也为 http 和 https 协议提供了额外的支持。你可以粗略理解它是一个中转站, 帮你实现 公网 ←→ FRP(服务器) ←→ 内网…...
认识JavaScript中的防抖函数
👨 作者简介:大家好,我是Taro,前端领域创作者 ✒️ 个人主页:唐璜Taro 🚀 支持我:点赞👍📝 评论 ⭐️收藏 文章目录前言一、防抖是什么?1. deounce-v1的基本…...
macOS 13.3 Beta 2 (22E5230e)With OpenCore 0.8.9正式版 and winPE双引导分区原版镜像
原文地址:http://www.imacosx.cn/112340.html,转载需注明出处镜像特点完全由黑果魏叔官方制作,针对各种机型进行默认配置,让黑苹果安装不再困难。系统镜像设置为双引导分区,全面去除clover引导分区(如有需要…...
JetPack—DataStore核心原理与使用
简介 首先,DataStore是Jetpack一部分,是一种数据存储解决方案。其次,DataStore使用协程及flow以异步、一致的方式实现数据的存储。最后是DataStore的实现,分为Preferences DataStore和Proto DataStore:Preferences Da…...
25岁的Java工程师:我的AI转型之路,附完整学习路线与资料下载
一位Java开发者在AI大模型兴起后面临职业危机,通过博学谷的系统培训成功转型AI领域。经过6个月刻苦学习,在老师指导下克服数学基础薄弱等困难,最终获得月薪15K的AI工作机会。作者分享了自己的转型经历、完整学习路线和AI大模型资源࿰…...
78. RKE2 集群配置失败,由于无法解析 localhost,导致 kube-apiserver 健康检查失败
Environment 环境Rancher v2.6 牧场主 v2.6A Rancher-provisioned RKE2 cluster一个由牧场者配置的 RKE2 集群Situation 地理位置There are a high number of restarts for cluster component Pods in the affected downstream RKE2 cluster: 受影响的下游 RKE2 集群中&…...
若依前后端分离版实现MQTT消息实时推送
1. MQTT协议与若依框架的完美结合 MQTT协议就像物联网世界的"短信系统",专为设备间通信设计。它最大的特点是轻量级和高效率,特别适合网络条件不稳定的场景。想象一下家里的智能设备——温度传感器每隔几秒就要上报数据,如果每次通…...
FRCRN开源大模型效果展示:宠物叫声、鸟鸣等生物噪声精准抑制
FRCRN开源大模型效果展示:宠物叫声、鸟鸣等生物噪声精准抑制 你有没有遇到过这样的烦恼?在录制重要会议、线上课程,或者一段珍贵的家庭录音时,背景里突然传来一阵狗叫、猫叫,或者窗外叽叽喳喳的鸟鸣声?这些…...
Axure本地化界面优化指南:全平台适配与效率提升实战
Axure本地化界面优化指南:全平台适配与效率提升实战 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包,不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 作为…...
Realistic Vision V5.1虚拟摄影棚实操:多轮迭代生成——从草图到精修人像
Realistic Vision V5.1虚拟摄影棚实操:多轮迭代生成——从草图到精修人像 1. 项目概述 Realistic Vision V5.1虚拟摄影棚是一款基于Stable Diffusion 1.5生态顶级写实模型开发的本地化工具,专为摄影级人像生成而设计。这个工具解决了普通用户在尝试使用…...
如何通过TMSpeech实现本地化语音交互:突破实时性与隐私性的技术方案
如何通过TMSpeech实现本地化语音交互:突破实时性与隐私性的技术方案 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech 引言:重新定义本地化语音处理的价值边界 在数字化浪潮席卷各行各业的今天…...
ESP32 GitHub OTA升级库:语义化版本驱动的安全固件更新
1. 项目概述 esp_ghota 是一款专为 ESP32 系列 SoC 设计的嵌入式 OTA(Over-The-Air)升级库,其核心能力是通过 GitHub Releases API 实现固件与文件系统分区的远程安全更新。该库并非从零构建网络协议栈或 OTA 引擎,而是深度集成…...
终极zsh-autocomplete测试指南:如何轻松编写和运行自动化测试
终极zsh-autocomplete测试指南:如何轻松编写和运行自动化测试 【免费下载链接】zsh-autocomplete 🤖 Real-time type-ahead completion for Zsh. Asynchronous find-as-you-type autocompletion. 项目地址: https://gitcode.com/gh_mirrors/zs/zsh-aut…...
Win11下CY7C68013驱动安装全攻略:从NI-VISA配置到LabVIEW识别(避坑指南)
Win11下CY7C68013驱动安装全攻略:从NI-VISA配置到LabVIEW识别(避坑指南) 在嵌入式开发与数据采集领域,CY7C68013(FX2LP)作为赛普拉斯经典的USB 2.0控制器芯片,因其高性价比和灵活的可编程特性&a…...
