Redian新闻
>
如何在 Kubernetes 集群中设置动态 NFS 配置 | Linux 中国

如何在 Kubernetes 集群中设置动态 NFS 配置 | Linux 中国

科技
 
导读:在这篇文章中,我们将向你展示如何在 Kubernetes(k8s)集群中设置动态 NFS 配置。   
本文字数:3644,阅读时长大约:4分钟

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

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

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

先决条件

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

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

步骤 1、准备 NFS 服务器

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

  1. $ sudo apt update
  2. $ sudo apt install nfs-kernel-server -y

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

  1. $ sudo mkdir /opt/dynamic-storage
  2. $ sudo chown -R nobody:nogroup /opt/dynamic-storage
  3. $ sudo chmod 777 /opt/dynamic-storage

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

  1. $ sudo vi /etc/exports
  2. /opt/dynamic-storage 192.168.1.0/24(rw,sync,no_subtree_check)

保存并关闭文件。

注意:不要忘记更改导出文件中适合你的部署的网络。

要使上述更改生效,请运行:

  1. $ sudo exportfs -a
  2. $ sudo systemctl restart nfs-kernel-server
  3. $ sudo systemctl status nfs-kernel-server

NFS-Service-Status-Kubernetes-Master-Ubuntu

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

  1. $ sudo apt install nfs-common -y

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

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

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

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

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

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

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

  1. $ 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

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

  1. $ kubectl get all -n nfs-provisioning
  2. $ kubectl get sc -n nfs-provisioning

kubectl-get-all-nfs-provisioning-kubernetes-cluster

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

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

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

  1. $ vi demo-pvc.yml
  2. kind: PersistentVolumeClaim
  3. apiVersion: v1
  4. metadata:
  5. name: demo-claim
  6. namespace: nfs-provisioning
  7. spec:
  8. storageClassName: nfs-client
  9. accessModes:
  10. - ReadWriteMany
  11. resources:
  12. requests:
  13. storage: 10Mi

保存并关闭文件。

PVC-Yaml-Dynamic-NFS-Kubernetes

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

  1. $ kubectl create -f demo-pvc.yml

验证 PVC 和 PV 是否创建:

  1. $ kubectl get pv,pvc -n nfs-provisioning

Verify-pv-pvc-dynamic-nfs-kubernetes-cluster

太好了,上面的输出表明 PV 和 PVC 创建成功。

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

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

  1. $ vi test-pod.yml
  2. kind: Pod
  3. apiVersion: v1
  4. metadata:
  5. name: test-pod
  6. namespace: nfs-provisioning
  7. spec:
  8. containers:
  9. - name: test-pod
  10. image: busybox:latest
  11. command:
  12. - "/bin/sh"
  13. args:
  14. - "-c"
  15. - "touch /mnt/SUCCESS && sleep 600"
  16. volumeMounts:
  17. - name: nfs-pvc
  18. mountPath: "/mnt"
  19. restartPolicy: "Never"
  20. volumes:
  21. - name: nfs-pvc
  22. persistentVolumeClaim:
  23. claimName: demo-claim

Pod-Yml-Dynamic-NFS-kubernetes

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

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

验证 test-pod 的状态:

  1. $ kubectl get pods -n nfs-provisioning

Verify-Test-Pod-Using-NFS-Volume-Kubernetes

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

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

Access-Dynamic-NFS-Inside-Pod-Kubernetes

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

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

  1. $ kubectl delete -f test-pod.yml
  2. $ kubectl delete -f demo-pvc.yml
  3. $ kubectl get pv,pvc -n nfs-provisioning

Delete-Pod-PVC-Dynamic-NFS

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

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


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

作者:Pradeep Kumar 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者 :geekpi
💎💎💎💎
翻译: 1979.5 篇
|
贡献: 3563 天
2013-10-25
2023-07-28
https://linux.cn/lctt/geekpi
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
如何在 Linux 中查找映射到 VxVM 磁盘的 SAN LUN | Linux 中国Kubernetes DevSecOps 实践“互联网”要写成the Internet还是the internet?是茶还是咖啡?这些 kubernetes 的安全机制你都了解吗?免费下载:技术人必看企业级Kubernetes战略方针ChatGPT 团队是如何使用Kubernetes的973页kubernetes学习笔记,全是K8S核心干货,限时分享3天如何在 Linux 主机和 KVM 中的 Windows 客户机之间共享文件夹 | Linux 中国如何在 Linux 中注释 PDF | Linux 中国排障有用 | Docker 容器和 Kubernetes 退出码中文指南终于见到了科罗拉多大峡谷分步指南:安装和访问 Kubernetes 仪表板 | Linux 中国苏格兰奥克尼岛(Orkney Islands),沿途农家Calm-Down Corners是什么?如何在家创建一个舒适的Calm-Down Corners?快来获取灵感吧!比 Ubuntu 更好?Ubuntu 爱好者的 11 款最佳 Linux 发行版 | Linux 中国如何在 Linux 中扩展 Veritas 文件系统(VxFS) | Linux 中国通过例子介绍如何从零开发 Kubernetes OperatorKubernetes 资源请求和限制的最佳实践如何利用 Kubernetes 实现应用零宕机图解几种常见 Kubernetes Pod 驱逐场景Pinterest 使用 Kubernetes 和 Helix 构建下一代异步计算平台 Pacer如何在 Kubernetes 集群上安装 Ansible AWX | Linux 中国Bcachefs已被合并到Linux-Next,Linux 6.7有望引入KSOC实验室发布首批Kubernetes材料清单(KBOMs)973页kubernetes学习笔记,核心干货分享如何在 Ubuntu 和其他 Linux 发行版中查看 AVIF 图像 | Linux 中国使用开源工具监控 Kubernetes 云成本 | Linux 中国集市里的《文化采风》Kubernetes 网络排错终极指南在 Kubernetes 集群中,如何正确选择工作节点资源大小如何快速查看 Kubernetes Pod 崩溃前的日志深入理解Kubernetes Pod调试如何在 Linux 中映射 SAN LUN、磁盘和文件系统 | Linux 中国宾州斯通利花园(Stoneleigh garden),春色美景
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。