• 关于博主
  • 网站监控
  • SSO
  • ESXI
  • 文章归档
  • test
  • Linux 命令练习场
文章
文章用户商铺文档圈子
logo2024
userData
userData

{{userData.name}}已认证

文章

评论

关注

粉丝

¥{{role.user_data.money}}
{{role.user_data.credit}}
您已完成今天任务的
  • 私信列表所有往来私信

  • 财富管理余额、积分管理

  • 账户注销自助注销账户

    NEW
  • 任务中心每日任务

    NEW
  • 成为会员购买付费会员

  • 认证服务申请认证

    NEW
  • 小黑屋关进小黑屋的人

    NEW
  • 我的订单查看我的订单

  • 我的设置编辑个人资料

  • 进入后台管理

logo2024
×
  • 首页
  • 交流
  • 动态
  • shop
  • k8s文档
  • Ops工具
    • 群晖NAS
    • 虚拟化
    • Linux
    • Nginx
    • Tomcat
    • PHP
    • Shell
    • SaltStack
    • Jumpserver
    • Shadowsocks
    • WordPress
  • 云原生
    • APISIX
    • Ceph
    • istio
    • Kubernetes
    • Openstack
    • Docker
    • Jenkins
    • ELKStack
  • 监控
    • Prometheus
    • Zabbix
    • Nagios
    • Grafana
  • 数据库
    • Clickhouse
    • MySQL
    • Oracle
    • Redis
d299a1f295d6a

Kubernetes 1.29使用群辉dsm7 NFS存储创建StorageClass持久化

  • Docker Kubernetes 群晖
  • 25年7月2日
  • 编辑
14e0fbc3111261 1 avatar
新闻联播老司机运维小弟
释放双眼,带上耳机,听听看~!

文章目录

Toggle
  • 群辉配置
  • VMware vSphere ESXI8.0一键安装黑群晖DSM7教程
  • Kubernetes 存储卷创建

目前单机创建NFS服务器高可用数据不好实现,使用CEPH数据存储又可能比较麻烦,还需要额外维护单独CEPH集群,本次采用群辉NFS存储进行模拟测试

群辉配置

登录群辉,需要搭建可以参考下面的文章

VMware vSphere ESXI8.0一键安装黑群晖DSM7教程

14e0fbc3111261 1 avatar新闻联播老司机
  • 22年12月4日
  • 喜欢:0
  • 浏览:4.1k

Kubernetes 1.29使用群辉dsm7 NFS存储创建StorageClass持久化

开启NFS Server服务
Kubernetes 1.29使用群辉dsm7 NFS存储创建StorageClass持久化

创建共享目录,打开控制面板
Kubernetes 1.29使用群辉dsm7 NFS存储创建StorageClass持久化

创建共享目录
Kubernetes 1.29使用群辉dsm7 NFS存储创建StorageClass持久化

设置目录名称nfs-k8s

Kubernetes 1.29使用群辉dsm7 NFS存储创建StorageClass持久化

按照下面的配置,设置NFS Server权限

Kubernetes 1.29使用群辉dsm7 NFS存储创建StorageClass持久化

开启File Station 匿名用户访问权限

Kubernetes 1.29使用群辉dsm7 NFS存储创建StorageClass持久化

挂载目录可以在共享目录中看到
Kubernetes 1.29使用群辉dsm7 NFS存储创建StorageClass持久化

Kubernetes 存储卷创建

  • 所有k8s节点安装nfs (我这里以Ubuntu为例)
sudo apt update
sudo apt install nfs-kernel-server

执行showmount测试nfs挂载情况

root@k8s-master-01:~# showmount -e 192.168.21.27
Export list for 192.168.21.27:
/volume1/nfs-k8s *
root@k8s-master-01:~#

接下来为nfs创建rbac权限

apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: default
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: nfs-client-provisioner-runner
rules:
  - apiGroups: [""]
    resources: ["nodes"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["persistentvolumes"]
    verbs: ["get", "list", "watch", "create", "delete"]
  - apiGroups: [""]
    resources: ["persistentvolumeclaims"]
    verbs: ["get", "list", "watch", "update"]
  - apiGroups: ["storage.k8s.io"]
    resources: ["storageclasses"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["events"]
    verbs: ["create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-nfs-client-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    # replace with namespace where provisioner is deployed
    namespace: default
roleRef:
  kind: ClusterRole
  name: nfs-client-provisioner-runner
  apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: default
rules:
  - apiGroups: [""]
    resources: ["endpoints"]
    verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: default
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    # replace with namespace where provisioner is deployed
    namespace: default
roleRef:
  kind: Role
  name: leader-locking-nfs-client-provisioner
  apiGroup: rbac.authorization.k8s.io

创建Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-client-provisioner
  labels:
    app: nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: default
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nfs-client-provisioner
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccountName: nfs-client-provisioner
      containers:
        - name: nfs-client-provisioner
          image: dockerproxy.frps.fun/dyrnq/nfs-subdir-external-provisioner:v4.0.1
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: k8s-sigs.io/nfs-subdir-external-provisioner
            - name: NFS_SERVER
              value: 192.168.21.27
            - name: NFS_PATH
              value: /volume1/nfs-k8s
      volumes:
        - name: nfs-client-root
          nfs:
            server: 192.168.21.27
            path: /volume1/nfs-k8s

我这里提供下面镜像
dockerproxy.frps.fun/dyrnq/nfs-subdir-external-provisioner:v4.0.1
官方默认镜像地址为dyrnq/nfs-subdir-external-provisioner:v4.0.1

这里是创建StorageClass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: dsm7-nfs-client
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner # or choose another name, must match deployment's env PROVISIONER_NAME'
parameters:
  archiveOnDelete: "false"

查看所有已创建的资源

root@k8s-master-01:~/nfs# kubectl get pod,sa,sc
NAME                                          READY   STATUS    RESTARTS   AGE
pod/nfs-client-provisioner-594f79d67b-wvx5s   1/1     Running   0          23m

NAME                                    SECRETS   AGE
serviceaccount/default                  0         22h
serviceaccount/nfs-client-provisioner   0         26m

NAME                                          PROVISIONER                                   RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
storageclass.storage.k8s.io/dsm7-nfs-client   k8s-sigs.io/nfs-subdir-external-provisioner   Delete          Immediate           false                  13s

将dsm7-nfs-client设置为默认storageclass

root@k8s-master-01:~/nfs# kubectl patch storageclass dsm7-nfs-client  -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}'

查看设置default状态

root@k8s-master-01:~/nfs# kubectl get sc
NAME                        PROVISIONER                                   RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
dsm7-nfs-client (default)   k8s-sigs.io/nfs-subdir-external-provisioner   Delete          Immediate           false                  5m

测试pvc如下

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  namespace: default
  name: abcdocker-test-pvc
  labels: {}
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi
  storageClassName: dsm7-nfs-client

这里提示已绑定,代表PVC验证完毕

root@k8s-master-01:~/nfs# kubectl apply -f test-pvc.yaml
persistentvolumeclaim/abcdocker-test-pvc created
root@k8s-master-01:~/nfs# kubectl get pvc
NAME                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      VOLUMEATTRIBUTESCLASS   AGE
abcdocker-test-pvc   Bound    pvc-ba81924e-3d04-4173-9abf-d17972f6fa5b   10Gi       RWX            dsm7-nfs-client   <unset>                 5s

相关文章:

  1. Centos7 使用Docker安装Plex媒体播放器
  2. Kubernetes容器运行时弃用Docker转型Containerd
  3. Rancher 2.6 Docker安装并设置内网穿透外网访问
  4. Kind快速部署Kubernetes多集群

给TA打赏
共{{data.count}}人
人已打赏
  • user
DockerKubernetesnfs群晖
Kubernetes

使用Sealos 命令行工具快速构建Kubernetes

2025-7-2 0:02:12

ContainerdDocker

Docker集成Containerd实现容器管理

2025-7-3 7:51:56

猜你喜欢

Centos7 使用Docker安装Plex媒体播放器

22年5月4日15.4k

Kubernetes容器运行时弃用Docker转型Containerd

22年5月15日43.6k

Rancher 2.6 Docker安装并设置内网穿透外网访问

22年6月19日03.3k

Kind快速部署Kubernetes多集群

23年11月22日11.3k
1 条回复 A文章作者 M管理员

您必须登录或注册以后才能发表评论

data
commentData
  1. Kubernetes 部署Elasticsearch为WordPress提供文章搜索 | i4T Guest
    1月17日

    […] https://i4t.com/25654.html […]

欢迎投稿

                       

关于作者

14e0fbc3111261 1 avatar

新闻联播老司机

lv6 SVIP+

文章

471

评论

1169

关注

0

粉丝

190
[文章] OpenClaw在Macmini下网络HTTPS_Proxy代理配置
[文章] 容器化部署OpenClaw授权View权限对Kubernetes集群进行巡检故障排查
[文章] 初试VictoriaLogs集群采集Kubernetes Pod日志
[文章] Kubernetes 部署Elasticsearch为WordPress提供文章搜索
Ta的全部动态

浏览历史

清空
  • item
暂无浏览历史

标签云

APISIX (5) Authentik (5) ceph (26) ClickHouse (3) Containerd (12) Dell R730 (8) DNS (5) Docker (35) docker-compose (4) Elasticsearch (5) ELKStack (9) frp (3) Grafana (18) Harbor (5) ingress (3) jenkins (11) jumpserver (3) kafka (19) Kubernetes (106) KVM (4) linux (37) Linux命令大全 (278) Mac (4) MySQL (27) nfs (3) NGINX (40) OpenStack (7) oracle (3) other (4) php (5) Prometheus (24) Python (7) rabbitmq (4) redis (13) shell (8) svn (3) tomcat (3) Ubuntu (12) VMware ESXI (13) windows (8) WordPress (6) zabbix (27) 故障排查 (51) 漏洞 (3) 群晖 (34)
❯
vip youce

解锁会员权限

开通会员

解锁海量优质VIP资源

立刻开通

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
  • getQrcode(

    扫码打开当前页

  • abcdocker

    运维博客公众号

返回顶部
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分

今日签到

连续签到

  • item.user

    {{item.credit}}
  • item.user

    连续{{item.count}}天
查看所有
我的优惠劵
  • ¥优惠劵
    使用时效:无法使用
    使用时效:

    之前

    使用时效:永久有效
    优惠劵ID:
    ×
    限制以下商品使用: 限制以下商品分类使用: 不限制使用:
    it
    [{{ct.name}}]
    所有商品和商品类型均可使用
没有优惠劵可用!

购物车
  • item
    ×
    删除
购物车空空如也!

清空购物车 前往结算
您有新的私信
没有新私信
  • item.from

写新私信 查看全部

关于我们

logo2024

abcdocker是分享DevOps、自动化运维、Kubernetes、Docker等运维优秀实践经验个人博客,由系统运维、脚本编程、devops以及资源分享等分类组成,涵盖了DevOps、自动化运维

联系与合作

  • youhui

    优惠活动

    查看本站的最新优惠

  • kuozhan

    配件商城

    在线购买XX配件

  • wendang

    法律声明

    本站的法律声明

  • gongdan

    在线工单

    提交在线工单

  • jianyi

    建议提交

    查看本主题的文档

随机文章

没有任何内容

我们的团队

  • 新闻联播老司机
Copyright © 2026 i4T
・京ICP备16034840号-2
查询 40 次,耗时 1.2719 秒
首页专题认证
搜索菜单我的