Kubernetes/Helm/Helm对接外部NFS存储.md
offends 7a2f41e7d6
All checks were successful
continuous-integration/drone Build is passing
synchronization
2024-08-07 18:54:39 +08:00

130 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> 本文作者:丁辉
>
# Helm对接外部NFS存储
> **NFS subdir 外部配置程序**是一个自动配置程序它使用现有且已配置的NFS 服务器来支持通过持久卷声明动态配置 Kubernetes 持久卷。
## 部署
[Github仓库](https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/tree/master)
[官网介绍](https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/blob/master/charts/nfs-subdir-external-provisioner/README.md)
1. 添加仓库
```bash
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm repo update
```
2. 安装
```bash
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set nfs.server=127.0.0.1 \
--set nfs.path=/data
```
> 国内无法拉取到此镜像 x86 架构的我已经同步到国内了,使用此命令安装
>
> ```bash
> helm install nfs-subdir-external-provisioner \
> nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
> --set image.repository=registry.cn-hangzhou.aliyuncs.com/offends/nfs-subdir-external-provisioner \
> --set image.tag=v4.0.2 \
> --set nfs.server=127.0.0.1 \
> --set nfs.path=/data
> ```
3. 查看
```bash
kubectl get pod -l app=nfs-subdir-external-provisioner
```
4. 检查 storageclass
```bash
kubectl get sc
```
> 存在 nfs-client 则👌
## 配置 nfs-client 为默认存储类
```bash
kubectl patch storageclass nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
```
> 取消 nfs-client 为默认存储类
>
> ```bash
> kubectl patch storageclass nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
> ```
## 指定 NFS vers 版本
> 遇到一个非常难解的问题,在 centos7.9 系统版本中容器挂载使用 NFS 存储当作持久化卷,数据库这一种类型的容器无法启动,修改 vers 版本为3.0解决问题
**解决方案**
- 第一种修改 values.yaml 配置文件
```bash
vi nfs-subdir-external-provisioner/values.yaml
```
内容如下
```bash
nfs:
server:
path: /data
mountOptions:
- nfsvers=3.0
```
- 第二种添加 install 参数
```bash
--set nfs.mountOptions[0]=nfsvers=3.0
```
## 老版本部署(已废弃)
[Github仓库](https://github.com/kubernetes-retired/external-storage/tree/master/nfs-client)
1. 拉取代码
```bash
helm repo add stable https://charts.helm.sh/stable
helm repo update
```
2. 部署
```bash
helm install nfs-storageclass stable/nfs-client-provisioner --set nfs.server=127.0.0.1 --set nfs.path=/data
```
3. 修改 apiserver 参数
```bash
vi /etc/kubernetes/manifests/kube-apiserver.yaml
```
添加如下参数
```bash
- --feature-gates=RemoveSelfLink=false
```
## 卸载
```bash
helm uninstall nfs-subdir-external-provisioner
```