Skip to content
This repository has been archived by the owner on Apr 9, 2024. It is now read-only.

RP:published/20230605.1 ⭐️⭐️ How to Setup Dynamic NFS Provisioning in Kubernetes Cluster.md #29792

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,45 +3,47 @@
[#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-16043-1.html"

如何在 Kubernetes 集群中设置动态 NFS 配置
======

在这篇文章中,我们将向你展示如何在 Kubernetes (k8s) 集群中设置动态 nfs 配置。
![][0]

Kubernetes 中的动态 NFS 存储配置允许你按需自动为 Kubernetes 应用配置和管理 NFS(网络文件系统)卷。它允许创建持久卷 (PV) 和持久卷声明 (PVC),而无需手动干预或预配置存储。
> 在这篇文章中,我们将向你展示如何在 Kubernetes(k8s)集群中设置动态 NFS 配置。

Kubernetes 中的动态 NFS 存储配置允许你按需自动为 Kubernetes 应用配置和管理 NFS(网络文件系统)卷。它允许创建持久卷(PV)和持久卷声明(PVC),而无需手动干预或预配置存储。

NFS 配置程序负责动态创建 PV 并将其绑定到 PVC。它与 NFS 服务器交互,为每个 PVC 创建目录或卷。

##### 先决条件
### 先决条件

- 预装 Kubernetes 集群
- 具有 Kubernetes 集群管理员权限的普通用户
- 互联网连接

事不宜迟,让我们深入探讨步骤
事不宜迟,让我们深入探讨步骤

### 步骤 1) 准备 NFS 服务器
### 步骤 1准备 NFS 服务器

就我而言,我将在 Kubernetes 主节点 (Ubuntu 22.04) 上安装 NFS 服务器。登录主节点并运行以下命令:
就我而言,我将在 Kubernetes 主节点Ubuntu 22.04上安装 NFS 服务器。登录主节点并运行以下命令:

```
$ sudo apt update
$ sudo apt install nfs-kernel-server -y
```

创建以下文件夹并使用 nfs 共享它:
创建以下文件夹并使用 NFS 共享它:

```
$ sudo mkdir /opt/dynamic-storage
$ sudo chown -R nobody:nogroup /opt/dynamic-storage
$ sudo chmod 777 /opt/dynamic-storage
```

在 /etc/exports 文件中添加以下条目:
`/etc/exports` 文件中添加以下条目:

```
$ sudo vi /etc/exports
Expand All @@ -62,39 +64,39 @@ $ sudo systemctl status nfs-kernel-server

![NFS-Service-Status-Kubernetes-Master-Ubuntu][1]

在工作节点上,使用以下 apt 命令安装 nfs-common 包。
在工作节点上,使用以下 `apt` 命令安装 `nfs-common` 包。

```
$ sudo apt install nfs-common -y
```

### 步骤 2) 安装和配置 NFS 客户端配置程序
### 步骤 2安装和配置 NFS 客户端配置程序

NFS 子目录外部配置程序在 Kubernetes 集群中部署 NFS 客户端配置程序。配置程序负责动态创建和管理由 NFS 存储支持的持久卷 (PV) 和持久卷声明 (PVC)
NFS 子目录外部配置程序在 Kubernetes 集群中部署 NFS 客户端配置程序。配置程序负责动态创建和管理由 NFS 存储支持的持久卷(PV)和持久卷声明PVC

因此,要安装 NFS 子目录外部配置程序,首先使用以下命令集安装 helm:
因此,要安装 NFS 子目录外部配置程序,首先使用以下命令集安装 `helm`

```
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
```

运行以下命令来启用 helm 仓库:
运行以下命令来启用 `helm` 仓库:

```
$ helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner
```

使用以下 helm 命令部署配置程序:
使用以下 `helm` 命令部署配置程序:

```
$ helm install -n nfs-provisioning --create-namespace nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --set nfs.server=192.168.1.139 --set nfs.path=/opt/dynamic-storage
```

![helm-install-nfs-provisioning-kubernetes-cluster][2]

上面的 helm 命令将自动创建 nfs-provisioning 命名空间,并安装 nfs 配置程序 pod/部署、名称为 (nfs-client) 的存储类,并将创建所需的 rbac。
上面的 `helm` 命令将自动创建 `nfs-provisioning` 命名空间,并安装 NFS 配置程序的容器荚/部署、名称为 `nfs-client` 的存储类,并将创建所需的 rbac。

```
$ kubectl get all -n nfs-provisioning
Expand All @@ -103,11 +105,11 @@ $ kubectl get sc -n nfs-provisioning

![kubectl-get-all-nfs-provisioning-kubernetes-cluster][3]

完美,上面的输出确认了配置程序 Pod 和存储类已成功创建
完美,上面的输出确认了配置程序容器荚和存储类已成功创建

### 步骤 3) 创建持久卷声明 (PVC)
### 步骤 3创建持久卷声明PVC

让我们创建 PVC 来为你的 Pod 或部署请求存储。PVC 将从 StorageClass(nfs-client请求特定数量的存储
让我们创建 PVC 来为你的容器荚或部署请求存储。PVC 将从存储类 `nfs-client` 请求特定数量的存储

```
$ vi demo-pvc.yml
Expand All @@ -129,7 +131,7 @@ spec:

![PVC-Yaml-Dynamic-NFS-Kubernetes][4]

运行以下 kubectl 命令以使用上面创建的 yml 文件创建 pvc
运行以下 `kubectl` 命令以使用上面创建的 YML 文件创建 PVC

```
$ kubectl create -f demo-pvc.yml
Expand All @@ -143,11 +145,11 @@ $ kubectl get pv,pvc -n nfs-provisioning

![Verify-pv-pvc-dynamic-nfs-kubernetes-cluster][5]

太好了,上面的输出表明 pvpvc 创建成功。
太好了,上面的输出表明 PVPVC 创建成功。

### 步骤 4) 测试并验证动态 NFS 配置
### 步骤 4测试并验证动态 NFS 配置

为了测试和验证动态 nfs 配置,请使用以下 yml 文件启动测试 Pod
为了测试和验证动态 NFS 配置,请使用以下 YML 文件启动测试容器荚

```
$ vi test-pod.yml
Expand Down Expand Up @@ -177,31 +179,31 @@ spec:

![Pod-Yml-Dynamic-NFS-kubernetes][6]

使用以下 kubectl 命令部署 pod
使用以下 `kubectl` 命令部署容器荚

```
$ kubectl create -f test-pod.yml
```

验证 test-pod 的状态:
验证 `test-pod` 的状态:

```
$ kubectl get pods -n nfs-provisioning
```

![Verify-Test-Pod-Using-NFS-Volume-Kubernetes][7]

登录到 pod 并验证 nfs 卷是否已安装。
登录到容器荚并验证 NFS 卷是否已安装。

```
$ kubectl exec -it test-pod -n nfs-provisioning /bin/sh
```

![Access-Dynamic-NFS-Inside-Pod-Kubernetes][8]

太棒了,上面 Pod 的输出确认了动态 NFS 卷已安装且可访问。
太棒了,上面容器荚的输出确认了动态 NFS 卷已安装且可访问。

最后删除 pod 和 PVC,查看 pv 是否自动删除。
最后删除容器荚和 PVC,查看 PV 是否自动删除。

```
$ kubectl delete -f test-pod.yml
Expand All @@ -213,14 +215,16 @@ $ kubectl get pv,pvc -n nfs-provisioning

这就是这篇文章的全部内容,希望对你有所帮助。请随时在下面的评论部分发表你的疑问和反馈。

*(题图:MJ/75dae36f-ff68-4c63-81e8-281e2c239356)*

--------------------------------------------------------------------------------

via: https://www.linuxtechi.com/dynamic-nfs-provisioning-kubernetes/

作者:[Pradeep Kumar][a]
选题:[lkxed][b]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

Expand All @@ -235,3 +239,4 @@ via: https://www.linuxtechi.com/dynamic-nfs-provisioning-kubernetes/
[7]: https://www.linuxtechi.com/wp-content/uploads/2023/06/Verify-Test-Pod-Using-NFS-Volume-Kubernetes.png
[8]: https://www.linuxtechi.com/wp-content/uploads/2023/06/Access-Dynamic-NFS-Inside-Pod-Kubernetes.png
[9]: https://www.linuxtechi.com/wp-content/uploads/2023/06/Delete-Pod-PVC-Dynamic-NFS.png
[0]: https://img.linux.net.cn/data/attachment/album/202307/28/222834togtruhoeuh3gtr1.jpg
Loading