k8s中部署nfs

master 主机部署nfs
yum install -y nfs-utils

创建存放数据目录
mkdir -p /data/nfs

设置挂在路径
打开文件
vim /etc/exports
# 添加如下内容
/data/nfs *(rw,no_root_squash)

node 节点操作
yum isntall -y nfs-utils

启动nfs服务端
systemctl start nfs

yaml创建一个服务 vim nfs-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-dep1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - name: wwwroot
          mountPath: /usr/share/nginx/html
        ports:
        - containerPort: 80
      volumes:
      - name: wwwroot
        nfs:
          server: 192.168.20.110
          path: /data/nfs
    
    创建服务      
    kubectl apply -f nfs-nginx.yaml
    查看服务
    kubectl describe pod nginx-dep1
    
    查看pod 
    kubectl get pods
    
    进入pod查看
    kubectl exec -it  bash
    

可以看到与宿主机目录数据同步

 

### 在 Kubernetes 集群中部署 NFS 服务器 #### 准备工作 为了在 Kubernetes 中成功部署 NFS 服务器,需先确认集群环境已准备好并能够正常运行 Pod 和 Service 资源。此外,还需确保目标机器上已经安装了 NFS 服务。 #### 安装 NFS 服务 对于 Linux 发行版而言,通常可以通过包管理器来完成 NFS 的安装: ```bash sudo apt-get update && sudo apt-get install nfs-kernel-server -y # 对于基于 Debian/Ubuntu 的系统 # 或者 sudo yum install nfs-utils -y # 对于基于 RedHat/CentOS 的系统 ``` #### 创建共享目录 创建一个用于共享的数据目录,并赋予适当权限以便后续挂载使用: ```bash sudo mkdir -p /data/nfs-share sudo chown nobody:nogroup /data/nfs-share/ sudo chmod 777 /data/nfs-share/ ``` #### 编写 Export 文件 编辑 `/etc/exports` 文件以定义哪些路径应该被导出以及允许哪个 IP 地址范围内的主机访问这些资源[^3]: ```text /data/nfs-share *(rw,sync,no_subtree_check,no_root_squash) ``` 这里 `*` 表示任何客户端都可以连接到此 NFS 导出;实际生产环境中建议指定具体的网络段或IP地址代替星号。 #### 启动 NFS 服务 保存更改后的配置文件后,重启 NFS 相关的服务使其生效,并设置为随系统启动自动开启: ```bash sudo systemctl enable rpcbind sudo systemctl start rpcbind sudo exportfs -a sudo systemctl restart nfs-kernel-server sudo systemctl enable nfs-kernel-server ``` 此时,在 K8S 外部的 NFS Server 已经搭建完毕。接下来需要做的是让 K8S 内的应用程序能够通过 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 来利用这个外部存储设备。 #### 设置 PV/PVC 访问 NFS 存储 为了让 Kubernetes 应用能方便地存取上述建立好的 NFS Share, 可以为其设定对应的 Persistent Volume(PV),并通过 Persistent Volume Claim(PVC) 进行绑定。下面是一个简单的例子说明如何操作: ##### 定义 PersistentVolume YAML 文件 (`pv-nfs.yaml`) ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: pv-nfs spec: capacity: storage: 5Gi accessModes: - ReadWriteMany nfs: path: "/data/nfs-share" server: "<Your_NFS_Server_IP>" ``` ##### 定义 PersistentVolumeClaim YAML 文件(`pvc-nfs.yaml`) ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nfs spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi ``` 应用以上两个资源配置至 Kubernetes 集群内即可实现内部容器对 NFS Storage 的读写支持。 #### 测试 NFS 挂载情况 最后可以在任意节点执行如下命令验证是否可以正确挂载远程 NFS 卷: ```bash kubectl apply -f pv-nfs.yaml kubectl apply -f pvc-nfs.yaml kubectl get pv,pvc ``` 如果一切顺利的话,则可以看到新创建出来的 PVC 成功 Bound 到之前定义的那个 PV 上去了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值