使用helm安装nfs-subdir-external-provisioner实现动态创建存储
存储组件
nfs-subdir-external-provisioner是一个存储资源自动调配器,它可用将现有的 NFS 服务器通过持久卷声明来支持Kubernetes持久卷的动态分配。此组件是对nfs-client-provisioner的扩展,nfs-client-provisioner已经不提供更新,且nfs-client-provisioner的Github仓库已经迁移到nfs-subdir-external-provisioner的仓库。nfs-subdir-external-provisioner官方Github地址
k8s版本:v1.23.1
准备工作:
- 搭建好
NFS服务; - 安装好
helm;
使用helm安装:
使用命令行进行安装:
#添加helm源
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner #创建个namespace(可选,主要是为了查看资源方便)
kubectl create ns nfs-sc-default #使用helm安装(10.1.129.86为NFS地址,/data/nfs-data为共享的目录)
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set storageClass.name=nfs-sc-default #指定sc的名字
--set nfs.server=10.1.129.86 \ #指定nfs地址
--set nfs.path=/data/nfs-data \ #指定nfs的共享目录
--set storageClass.defaultClass=true \ #指定为默认sc
-n nfs-sc-default #指定命名空间 #查看创建的sc
kubectl get sc
使用
values.yaml进行安装:#下载chart
helm pull nfs-subdir-external-provisioner/nfs-subdir-external-provisioner #解压后可以看到values.yaml
cat values.yaml | egrep -v '#|^$' ###########
replicaCount: 1
strategyType: Recreate
image:
repository: k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner
tag: v4.0.2
pullPolicy: IfNotPresent
imagePullSecrets: []
nfs:
server: 10.1.129.86 #指定nfs地址
path: /data/nfs-data #指定nfs的共享目录
mountOptions:
volumeName: nfs-subdir-external-provisioner-root
reclaimPolicy: Retain
storageClass:
create: true
defaultClass: true #指定为默认sc
name: nfs-sc-default #指定sc的名字
allowVolumeExpansion: true
reclaimPolicy: Delete
archiveOnDelete: true
onDelete:
pathPattern:
accessModes: ReadWriteOnce
annotations: {}
leaderElection:
enabled: true
rbac:
create: true
podSecurityPolicy:
enabled: false
podAnnotations: {}
podSecurityContext: {}
securityContext: {}
serviceAccount:
create: true
annotations: {}
name:
resources: {}
nodeSelector: {}
tolerations: []
affinity: {}
labels: {}
########### #就修改了上面4处参数后使用values.yaml文件进行安装
helm install nfs-subdir-external-provisioner \
nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
-f values.yaml \
-n nfs-sc-default #查看创建的sc
kubectl get sc
测试:
创建
pvc测试:先创建个
test-pvc.yaml,在这个yaml文件里我们没有特意指定使用哪个sc,是因为之前创建的sc是默认的sc,如果没有指定默认sc,需要在这个文件里指定使用哪个sc。cat test-pvc.yaml ##########
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-pvc
# storageClassName: nfs-sc-default #指定sc名字,如果之前设定nfs-sc-default为默认sc可不用写这行指定
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Mi
########## #创建pvc
kubectl apply -f test-pvc.yaml -n nfs-sc-default #查看pvc
kubectl get pvc -n nfs-sc-default
查看
pv,如图第二个为sc创建的pv,名字为随机,并已经与test-pvc绑定了:
创建
pod测试:创建
test-pod.yaml文件,在这个yaml文件里我们只指定了busybox文件创建了个SUCCESS文件,绑定的volume里指定的是之前创建的test-pvc。cat test-pod.yaml #########
kind: Pod
apiVersion: v1
metadata:
name: test-pod
spec:
containers:
- name: test-pod
image: busybox:latest
command:
- "/bin/sh"
args:
- "-c"
- "touch /mnt/SUCCESS && exit 0 || exit 1"
volumeMounts:
- name: nfs-pvc
mountPath: "/mnt"
restartPolicy: "Never"
volumes:
- name: nfs-pvc
persistentVolumeClaim:
claimName: test-pvc
######### #创建测试pod
kubectl apply -f test-pod.yaml -n nfs-sc-default #查看pod已经显示创建成功了
kubectl get pod -n nfs-sc-default
查看
NFS目录里创建的文件:
可以看见
SUCCESS文件创建成功,并且可以看出命名目录的规则为namespace名称-pvc名称-pv名称,PV名称是随机字符串,所以 每次只要不删除PVC,那么Kubernetes中的与存储绑定将不会丢失,要是删除PVC也就意味着删除了绑定的文件夹,下次就算重新创建相同名称的PVC,生成的文件夹名称也不会一致,因为PV名是随机生成的字符串,而文件夹命名又跟PV有关,所以删除PVC需谨慎。删除相关测试的资源:
kubectl delete -f test-pod.yaml -n nfs-sc-default
kubectl delete -f test-pvc.yaml -n nfs-sc-default
使用helm安装nfs-subdir-external-provisioner实现动态创建存储的更多相关文章
- Helm 安装Kafka
helm镜像库配置 helm repo add stable http://mirror.azure.cn/kubernetes/charts helm repo add incubator http ...
- 使用helm安装jenkin和gitlab
一.使用服务介绍 存储: 阿里云NAS k8s网络插件: calico k8s版本: 1.15.2 二.helm安装 https://www.cnblogs.com/zhangb8042/p/1020 ...
- Linux下安装nfs服务器
1. 安装nfs服务 $sudo apt-get install nfs-kernel-server portmap 2. 在配置文件/etc/exports中添加以下内容/home/jxhui/nf ...
- CentOS7 安装NFS SSH免密码登陆
配置5台虚拟机 ip为192.168.1.160 - 164,使用160作为共享服务器 使用yum安装nfs 以及rpcbind,有很多文章介绍,这里不再赘述 一.启动服务 1.启动rpcbind s ...
- Linux centos 7 安装NFS服务
NFS服务简介:NFS是Network File System的缩写,即网络文件系统.客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下.---主要功能指的是共享文件 为什么要安装NF ...
- kubernetes包管理工具Helm安装
helm官方建议使用tls,首先生成证书. openssl genrsa -out ca.key.pem openssl req -key ca.key.pem -new -x509 -days -s ...
- kubernetes(k8s) helm安装kafka、zookeeper
通过helm在k8s上部署kafka.zookeeper 通过helm方法安装 k8s上安装kafka,可以使用helm,将kafka作为一个应用安装.当然这首先要你的k8s支持使用helm安装.he ...
- centos7安装NFS
在服务器上安装nfs服务,并将该服务器的/data目录进行共享. 服务端配置 安装nfs组件,并检查安装状态 yum install nfs-utils rpcbindrpm -qa nfs-util ...
- Ubuntu下安装nfs服务器
安装 NFS 软件包在 ubuntu 终端输入下面命令安装 NFS 服务器:vmuser@Linux-host: ~$ sudo apt-get install nfs-kernel-server # ...
随机推荐
- 在3G移动通信网络信令流程里获取用户电话号的一种方法(中国电信cdma2000)
首先这些关于电话号的的寻找都是在分组域进行的 然后是首先在rp接口的A11接口寻找,没有看到,于是到pi接口,研究radius协议 发现在协议里也不含有与用户电话号码mdn相关的元素 然后偶遇一篇文档 ...
- nginx模块lnmp架构
目录 一:关于lnmp架构 二:目录索引模块 1.目录索引模块内容 1.开启目录索引(创建模块文件) 2.测试 3.重启nginx 4.配置域名解析DNS 5.网址测试 二:目录索引(格式化文件大小) ...
- Flutter 多引擎支持 PlatformView 以及线程合并解决方案
作者:字节移动技术-李皓骅 摘要 本文介绍了 Flutter 多引擎下,使用 PlatformView 场景时不能绕开的一个线程合并问题,以及它最终的解决方案.最终 Pull Request 已经 m ...
- yum更新,docker安装
备份 cd /etc/yum.repos.d/ mkdir repo_bak mv *.repo repo_bak/ 安装wget(若已安装了wget,则跳过此步 wget -V yum instal ...
- 如何在pyqt中使用 QStyle 重绘 QSlider
前言 使用 qss 可以很方便地改变 QSlider 的样式,但是有些情况下 qss 无法满足我们的需求.比如下图所示样式: 如果直接使用 qss 将 handle 的内圆设置为透明背景,会看到 ha ...
- Lesson7——Pandas 使用自定义函数
pandas目录 简介 如果想要应用自定义的函数,或者把其他库中的函数应用到 Pandas 对象中,有以下三种方法: 操作整个 DataFrame 的函数:pipe() 操作行或者列的函数:apply ...
- VsCode配置C/C++开发环境
Visual Studio Code(VS Code)是基于 Electron 开发,支持 Windows.Linux 和 macOS 操作系统.内置了对JavaScript,TypeScript和N ...
- Redis哨兵模式高可用解决方案
一.序言 Redis高可用有两种模式:哨兵模式和集群模式,本文基于哨兵模式搭建一主两从三哨兵Redis高可用服务. 1.目标与收获 一主两从三哨兵Redis服务,基本能够满足中小型项目的高可用要求,使 ...
- Log4j2日志技术总结
前言 现在流行是SLF4j和Log4j2组合的日志技术,但为了日志技术归类,故前因后果都将做一下介绍. 市场上流行的日志框架 JUL java util logging Java开发团队开发,Jdk原 ...
- golang 获取当月最后一天日期
now := time.Now() year, month, day := now.Date() //fmt.Println(year, month, day) //2021 September 1 ...