Kubernetes (十三) 存储——持久卷-动静态分配

2024-01-21

一. 简介

二. NFS持久化存储步骤(静态分配)

1. 集群外主机用上次nfsdata共享目录中创建用来测试的pv(1~3)目录 用来对三个静态pv

2. 创建pv的应用文件 vim pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
name: pv1
spec:
capacity:                     #定义资源大小
storage: 5Gi             #这里5Gi
volumeMode: Filesystem
accessModes:            #访问方式
- ReadWriteOnce       #只能被单个节点以读写的方式映射
persistentVolumeReclaimPolicy: Recycle  #回收策略
storageClassName: nfs
nfs:
path: /nfsdata/pv1          #nfs服务器输出地址
server: 192.168.72.171

---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv2
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany    #可以被多个节点以读写的方式映射
persistentVolumeReclaimPolicy: Recycle
storageClassName: nfs
nfs:
path: /nfsdata/pv2
server: 192.168.72.171

---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv3
spec:
capacity:
storage: 15Gi
volumeMode: Filesystem
accessModes:
- ReadOnlyMany          #可以被多个节点以只读方式映射
persistentVolumeReclaimPolicy: Recycle
storageClassName: nfs
nfs:
path: /nfsdata/pv3
server: 192.168.72.171

3. 创建pvc的应用文件 vim pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc1                       #起的名字
spec:
storageClassName: nfs     #存储类型
accessModes:
- ReadWriteOnce         #匹配的访问模式
resources:
requests:                     #资源要求
storage: 1Gi             #上面条件都要满足才可匹配上

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc2
spec:
storageClassName: nfs
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc3
spec:
storageClassName: nfs
accessModes:
- ReadOnlyMany
resources:
requests:
storage: 15Gi

4. pod中如何使用卷  先创建pod应用文件 vim pod.yaml

apiVersion: v1
kind: Pod
metadata:
name: test-pd                          #起的pod名字
spec:
containers:
- image: nginx
name: nginx
volumeMounts:
- mountPath: /usr/share/nginx/html  #声明挂接的目录
name: vol1
volumes:
- name: vol1
persistentVolumeClaim:
claimName: pvc1

5. 在nfs输出目录中创建测试页    然后访问pod #注意使用的主机

调用的路径:pod->pvc->pv(pod请求pvc,pvc找pv)

6. 回收资源,需要按顺序回收: pod -> pvc -> pv

pv的回收需要拉取镜像,提前在node节点导入镜像:k8s.gcr.io/debian-base:v2.0.0

kubectl delete  pod test-pd

kubectl delete  -f pvc.yaml

kubectl delete -f pv.yaml

三.StorageClass (动态分配)

官方地址  https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

1. 上传镜像到私有仓库

2. 创建编辑文件 vim deploy.yaml

apiVersion: v1

kind: Namespace

metadata:

labels:

kubernetes.io/metadata.name: nfs-client-provisioner

name: nfs-client-provisioner

---

apiVersion: v1

kind: ServiceAccount

metadata:

name: nfs-client-provisioner

namespace: nfs-client-provisioner

---

kind: ClusterRole

apiVersion: rbac.authorization.k8s.io/v1

metadata:

name: nfs-client-provisioner-runner

rules:

- apiGroups: [""]

resources: ["nodes"]

verbs: ["get", "list", "watch"]

- 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: ServiceAccount

name: nfs-client-provisioner

namespace: nfs-client-provisioner

roleRef:

kind: ClusterRole

name: nfs-client-provisioner-runner

apiGroup: rbac.authorization.k8s.io

---

kind: Role

apiVersion: rbac.authorization.k8s.io/v1

metadata:

name: leader-locking-nfs-client-provisioner

namespace: nfs-client-provisioner

rules:

- apiGroups: [""]

resources: ["endpoints"]

verbs: ["get", "list", "watch", "create", "update", "patch"]

---

kind: RoleBinding

apiVersion: rbac.authorization.k8s.io/v1

metadata:

name: leader-locking-nfs-client-provisioner

namespace: nfs-client-provisioner

subjects:

- kind: ServiceAccount

name: nfs-client-provisioner

namespace: nfs-client-provisioner

roleRef:

kind: Role

name: leader-locking-nfs-client-provisioner

apiGroup: rbac.authorization.k8s.io

---

apiVersion: apps/v1

kind: Deployment

metadata:

name: nfs-client-provisioner

labels:

app: nfs-client-provisioner

namespace: nfs-client-provisioner

spec:

replicas: 1

strategy:

type: Recreate

selector:

matchLabels:

app: nfs-client-provisioner

template:

metadata:

labels:

app: nfs-client-provisioner

spec:

serviceAccountName: nfs-client-provisioner

containers:

- name: nfs-client-provisioner

image: sig-storage/nfs-subdir-external-provisioner:v4.0.2

volumeMounts:

- name: nfs-client-root

mountPath: /persistentvolumes

env:

- name: PROVISIONER_NAME

value: k8s-sigs.io/nfs-subdir-external-provisioner

- name: NFS_SERVER

value: 192.168.56.171

- name: NFS_PATH

value: /nfsdata

volumes:

- name: nfs-client-root

nfs:

server: 192.168.56.171

path: /nfsdata

---

apiVersion: storage.k8s.io/v1

kind: StorageClass

metadata:

name: nfs-client

annotations:

storageclass.kubernetes.io/is-default-class: "true"

provisioner: k8s-sigs.io/nfs-subdir-external-provisioner

parameters:

archiveOnDelete: "false" ##删除时不打包备份,删除PVC是会自动删除PV

3. 创建pvc vim pvc.yaml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: pvc1

spec:

#storageClassName: nfs-client

accessModes:

- ReadWriteOnce

resources:

requests:

storage: 10Gi

---

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: pvc2

spec:

#storageClassName: nfs-client

accessModes:

- ReadWriteMany

resources:

requests:

storage: 20Gi

---

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: pvc3

spec:

#storageClassName: nfs-client

accessModes:

- ReadOnlyMany

resources:

requests:

storage: 30Gi

动态自动创建pv

4. 查看到nfs输出目录自动创建 #注意主机
5. 创建测试页
6. 创建pod文件文件 并进行访问 vim pod.yaml

apiVersion: v1

kind: Pod

metadata:

name: test-pd

spec:

containers:

- image: nginx

name: nginx

volumeMounts:

- mountPath: /usr/share/nginx/html

name: vol1

volumes:

- name: vol1

persistentVolumeClaim:

claimName: pvc1

---

apiVersion: v1

kind: Pod

metadata:

name: test-pd-2

spec:

containers:

- image: nginx

name: nginx

volumeMounts:

- mountPath: /usr/share/nginx/html

name: vol1

volumes:

- name: vol1

persistentVolumeClaim:

claimName: pvc2

---

apiVersion: v1

kind: Pod

metadata:

name: test-pd-3

spec:

containers:

- image: nginx

name: nginx

volumeMounts:

- mountPath: /usr/share/nginx/html

name: vol1

volumes:

- name: vol1

persistentVolumeClaim:

claimName: pvc3

7. 删除pod pvc

动态创建的pv,回收时自动删除,nfs输出目录也会被删除。

kubectl delete  -f pod.yaml

kubectl delete  -f pvc.yaml

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes (十三) 存储——持久卷-动静态分配 的相关文章

随机推荐

  • Kubernetes (十一) 存储——Secret配置管理

    一 简介 从文件创建 echo n admin gt username txt echo n westos gt password txt kubectl create secret generic db user pass from fi
  • AI在保护环境、应对气候变化中的作用

    对于AI生命周期数据领域的全球领导者而言 暂时搁置我们惯常的AI见解和AI生命周期数据内容产出 来认识诸如世界地球日这样的自然环境类活动日 似乎是个奇怪的事情 我们想要知道 数据是否真的会影响我们的地球环境 简而言之 是 确实如此 但作为一
  • 数据加密保障数据安全

    一 目标 1 1 预研需求 数据加密是安全领域中常用的安全措施 它们的主要作用是保护数据的机密性和完整性 以防止未经授权的访问 窃取 篡改或泄漏敏感信息 数据传输加密 保护敏感数据在传输过程中的安全 当数据通过网络传输时 它们可能会经过多个
  • AI在广告中的应用——预测性定位和调整

    营销人员的工作就是在恰当的时间将适合的产品呈现在消费者面前 从而增加他们购买的可能性 随着时间的推移 营销人员能够深入挖掘越来越精准的客户细分市场 他们不仅具备了实现上述目标的能力 而且这种能力还在呈指数级提升 在AI技术帮助下 现在的营销
  • Kubernetes (十二) 存储——Volumes配置管理

    一 卷的概念 官方地址 卷 Kubernetes https v1 24 docs kubernetes io zh cn docs concepts storage volumes 二 卷的类型及使用 emptyDir卷 1 创建编辑文件
  • JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置

    JVM优化之 Xss Xms Xmx Xmn 参数设置 XmnXmsXmxXss有什么区别 Xmn Xms Xmx Xss都是JVM对内存的配置参数 我们可以根据不同需要区修改这些参数 以达到运行程序的最好效果 Xms 堆内存的初始大小 默
  • 图片编辑软件有哪些好用的?这几款快收藏吧

    你有没有过这样的经历 精心拍摄了一组照片 却发现有些角度不对 光线不够好 或者想要给图片加上一些特别的滤镜效果来达到心目中的样子 这时 你就需要一款合适的图片编辑软件了 但是 市面上的图片编辑软件琳琅满目 哪一款才是适合自己的呢 别担心 今
  • 30天精通Nodejs--第二十一天:express-依赖注入

    目录 引言 Express中的模块化实践 依赖注入 什么是依赖注入 Express中实现依赖注入 结语 引言 在构建大型且复杂的Node js Express应用程序时 良好的架构设计至关重要 模块化编程可以帮助我们把代码分解为可复用 易维
  • 面试官问,如何在十亿级别用户中检查用户名是否存在?

    面试官问 如何在十亿级别用户中检查用户名是否存在 前言 不知道大家有没有留意过 在使用一些app注册的时候 提示你用户名已经被占用了 需要更换一个 这是如何实现的呢 你可能想这不是很简单吗 去数据库里查一下有没有不就行了吗 那么假如用户数量
  • 数据库 | 面试官:一次到底插入多少条数据合适啊?.....面试连环炮

    数据库 面试官 一次到底插入多少条数据合适啊 面试连环炮 数据库插入操作的基础知识 插入数据是数据库操作中的基础 但是 我们程序员将面临随之而来的问题 如何快速有效地插入数据 并保持数据库 性能 当你向数据库中插入数据时 这些数据直接存储到
  • PCL点云库使用

    一 下载PCL文件 下载地址 如1 12 0版本 PCL 1 12 0 AllInOne msvc2019 win64 exe 安装该文件可为后续编译源码提供必要的第三方库 pcl 1 12 0 pdb msvc2019 win64 zip
  • 面试官随便问几个问题就知道你究竟做没做过微信支付宝支付

    面试官随便问几个问题就知道你究竟做没做过微信支付宝支付 你知道直连模式和服务商模式吗 网上的课程一般给你演示的都是直连模式 而企业中有不少是申请成为了服务商 因为里面有佣金提成 我粗俗地解释 直连模式 就是说你是一个会做生意的老板 自己会搞
  • Redis分布式锁--java实现

    文章目录 Redis分布式锁 方案 SETNX EXPIRE 基本原理 比较好的实现 会产生四个问题 几种解决原子性的方案
  • 储存设备的进化与发展:从传统到现代的飞跃

    随着科技的飞速发展 储存设备作为信息时代的基石 经历了翻天覆地的变化 从最早的机械硬盘到现代的固态硬盘和云存储 储存设备的进化与发展不仅提升了数据存储的速度和容量 还极大地改变了我们的工作和生活方式 本文将带您回顾储存设备的进化历程 并探讨
  • 语音翻译软件app哪家好?帮你和外国人无碍交流的软件分享

    在和外国人交流的时候发现听不懂怎么办 还能怎么办 谁让我们的英语没学好呢 这种时候还是得寻求其他人的帮助 不过万一要是在只有你一个人的情况下又怎么办呢 俗话说 求人不如求己 那还是得在自己手机里时刻准备好能够翻译英语的工具呀 今天就给大家分
  • vue实现 marquee(走马灯)

    样式 代码 div class marquee prompt div class list prompt span class prompt item span div div data return listPrompt xxx xxxx
  • 30天精通Nodejs--第二十天:express-操作mysql

    目录 前言 安装依赖并配置MySQL连接 安装mysql2库 配置连接信息 在Express应用中使用MySQL 结合Express路由实现CRUD操作 整合到主应用 结语 前言 在Node js中使用Expre
  • Oracle EBS AP发票导入 API Rejection List 第一部分

    Oracle EBS AP发票导入 API Rejection List 第一部分 The report lists the reason the invoice could not be imported and prints a bri
  • SpringBoot中整合MybatisPlus快速实现Mysql增删改查和条件构造器

    场景 Mybatis Plus 简称MP 是一个Mybatis的增强工具 只是在Mybatis的基础上做了增强却不做改变 MyBatis Plus支持所有Mybatis原生的特性 所以引入Mybatis Plus不会对现有的Mybatis构
  • Kubernetes (十三) 存储——持久卷-动静态分配

    一 简介 二 NFS持久化存储步骤 静态分配 1 集群外主机用上次nfsdata共享目录中创建用来测试的pv 1 3 目录 用来对三个静态pv 2 创建pv的应用文件 vim pv yaml apiVersion v1 kind Persi