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

十三、kubernetes 1.29 之 存储 storageClass存储类、补全命令

一、storageClass存储类

                        一种动态申请存储的机制

1、概念

        StorageClass 是一种资源对象,用于定义持久卷(Persistent Volumes)的动态供给(Dynamic Provisioning)策略。StorageClass 允许管理员定义不同类型的存储,并指定如何动态创建持久卷以供应用程序使用。这使得 Kubernetes 集群中的存储管理更加灵活和自动化。

静态                                                                动态

2、nfs-client-provisioner

        nfs-client-provisioner 是一个 Kubernetes 供应商,用于动态提供由 NFS(Network File System)共享支持的持久卷。在 Kubernetes 中,持久卷是独立于 pod 存在的存储资源,可以在 pod 重新启动或重新调度时持久地存储数据。

        nfs-client-provisioner 自动化了根据需要创建持久卷的过程,通过与 NFS 服务器交互。在需要在 Kubernetes 集群中为应用程序动态分配存储而无需手动管理 NFS 共享和持久卷创建的情况下,这尤其有用。

搭建服务器上一节做过了(主节点)

# 安装 nfs 服务器
$ dnf install nfs-utils rpcbind
$ mkdir /nfs
$ chown nobody /nfs
$ /etc/exports
/nfs *(rw,sync,no_subtree_check)
$ systemctl enable nfs-server && systemctl start nfs-server
$ showmount -e 192.168.10.11

新建目录,vi /etc/exorot

 权限限制

chown -R nobody /nfsdata/share/

 重启+开机自启

systemctl restart nfs-server
systemctl enable nfs-server
systemctl enable rpcbind

 检查是否共享出来

showmount -e 192.168.125.101

 

  创建、client资源清单

# 1. Deployment:部署nfs-client-provisioner容器
kind: Deployment
apiVersion: apps/v1  # 原文档缺失,补充标准apiVersion
metadata:name: nfs-client-provisioner  # 控制器名称namespace: nfs-storageclass  # 命名空间(后续创建)
spec:replicas: 1  # 原文档缺失,补充默认副本数1,想高可用改成2selector:matchLabels:app: nfs-client-provisionerstrategy:type: Recreate  # 重建策略(更新时先删旧Pod再建新Pod)template:metadata:labels:app: nfs-client-provisionerspec:serviceAccountName: nfs-client-provisioner  # 关联服务账户containers:- name: nfs-client-provisioner# 镜像地址(国内镜像,避免国外镜像拉取失败)image: k8s.dockerproxy.com/sig-storage/nfs-subdir-external-provisioner:v4.0.2volumeMounts:- name: nfs-client-root  # 挂载卷名称mountPath: /persistentvolumes  # 容器内挂载路径(存储数据的目录)# 环境变量:配置NFS服务器信息env:- name: PROVISIONER_NAMEvalue: k8s-sigs.io/nfs-subdir-external-provisioner  # 供应者名称(需与StorageClass匹配)- name: NFS_SERVERvalue: 192.168.125.101  # NFS服务器IP(替换为实际IP)- name: NFS_PATHvalue: /nfsdata/share  # NFS服务器上的共享目录(替换为实际路径)volumes:- name: nfs-client-root  # 定义卷,关联NFS共享nfs:  # 原文档缺失“nfs”类型,补充server: 192.168.125.101  # NFS服务器IPpath: /nfsdata/share  # NFS共享目录

 创建、sc,权限授权


apiVersion: v1
kind: ServiceAccount
metadata:name: nfs-client-provisionernamespace: nfs-storageclass  
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
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"]---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: run-nfs-client-provisioner
subjects:
- kind: ServiceAccountname: nfs-client-provisionernamespace: nfs-storageclass  # 绑定指定命名空间的服务账户
roleRef:kind: ClusterRolename: nfs-client-provisioner-runnerapiGroup: rbac.authorization.k8s.io
---
# 5. Role:定义命名空间内权限(仅nfs-storageclass命名空间)
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:name: leader-locking-nfs-client-provisionernamespace: nfs-storageclass
rules:
- apiGroups: [""]resources: ["endpoints"]  # 资源类型:端点(用于 leader 选举,避免多副本冲突)verbs: ["get", "list", "watch", "create", "update", "patch"]
---
# 6. RoleBinding:将Role绑定到ServiceAccount
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: leader-locking-nfs-client-provisionernamespace: nfs-storageclass
subjects:
- kind: ServiceAccountname: nfs-client-provisionernamespace: nfs-storageclass
roleRef:kind: Rolename: leader-locking-nfs-client-provisionerapiGroup: rbac.authorization.k8s.io

 创建、存储类创建

# 7. StorageClass:定义动态存储供给策略
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-client namespace: nfs-storageclass
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner  
parameters:pathPattern: "${.PVC.namespace}/${.PVC.name}"  
reclaimPolicy: Delete 

创建、 名字空间

kubectl create ns nfs-storageclass

启动

kubectl apply -f ../19/

 二、插曲

安装,允许对选项进行补全

yum install bash-completion

编辑,

vi .bashrcsource <(kubectl completion bash)

刷新后,可以补全和查看选项了

 

http://www.dtcms.com/a/487193.html

相关文章:

  • Kotlin中的flow、stateflow、shareflow之间的区别和各自的功能
  • 一般网站建设的流程图wordpress账号和站内网
  • 复习总结最终版:Linux软件编程
  • 索泰显卡,索泰 firestorm 官方下载
  • 网站建设的主要内容包括网页框架结构有哪些
  • 公司做一个网站企业网站制作哪些公司制作
  • 青岛做外贸网站建设wordpress订阅关闭
  • 【个人成长笔记】在Ubuntu中的Linux系统安装实验室WIFI驱动安装(Driver for Linux RTL8188GU)
  • 腾讯音视频功能有哪些
  • 网站建设的流程与思路完美代码网站
  • 基于 GitLab CI/CD 与 Google Gemini 的 AI Code Review 自动化方案
  • 【Vue专题】前端JS基础Part1(含模版字符串、解构赋值、变量常量与对象)
  • 婚庆网站开发背景wordpress怎么改后台
  • 0.2、​​AI Agent 开发中 ReAct 和 MAS 的概念
  • 网站源码风险哈尔滨 门户网站
  • 那些企业网站做的漂亮怎么做免费公司网站
  • 【Go】--扩容机制
  • 网站上哪个做相片书好哈尔滨信息网租房信息
  • 电子商城官方网站做网站的需要什么资质证明
  • 外贸网站制作需求wordpress设置多语言
  • 怎么提Issue与PR
  • wordpress建站资源漂亮的网站设计
  • Flowise 任意文件读写漏洞 | CVE-2025-61913
  • 青岛网站建设平台纯静态网站
  • STM32基于can总线通信控制多个舵机/电机原理及代码
  • 图解AES密钥扩展与加密过程
  • ps如何做网站轮播图泰安企业建站公司哪里找
  • vue疑难解答
  • 【检索:Top K】12、非精准Top K检索权威指南:搜索引擎排序加速的核心技术与实战实现
  • 顺德品牌网站建设优惠做好公众号 网站建设