当前位置: 首页 > news >正文

Linux——动态卷的管理

  1. 确保已经设置了对应的动态卷的驱动(provisioner   制备器)
  2. 基于动态驱动创建对应的存储类
  3. 创建PVC (PVC 将会自动根据大小、访问模式等创建PV)
  4. Pod的spec 中通过volumes 和 volumemounts 来完成pvc 的绑定和pvc对应pv的挂载
  5. 删除pod 不会删除PVC, 删除PVC也不会导致使用PVC的pod被删除
  6. PVC 在移除时,默认对应的PV也会被移除,但是reclaimPolicy 的值设定为 retain 或者 recycle的情况下,PV会被保留下来

静态卷的制备:

  1. 确保对应卷驱动存在
  2. 使用驱动创建对应的存储类
  3. 手动创建PV
  4. 手动创建PVC,PVC 基于 大小、访问模式、存储类 绑定到符合条件的PV
  5. 后续的使用步骤和动态卷一致
[root@control ~]# kubectl apply -f  nfs-csi-test.yml
persistentvolumeclaim/pvc0001 created
[root@control ~]# kubectl get pvc
NAME      STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
pvc0001   Pending                                      nfs-csi        <unset>                 7s
# 因为动态卷对应的nfs 服务端未启动,所以PVC的状态为pending 即调度中,等待创建
# 去nfs服务端启动服务,动态卷自动创建。PVC状态为已绑定
[root@control ~]# kubectl get pvc
NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
pvc0001   Bound    pvc-4e543d46-aa2c-4259-8a13-6412bc049038   1Gi        RWX            nfs-csi        <unset>                 40s
[root@control ~]# ls nfs-*
nfs-csi-test.yml  nfs-pvc.yml  nfs-pv.yml
[root@control ~]# cat nfs-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:name: pv0003
spec:capacity:storage: 5GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: ''mountOptions:- hard- nfsvers=4.1nfs:path: /nfs-shareserver: node1
[root@control ~]# kubectl apply -f nfs-pv.yml
persistentvolume/pv0003 created
[root@control ~]# kubectl  get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM             STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE
pv0003                                     5Gi        RWO            Retain           Available                                    <unset>                          7s
pvc-4e543d46-aa2c-4259-8a13-6412bc049038   1Gi        RWX            Retain           Bound       default/pvc0001   nfs-csi        <unset>                          3m50s
[root@control ~]# kubectl delete -f nfs-pv.yml    // 和动态卷目录混合在一起,不太容易区分,为静态卷指定对应的目录
persistentvolume "pv0003" deleted
nfs服务端也完成对应目录的导出
// 清理已删除的动态卷的目录,结合自己的环境
[root@node1 ~]# rm -rf /nfs-share/pvc-255fbbe9-13b9-41d9-8cfc-deb28eea1d42/ /nfs-share/pvc-5376c184-5be5-47a0-ae94-918e7440176e/  /nfs-share/pvc-a1603ec6-4c0c-4c2b-a1a9-26b119fff8ce/
[root@node1 ~]# mkdir /nfs-share/pv0003
[root@node1 ~]# vim /etc/exports[root@node1 ~]# cat /etc/exports
/nfs-share      192.168.110.0/24(rw,sync,no_root_squash)
/nfs-share/pv0003       192.168.110.0/24(rw,sync,no_root_squash)[root@node1 ~]# exportfs -rv
exporting 192.168.110.0/24:/nfs-share/pv0003
exporting 192.168.110.0/24:/nfs-share
[root@node1 ~]# ls /nfs-share/pv0003/[root@control ~]# vim nfs-pv.yml
[root@control ~]# cat nfs-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:name: pv0003
spec:capacity:storage: 5GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: ''mountOptions:- hard- nfsvers=4.1nfs:path: /nfs-share/pv0003server: node1[root@control ~]# kubectl apply  -f  nfs-pv.yml
persistentvolume/pv0003 created
[root@control ~]# kubectl  get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM             STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE
pv0003                                     5Gi        RWO            Retain           Available                                    <unset>                          6s
pvc-4e543d46-aa2c-4259-8a13-6412bc049038   1Gi        RWX            Retain           Bound       default/pvc0001   nfs-csi        <unset>                          9m11s
[root@control ~]# kubectl describe pv pv0003
Name:            pv0003
Labels:          <none>
Annotations:     <none>
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:
Status:          Available
Claim:
Reclaim Policy:  Retain
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        5Gi
Node Affinity:   <none>
Message:
Source:Type:      NFS (an NFS mount that lasts the lifetime of a pod)Server:    node1Path:      /nfs-share/pv0003ReadOnly:  false
Events:        <none>
[root@control ~]# vim nfs-pvc.yml
[root@control ~]# cat nfs-pvc.yml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pvc0003
spec:accessModes:- ReadWriteOnceresources:requests:storage: 5GistorageClassName: ''[root@control ~]# kubectl apply -f nfs-pvc.yml
persistentvolumeclaim/pvc0003 created
[root@control ~]# kubectl get pvc
NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
pvc0001   Bound    pvc-4e543d46-aa2c-4259-8a13-6412bc049038   1Gi        RWX            nfs-csi        <unset>                 11m
pvc0003   Bound    pv0003                                     5Gi        RWO                           <unset>                 6s
[root@control ~]# kubectl describe pvc pv0003
Error from server (NotFound): persistentvolumeclaims "pv0003" not found
[root@control ~]# kubectl describe pvc pvc0003
Name:          pvc0003
Namespace:     default
StorageClass:
Status:        Bound
Volume:        pv0003
Labels:        <none>
Annotations:   pv.kubernetes.io/bind-completed: yespv.kubernetes.io/bound-by-controller: yes
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      5Gi
Access Modes:  RWO
VolumeMode:    Filesystem
Used By:       <none>
Events:        <none>
[root@control ~]# vim test-nginx.yml
[root@control ~]# cp test-nginx.yml static-volume-nginx.yml
[root@control ~]# vim static-volume-nginx.yml
[root@control ~]# kubectl apply -f  static-volume-nginx.yml
deployment.apps/static-nginx created
[root@control ~]# kubectl get pods
NAME                           READY   STATUS    RESTARTS   AGE
static-nginx-7d8cfbdf8-6ckzq   1/1     Running   0          11s
static-nginx-7d8cfbdf8-qqtft   1/1     Running   0          11s
static-nginx-7d8cfbdf8-x8znc   1/1     Running   0          11s
[root@control ~]# kubectl describe pod static-nginx-7d8cfbdf8-6ckzq
Name:             static-nginx-7d8cfbdf8-6ckzq
Namespace:        default
Priority:         0
Service Account:  default
Node:             node2/192.168.110.22
Start Time:       Wed, 16 Oct 2024 09:02:41 +0800
Labels:           app=frontendpod-template-hash=7d8cfbdf8
Annotations:      <none>
Status:           Running
IP:               10.244.2.161
IPs:IP:           10.244.2.161
Controlled By:  ReplicaSet/static-nginx-7d8cfbdf8
Containers:static-nginx:Container ID:   containerd://2d30d84d1dee46efd77b149690d09c59c44cdc97e14898f6c645acfe1133ac66Image:          mynginx:new_filesImage ID:       sha256:2a1e46ec2739c364dea52056f4440f3abd9a4dc0a3afcc8e705637aef5fceabdPort:           80/TCPHost Port:      0/TCPState:          RunningStarted:      Wed, 16 Oct 2024 09:02:43 +0800Ready:          TrueRestart Count:  0Environment:    <none>Mounts:/usr/share/nginx/html from nfs-static (rw)/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-lh9fz (ro)
Conditions:Type                        StatusPodReadyToStartContainers   TrueInitialized                 TrueReady                       TrueContainersReady             TruePodScheduled                True
Volumes:nfs-static:Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)ClaimName:  pvc0003ReadOnly:   falsekube-api-access-lh9fz:Type:                    Projected (a volume that contains injected data from multiple sources)TokenExpirationSeconds:  3607ConfigMapName:           kube-root-ca.crtConfigMapOptional:       <nil>DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300snode.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:Type    Reason     Age   From               Message----    ------     ----  ----               -------Normal  Scheduled  28s   default-scheduler  Successfully assigned default/static-nginx-7d8cfbdf8-6ckzq to node2Normal  Pulled     27s   kubelet            Container image "mynginx:new_files" already present on machineNormal  Created    27s   kubelet            Created container static-nginxNormal  Started    27s   kubelet            Started container static-nginx

hostPath类型的卷,需要保证在对应的节点上目录已经创建完成,具体参考K8S官方文档:

配置 Pod 以使用 PersistentVolume 作为存储 | Kubernetes本文将向你介绍如何配置 Pod 使用 PersistentVolumeClaim 作为存储。 以下是该过程的总结:你作为集群管理员创建由物理存储支持的 PersistentVolume。你不会将该卷与任何 Pod 关联。你现在以开发人员或者集群用户的角色创建一个 PersistentVolumeClaim, 它将自动绑定到合适的 PersistentVolume。你创建一个使用以上 PersistentVolumeClaim 作为存储的 Pod。准备开始 你需要一个包含单个节点的 Kubernetes 集群,并且必须配置 kubectl 命令行工具以便与集群交互。 如果还没有单节点集群,可以使用 Minikube 创建一个。熟悉持久卷文档。在你的节点上创建一个 index.html 文件 打开集群中的某个节点的 Shell。 如何打开 Shell 取决于集群的设置。 例如,如果你正在使用 Minikube,那么可以通过输入 minikube ssh 来打开节点的 Shell。在该节点的 Shell 中,创建一个 /mnt/data 目录:# 这里假定你的节点使用 "sudo" 来以超级用户角色执行命令 sudo mkdir /mnt/data 在 /mnt/data 目录中创建一个 index.html 文件:# 这里再次假定你的节点使用 "sudo" 来以超级用户角色执行命令 sudo sh -c "echo 'Hello from Kubernetes storage' > /mnt/data/index.icon-default.png?t=O83Ahttps://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-persistent-volume-storage/#create-a-persistentvolume

相关文章:

Linux——动态卷的管理

确保已经设置了对应的动态卷的驱动&#xff08;provisioner 制备器&#xff09;基于动态驱动创建对应的存储类创建PVC &#xff08;PVC 将会自动根据大小、访问模式等创建PV&#xff09;Pod的spec 中通过volumes 和 volumemounts 来完成pvc 的绑定和pvc对应pv的挂载删除pod 不…...

第三季度中国游戏市场收入创历史新高;京东物流与淘宝天猫达成合作;YouTube 上线“用相机拍摄”标签....|网易数智日报

第三季度中国游戏市场收入917.66亿&#xff0c;创历史新高 中国音数协游戏工委今日发布了最新的 2024 年第三季度中国游戏产业季度报告。 数据显示&#xff0c;2024 年第三季度中国游戏市场收入 917.66 亿元&#xff0c;环比增长 22.96%&#xff0c;同比增长 8.95%。 中国音…...

智慧城管综合管理系统源码,微服务架构,基于springboot、vue+element+uniapp技术开发,支持二次开发

智慧城管源码&#xff0c;智慧城管执法办案系统源码 智慧城管综合执法办案平台是智慧城市框架下&#xff0c;依托物联网、云计算、多网融合等现代化技术&#xff0c;运用数字基础资源、多维信息感知、协同工作处置、智能化辅助决策分析等手段&#xff0c;形成具备高度感知、互联…...

2024Flutter面试题

1.Dart是值传递还是引用传递&#xff1f; dart是值传递。 每次调用函数&#xff0c;传递过去的都是对象的内存地址&#xff0c;而不是这个对象的赋值。 2.简述Dart语音特性 在Dart中&#xff0c;一切都是对象&#xff0c;所有的对象都是继承自Object Dart是强类型语言&#…...

MySQL-23.多表查询-内连接

一.内连接 -- 多表查询 select * from tb_emp,tb_dept where tb_emp.dept_id tb_dept.id;-- 内连接 -- A.查询员工的姓名&#xff0c;及所属的部门名称&#xff08;隐式内连接实现&#xff09; select tb_emp.name as 员工姓名,tb_dept.name as 部门名称 from tb_emp,tb_dep…...

实用的 Python 小脚本

一、引言 在日常办公和电脑使用中&#xff0c;我们经常会遇到一些重复性的任务或需要快速获取特定信息的情况。Python 作为一种强大而灵活的编程语言&#xff0c;可以用来编写各种小脚本&#xff0c;以自动化这些任务并提高工作效率。本文将介绍一些 Python 常用的小脚本&…...

哪种掏耳朵方式好?正确的掏耳工具!

人体的耳屎会随着活动量加大而增加&#xff0c;如果长期不清理&#xff0c;耳屎堆积在耳道深处很有可能会堵塞鼓膜甚至影响听力。但如果需要清理耳屎的话&#xff0c;哪种掏耳朵方式好呢&#xff1f;可视挖耳勺可以帮助我们在全程可视的情况下&#xff0c;精准有效地完成采耳&a…...

如何让别人喜欢你的代码

良好的编码习惯是编程人员的基本素养&#xff0c;有利于后期人员的维护和查看。 毕竟大家都喜欢美女和靓仔 目录 js函数注释规范 案例 其他 推荐链接 js函数注释规范 常用符号 说明 用法 param 参数 param {type} name return 返回值 return {type} 案例 /***…...

【Flutter】Dart:库

在 Dart 中&#xff0c;库&#xff08;Library&#xff09;是组织和重用代码的基本方式。通过库&#xff0c;我们可以将代码分割成模块化的部分&#xff0c;方便管理和共享&#xff0c;同时避免命名冲突。Dart 提供了大量内置库&#xff0c;用于支持常见的功能&#xff0c;比如…...

从0开始深度学习(18)——环境和分布偏移

有时&#xff0c;根据测试集的精度衡量&#xff0c;模型表现得非常出色。 但是当数据分布突然改变时&#xff0c;模型在部署中会出现灾难性的失败。 有时模型的部署本身就是扰乱数据分布的催化剂。 举一个有点荒谬却可能真实存在的例子。 假设我们训练了一个贷款申请人违约风险…...

Java项目-基于springboot框架的线上买菜系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…...

API接口的未来趋势:智能化、自动化与集成化的发展

在当今数字化驱动的世界中&#xff0c;应用程序编程接口&#xff08;API&#xff09;已成为连接不同软件、平台和服务的关键桥梁。随着技术的不断进步&#xff0c;API接口的未来趋势将聚焦于智能化、自动化与集成化的发展。本文将深入探讨这些趋势&#xff0c;并分析其在推动数…...

Yolo系列 V1和V2的对比

在计算机视觉领域中&#xff0c;目标检测是一个核心问题&#xff0c;旨在识别图像中所有感兴趣的目标&#xff0c;并给出它们的类别和位置。近年来&#xff0c;随着深度学习技术的发展&#xff0c;目标检测领域取得了巨大的进步。Yolo&#xff08;You Only Look Once&#xff0…...

安装vue发生异常: idealTree:nodejs: sill idealTree buildDeps

一、异常 C:\>npm install vue -g npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIREDnpm ERR! request to https://registry.npm.taobao.org/vue failed, reason: certificate has expired 二、原因 请求 https://registry.npm.taobao.org 失败&#xff0c;证…...

SQL基础练习

SQL语句的下载脚本链接&#xff01;&#xff01;&#xff01; 【免费】SQL练习资源-具体练习操作可以查看我发布的文章资源-CSDN文库https://download.csdn.net/download/Z0412_J0103/89908378 1 查看所有数据库 SHOW DATABASES; 结果展示&#xff1a; 2 创建库 方法一&#…...

Python 如何处理大规模数据库表的迁移与数据迁移的高效执行

Python 如何处理大规模数据库表的迁移与数据迁移的高效执行 引言 在现代应用开发中&#xff0c;随着业务需求的增长&#xff0c;数据库表结构和数据往往需要进行迁移和更新。迁移&#xff08;Migration&#xff09;是指对数据库表的结构、数据类型、索引、约束等进行修改或更新…...

如何在 MySQL 中处理大量的 DELETE 操作

全文目录&#xff1a; 开篇语前言摘要简介概述DELETE 操作的基本概念常用的 DELETE 方法 核心源码解读简单 DELETE 语句批量 DELETE 示例 案例分析案例1&#xff1a;使用简单 DELETE 删除用户数据案例2&#xff1a;使用分批 DELETE 应用场景演示场景1&#xff1a;用户管理系统场…...

技嘉主板怎么开启TPM_技嘉主板开启TPM2.0教程

在win11最低要求是提示&#xff0c;电脑必须满足 TPM 2.0&#xff0c;并开需要开启TPM 才能正常安装windows11系统&#xff0c;有很多技嘉主板的用户问我&#xff0c;技嘉主板怎么开启tpm功能呢&#xff1f;下面小编就给大家详细介绍一下技嘉主板开启tpm功能的方法。 如何确认你…...

正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 5427(unattended-upgr)持有

这段信息表示你的系统正在等待一个锁文件 (/var/lib/dpkg/lock-frontend) 解除。锁文件用于防止多个进程同时修改系统的包管理器&#xff08;apt 或 dpkg&#xff09;&#xff0c;避免冲突或损坏系统。 在这种情况下&#xff0c;进程 unattended-upgr&#xff08;自动升级进程…...

js实现简单的【发布者-订阅者模式】

发布订阅模式是什么 发布订阅模式是一种代码的设计模式&#xff0c;它允许对象间进行松散耦合的通信。 发布者&#xff08;Publishers&#xff09;不会直接调用订阅者&#xff08;Subscribers&#xff09;&#xff0c;相反&#xff0c;它们通过事件通道发布消息&#xff1b;订…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...