k8s pv pvc的使用

news/2024/5/21 1:16:10/文章来源:https://blog.csdn.net/weixin_46858849/article/details/130388490

k8s pv pvc的使用

  1. 安装nfs服务器
yum install rpcbind nfs-utils -y
systemctl enable rpcbind
systemctl enable nfs
systemctl start rpcbind
systemctl start nfs
mkdir -p /root/data/sc-data
[root@master sc-data]# cat /etc/exports
/root/data/sc-data 192.168.1.0/24(rw,no_root_squash)
/root/data/nginx/pv  192.168.1.0/24(rw,no_root_squash)
别的服务器检测是否能用
[root@node1 ~]# showmount -e 192.168.1.90
Export list for 192.168.1.90:
/root/data/sc-data  192.168.1.0/24
/root/data/nginx/pv 192.168.1.0/24

静态创建 pv pvc

  1. 创建pv
[root@master xiongfei]# cat  pv-nginx.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:name:  pv-nginx  # pv 的名字
spec:capacity:  # 容量storage: 5GiaccessModes: # 访问模式- ReadWriteMany  persistentVolumeReclaimPolicy: Retain  # 删除pv之后,nfs目录下数据的保存方式 ,delte 删除,Retain 保留nfs:path: /root/data/nginx/pvserver: 192.168.1.90
  1. 创建pvc
[root@master xiongfei]# cat nginx-pvc.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pvc-nginxnamespace: dev
spec:accessModes: - ReadWriteManyresources:requests:storage: 4Gi # 这个地方的容量尽量要在pv的范围之内,他会去匹配到和她比较合适的pv 进行绑定
  1. 创建一个configmap
[root@master xiongfei]# cat nginx-configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:name: nginx-configmapnamespace: dev
data:default.conf: |-server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   /usr/share/nginx/html/account;  index  index.html index.htm;}location /account {proxy_pass http://192.168.1.130:8088/account;}         error_page 405 =200 $uri;error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}server {listen 8081;server_name localhost;location / {root   /usr/share/nginx/html/org; index  index.html index.htm;}location /org {proxy_pass http://192.168.1.130:8082/org;  # 使用websocket的协议进行proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;# 启用支持websscoket连接proxy_set_header Connection "Upgrade";proxy_set_header X-Real-IP $remote_addr;proxy_read_timeout 600s;}location ~ ^/V1.0/(.*) {rewrite /(.*)$ /org/$1 break; proxy_pass http://192.168.1.130:8082;proxy_set_header Host $proxy_host; }        }
  1. 创建一个hpa,提高可用行(这个在这里不用看)
[root@master xiongfei]# cat nginx-hpa.yaml 
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:name: pc-hpanamespace: dev
spec:minReplicas: 1  #最小pod数量maxReplicas: 10 #最大pod数量targetCPUUtilizationPercentage: 10 # CPU使用率指标scaleTargetRef:   # 指定要控制的nginx信息apiVersion:  apps/v1kind: Deploymentname: nginx-deploy  # 控制器的名字
  1. 创建一个pod 实例验证一下
[root@master xiongfei]# cat nginx-service-deployment.yaml 
apiVersion: v1
kind: Service
metadata:labels:app: nginx-servicename: nginx-service   namespace: dev
spec:ports:- name: account-nginxport: 80protocol: TCPtargetPort: 80nodePort: 30013- name: org-nginxport: 8081protocol: TCPtargetPort: 8081nodePort: 30014selector:app: nginx-pod1type: NodePort---
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: nginx-deployname: nginx-deploynamespace: dev
spec:replicas: 1selector:matchLabels:app: nginx-pod1strategy:type: RollingUpdatetemplate:metadata:labels:app: nginx-pod1namespace: devspec:containers:- image: nginx:1.17.1name: nginxports:- containerPort: 80protocol: TCP- containerPort: 8081protocol: TCPresources:limits:cpu: "1" requests:cpu: "500m"volumeMounts:- name: nginx-configmountPath: /etc/nginx/conf.d/readOnly: true- name: nginx-htmlmountPath: /usr/share/nginx/html/readOnly: false              # - name: nginx-html2#   mountPath: /usr/share/nginx/html/app-vue2#   readOnly: falsevolumes:- name: nginx-configconfigMap:name: nginx-configmap # 指定configmap 的名字- name: nginx-htmlpersistentVolumeClaim:claimName: pvc-nginx # 指定pvc 的名字readOnly: false
  1. 查看pv pvc 之间的绑定状态
[root@master ~]# kubectl get pv,pvc  -n dev  
NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM           STORAGECLASS   REASON   AGE
persistentvolume/pv-nginx                                   5Gi        RWX            Retain           Bound    dev/pvc-nginx                           2d6hNAME                              STATUS   VOLUME     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/pvc-nginx   Bound    pv-nginx   5Gi        RWX                           2d6h
  1. 创建一个pod 实例验证一下
    在这里插入图片描述
以上的这种演示方式是通过手动的情况下创建的

通过StorageClass 动态创建pv,pvc

在这里插入图片描述

  1. 创建 nfs provisioner (nfs 配置器)
[root@master k8s-StorageClass]# cat deployment.yaml 
kind: Deployment
apiVersion: apps/v1
metadata:name: nfs-client-provisioner  # 我们这里存储后端使用的是 nfs,那么我们就需要使用到一个 nfs-client 的自动配置程序,我们也叫它 Provisioner(制备器),这个程序使用我们已经配置好的 nfs 服务器,来自动创建持久卷,也就是自动帮我们创建 PV。namespace: kube-system
spec:replicas: 2strategy:type: Recreateselector:matchLabels:app: nfs-client-provisionertemplate:metadata:labels:app: nfs-client-provisionerspec:serviceAccountName: nfs-client-provisioneraffinity:podAntiAffinity:preferredDuringSchedulingIgnoredDuringExecution:- weight: 100podAffinityTerm:topologyKey: kubernetes.io/hostnamelabelSelector:matchLabels:app: nfs-client-provisioner# nodeAffinity:# requiredDuringSchedulingIgnoredDuringExecution:# nodeSelectorTerms:# - matchExpressions:# - key: dedicated# operator: In# values:# - "cmp"containers:- name: nfs-client-provisionerimage: quay.io/external_storage/nfs-client-provisioner:v3.1.0-k8s1.11volumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: nfs-client-provisioner- name: NFS_SERVERvalue: 192.168.1.90- name: NFS_PATHvalue: /root/data/sc-datavolumes:- name: nfs-client-rootnfs:server: 192.168.1.90path: /root/data/sc-data
  1. 创建rbac 资源的授权策略集合
[root@master k8s-StorageClass]# cat rabc.yaml 
kind: ServiceAccount
apiVersion: v1
metadata:name: nfs-client-provisionernamespace: kube-system
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: nfs-client-provisioner-runner
rules:- apiGroups: [""]resources: ["persistentvolumes"]verbs: ["get", "list", "watch", "create", "delete"]- apiGroups: [""]resources: ["persistentvolumeclaims"]verbs: ["get", "list", "watch", "update"]- apiGroups: ["storage.k8s.io"]resources: ["storageclasses"]verbs: ["get", "list", "watch"]- apiGroups: [""]resources: ["events"]verbs: ["create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: run-nfs-client-provisioner
subjects:- kind: ServiceAccountname: nfs-client-provisionernamespace: kube-system
roleRef:kind: ClusterRolename: nfs-client-provisioner-runnerapiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:namespace: kube-systemname: leader-locking-nfs-client-provisioner
rules:- apiGroups: [""]resources: ["endpoints"]verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:namespace: kube-systemname: leader-locking-nfs-client-provisioner
subjects:- kind: ServiceAccountname: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: kube-system
roleRef:kind: Rolename: leader-locking-nfs-client-provisionerapiGroup: rbac.authorization.k8s.io
  1. 创建storageclass
[root@master k8s-StorageClass]# cat storageclass.yaml 
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"nfs"},"provisioner":"nfs-client-provisioner","reclaimPolicy":"Delete"}storageclass.beta.kubernetes.io/is-default-class: "true"storageclass.kubernetes.io/is-default-class: "true"name: nfs
provisioner: nfs-client-provisioner
parameters:archiveOnDelete: "true"  ## 删除pv的时候,pv的内容是否要备份, 默认是true, 删除 pod  pvc 之后 nfs 目录下的 文件会以 archived-default-nginx-pvc-bcf313fa-a121-4833-8f74-2a255bdb7fcc 这样方式呈现,数据还在
reclaimPolicy: Retain  #有两种选择, Delete;Retain是保留文件
#reclaimPolicy: Retain #有两种选择, Delete;Retain是保留文件, 当删除pvc 时,pv 资源不会被立即回收,而是保留着,管理员可以手动对pv 进行清理,重用等操作,当 PVC 被删除时,PV 资源也会被删除
1. 第一种情况
parameters:archiveOnDelete: "true" 
reclaimPolicy: delete文件会以arch... 命名,数据还在,新创立的pod,不会引用之前数据目录里的数据
2. 第二种情况
parameters:archiveOnDelete: "false" 
reclaimPolicy: deletenfs 目录下的数据 会被全部删除3. **第三种情况**
parameters:archiveOnDelete: "false"  # 默认是 true
reclaimPolicy: Retain   当回收策略改为Retain时, 删除pod时候, pvc  pv  在删除时, nfs 文件不会被清楚,还是以defatult 这样的形势存在,当再次创建pod,会引用之前的数据 
5. 第四种情况
parameters:archiveOnDelete: "true" 
reclaimPolicy: Retain数据目录下的 pvc的名字不变 还是以default 这样命名,新创建的pod ,不会引用之前留存的数据,pv的状态会变为Released 
  1. 创建一个测试pod
[root@master k8s-StorageClass]# cat test-nginx-pvc.yaml 
apiVersion: v1
kind: Pod
metadata:name: nginx
spec:containers:- name: nginximage: nginx:latestports:- containerPort: 80volumeMounts:- name: wwwmountPath: /usr/share/nginx/htmlvolumes:- name: wwwpersistentVolumeClaim:claimName: nginx  # 这里写上pvc的名字 
---
# 创建一个pvc,通过 sc 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: nginx
spec:storageClassName: "nfs"  #  指定storageclass 类的名字 accessModes:- ReadWriteManyresources:requests:storage: 5Gi

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

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

相关文章

运营商三要素验证原理,这篇文章就够了!

引言 运营商三要素验证 API 是一种基于手机号码、身份证号码和姓名等三种信息的验证服务,主要用于验证用户身份信息的真实性和一致性,以及查询手机号码所属的运营商信息。 运营商三要素 API 的验证原理 1. 身份验证的原理 身份信息验证是运营商三要素…

系统安全分析与设计

目录 第五章、系统安全分析与设计1、信息系统安全属性2、对称加密技术与非对称加密技术3、信息摘要4、数字签名5、数字信封与PGP6、网络安全6.1、各个网络层次的安全保障6.2、网络威胁与攻击6.3、防火墙 第五章、系统安全分析与设计 1、信息系统安全属性 安全属性 保密性&…

JavaScript实现求1-100之间不能被3整除的数之和,求100以内偶数的和的两个程序代码

以下为实现求1-100之间不能被3整除数之和求100以内偶数的和的两个程序代码和运行截图 目录 前言 一、实现输入两个数比较两个数的大小 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 二、求100以内偶数的和 2.1 运行流程及思想 2.2 代码段 2.3…

北峰通信,用专业打造“全方位、立体化”应急通信保障体系

最近热映的电影《惊天救援》里,杜江饰演的消防员韩凯,在一次化工园区发生爆炸后,他作为消防救援站里的通信员,第一时间奔赴重灾区,及时将第一现场的情况传到了后方指挥部。 众所周知,通讯系统是生命线系统的…

685页40万字某省市场监管智慧应用一体化项目(word可编辑)

1.2.3.1 数字XX公共能力建设现状 1.2.3.1.1 数字XX通用基础应用平台现状 通用基础应用平台提供具有共性特征的跨部门、跨层级业务应用,与本项目有关的平台包括某省网上办事大厅、某省政务服务 APP 统一平台(X政通 APP)、某省公共信用信息平…

rk3568 修改开机logo

rk3568 修改开机显示logo Android 显示 logo 的作用是为了标识应用程序或设备的品牌和身份。在应用程序中,logo 可以帮助用户快速识别应用程序,并与其他应用程序区分开来。在设备中,logo 可以帮助用户识别设备的品牌和型号,以及与…

python操作集合

# 集合 l{1,2,1} print(l) sset(range(5)) print(s)# 判断in 或 not in print(5 not in l) # 集合元素新增操作 l.add(4) l.update(1,3,6) print(l) l.update((1,3,5)) l.update([4,4,6]) # 删除集合元素 l.remove(2) l.discard(2) # 无目的的删除 自己不带参数 l.pop() l.cl…

AutoCV第七课:ML基础

目录 ML基础前言1. 复习sqrt函数2. 线性回归预测房价2.1 问题分析2.2 代码实现2.3 总结 个人总结 ML基础 前言 手写AI推出的全新保姆级从零手写自动驾驶CV课程,链接。记录下个人学习笔记,仅供自己参考。 本次课程主要学习复习 sqrt 函数和线性回归预测房…

【C++】-const对象及成员函数之类和对象中篇完结(中)

💖作者:小树苗渴望变成参天大树 ❤️‍🩹作者宣言:认真写好每一篇博客 💨作者gitee:gitee 💞作者专栏:C语言,数据结构初阶,Linux,C 文章目录 前言一、案例的引入二、const对象和成员函数三、取地…

【2023 · CANN训练营第一季】应用开发深入讲解——第三章应用调试

学习资源 日志参考文档 应用开发FAQ 日志主要用于记录系统的运行过程及异常信息,帮助快速定位系统运行过程中出现的问题以及开发过程中的程序调试问题。 日志分为如下两大类: 系统类日志:系统运行产生的日志。主要包括: Contro…

【跟着陈七一起学C语言】今天总结:函数、数组、指针之间的关系

友情链接:专栏地址 知识总结顺序参考C Primer Plus(第六版)和谭浩强老师的C程序设计(第五版)等,内容以书中为标准,同时参考其它各类书籍以及优质文章,以至减少知识点上的错误&#x…

数智无限|东土科技科东软件5月活动预告

这个5月,东土科技&科东软件将携带自主研发的国产操作系统Intewell、智能控制通用工具软件MaVIEW、边缘通用控制器NewPre、基于TSN技术的智能化工业网络硬件、数字工厂智能产线一站式解决方案,以及面向智能工厂的离散控制、流程控制、运动控制、机器人…

第十四届蓝桥杯大赛软件赛省赛(Java 大学A组)

蓝桥杯 2023年省赛真题 Java 大学A组 试题 A: 特殊日期  试题 B: 与或异或 把填空挂上跟大伙对对答案,先把C/C B组的做了。 试题 A: 特殊日期 本题总分:5 分 【问题描述】 记一个日期为 y y \small yy yy 年 m m \small mm mm 月 d d \small dd dd 日…

Cron表达式X分钟执行一次的设计缺陷。SQL JOIN的设计缺陷。在线Cron表达式网站的缺陷。Spring 定时任务的年问题。

Cron Cron表达式 定时任务计划任务 Chronological英 /ˌkrɒnəˈlɒdʒɪk(ə)l/adj. 按发生时间顺序排列的;(年龄)按时间计算的1. 月 周设计精妙吗? 学习 0/5 * * * * ? * 秒 分 时 日 月 周 年1. 年一般省略。为&#xf…

Vue-弹层显示样式

弹层显示样式1 1.先将左侧样式写 <template><div classhome-category><ul class"menu"><li v-for"i in 10" :key"i"><RouterLink to"/">居家</RouterLink><RouterLink to"/">洗…

入门级的家用洗地机怎么样?入门级洗地机推荐

洗地机的功能有很多&#xff0c;比如除菌、洗地机清洁地面的确是一把好手。但是&#xff01;清洁完之后还要手动清洗洗地机&#xff0c;是一件麻烦事啊&#xff01;现在市面上大部分洗地机都有自清洁这个功能&#xff0c;但是很多洗地机的自清洁并不算真正的自清洁&#xff0c;…

6.其他函数

1.时间日期类 -- current_date() 返回当前日期 -- date_add(date, n) 返回从date开始n天之后的日期 -- date_sub(date, n) 返回从date开始n天之前的日期 -- datediff(date1, date2) 返回date1-date2的日期差 -- year(date) 返回…

创新指南|5大策略让创新业务扩张最大避免“增长痛苦”

公司在开发和孵化新业务计划方面进行了大量投资&#xff0c;但很少有公司遵循严格的途径来扩大新业务规模。虽然80%的公司声称构思和孵化新企业&#xff0c;但只有16%的公司成功扩大了规模。典型案例是百思买在许多失败倒闭的扩大新业务取得了成功。它经历了建立新业务所需的3个…

EC6108V9/V9C-Hi3798MV100-当贝纯净桌面-卡刷固件包

EC6108V9&#xff0f;V9C-Hi3798MV100-当贝纯净桌面-卡刷固件包-内有教程 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&#xff1b; 4、大量精简内置的没用的软…

第1章计算机系统漫游

文章目录 1、信息就是位上下文2、程序被其他程序翻译成不同的格式3、了解编译系统如何工作的益处4、处理器读并解释储存在存储器中的指令4.1 系统的硬件组成4.2 执行 hello 程序 5、高速缓存6、形成层次结构的存储设备7、操作系统管理硬件7.1 进程7.2 线程7.3 虚拟存储器7.4 文…