Kubernetes单节点环境安装hostpath-provisioner
开发和运维人员在进行开发或测试部署的时候,常常使用的是单节点的Kubernetes环境。了解Kubernetes的都知道,在Kubernetes中,Pod一旦重启,Pod中的数据就会丢失,因此需要持久化存储的支持。虽然Kubernetes的PV支持多种存储驱动方式,网上大部分推荐使用的是NFS,但避免不了要先搭建一个NFS Server,而且集群只有一个节点,这种方式不仅麻烦而且低效。这个时候hostPath方式就成了最佳的选择,开销最小效率最高,并且可以结合StorageClass来实现其动态供给。
hostpath-provisioner介绍
hostpath-provisioner是一种在单节点Kubernetes集群中动态供应Kubernetes HostPath Volumes的工具。基于kubernetes-sigs/sig-storage-lib-external-provisioner/hostpath-provisioner示例项目。提供官方Helm Chart,部署十分方便。
- Github官网:https://github.com/rimusz/hostpath-provisioner
- artifacthub地址:https://artifacthub.io/packages/helm/rimusz/hostpath-provisioner
兼容矩阵
| hostpath-provisioner version | chart version | Helm2 | Helm3 |
|---|---|---|---|
| v0.2.4 | 0.2.12 | × | √ |
| v0.2.3 | 0.2.11 | √ | √ |
| v0.2.3 | 0.2.10 | √ | √ |
| v0.2.3 | 0.2.9 | √ | √ |
| v0.2.3 | 0.2.8 | √ | √ |
| v0.2.3 | 0.2.7 | √ | √ |
| v0.2.2 | 0.2.6 | √ | √ |
| v0.2.2 | 0.2.5 | √ | √ |
| v0.2.2 | 0.2.4 | √ | √ |
| v0.2.1 | 0.2.3 | √ | √ |
| v0.2.1 | 0.2.2 | √ | √ |
| v0.2.0 | 0.2.0 | √ | √ |
安装hostpath-provisioner
Helm2
说明
以chart version 0.2.11版本为例,0.2.12开始不再支持Helm2
添加Helm仓库
1 | helm repo add rimusz https://charts.rimusz.net |
创建hostpath-provisioner命令空间(命名空间可自定义),并将hostpath-provisioner安装在此命名空间中
1 | kubectl create namespace hostpath-provisioner |
安装hostpath-provisioner
- release名称为
my-hostpath-provisioner(release名称可自定义) --set storageClass.defaultClass=false指定是否将hostpath作为默认StorageClass- 0.2.11及其之前版本不支持直接传递参数设置自定义目录作为主机路径挂载点,默认为
/mnt/hostpath,若需修改,需先执行helm fetch rimusz/hostpath-provisioner --version 0.2.11 --untar拉取chart,然后修改values.yaml中的NodeHostPath为指定目录,最后执行helm install --name my-hostpath-provisioner -f values.yaml . --namespace hostpath-provisioner --set storageClass.defaultClass=false安装 - 更多参数可按版本到https://artifacthub.io/packages/helm/rimusz/hostpath-provisioner查看
1 | helm install --name my-hostpath-provisioner rimusz/hostpath-provisioner --version 0.2.11 --namespace hostpath-provisioner --set storageClass.defaultClass=false |
查看pod是否处于Running状态
1 | kubectl get pod -n hostpath-provisioner |
Helm3
说明
以chart version 0.2.12版本为例
添加Helm仓库
1 | helm repo add rimusz https://charts.rimusz.net |
创建hostpath-provisioner命令空间(命名空间可自定义),并将hostpath-provisioner安装在此命名空间中
1 | kubectl create namespace hostpath-provisioner |
安装hostpath-provisioner
- release名称为
my-hostpath-provisioner(release名称可自定义) --set storageClass.defaultClass=false指定是否将hostpath作为默认StorageClass--set nodeHostPath=/mnt/hostpath设置一个自定义目录作为主机路径挂载点,默认为/mnt/hostpath- 更多参数可按版本到https://artifacthub.io/packages/helm/rimusz/hostpath-provisioner查看
1 | helm install my-hostpath-provisioner rimusz/hostpath-provisioner --version 0.2.12 --namespace hostpath-provisioner --set storageClass.defaultClass=false --set nodeHostPath=/mnt/hostpath |
查看pod是否处于Running状态
1 | kubectl get pod -n hostpath-provisioner |
验证hostpath-provisioner
执行如下YAML,测试创建HostPath PVC
1 | cat > /root/hostpath-pvc.yaml << EOF |
删除hostpath-provisioner
Helm2
1 | helm delete --purge my-hostpath-provisioner |
Helm3
1 | helm delete my-hostpath-provisioner --namespace hostpath-provisioner |