k8s的nfs存储外挂设置过程

 

需求:

  在k8s集群里的某个模块生成的目录文件或者更新的目录文件,存储到外面某台服务器上

1.安装nfs服务(192.168.1.2  Ubuntu 16.04)

apt-get install nfs-kernel-server nfs-common

2.配置nfs挂载目录

 

vi /etc/exports
  /data *(rw,sync,no_root_squash)

  /data:共享目录
  *:所有主机能访问
  rw:读写权限
  ro:只读
  sync:同步
  no_root_squash:不降低root的权限

 

3.重启nfs

/etc/init.d/nfs-kernel-server restart

 4.查看

showmount
showmount -e

5.另外,特别注意,开放端口,不然其他主机不能访问

tcp    111
udp    111
tcp    2049
udp    4046

 6.更新k8s模块的yaml

复制代码

apiVersion: apps/v1
kind: Deployment
metadata:
  name: newshomebg
  namespace: mod
  labels:
    app: newshomebg
spec:
  replicas: 1
  selector:
    matchLabels:
      app: newshomebg
  template:
    metadata:
      labels:
        app: newshomebg
    spec:
      containers:
      - name: newshomebg
        image: xxx
        ports:
        - containerPort: 8080
        env:
        - name: SPRING_DATASOURCE_USERNAME
          value: 'root'
        volumeMounts:
        - name: nfs-volume            #设置的名称,和下面的name要一样的
          mountPath: /home/uploads    #需要挂载的目录
          subPath: newshomebg         #卷的子目录,也就是在nfs服务目录里生成这个子目录
      volumes:
      - name: nfs-volume              #这个卷的名称,和上面的name要一样的
        nfs:                          #这里是nfs挂载
          server: 192.168.1.2         #nfs服务器的ip或者域名
          path: "/data"               #nfs服务配置的挂载目录
      imagePullSecrets:
      - name: xxx

 

  以上红色标记的就等同于命令:mount 192.168.1.2:/data/newshomebg /home/uploads

### 配置和使用 NFS 存储 在 Kubernetes 中配置和使用 NFS 存储涉及几个关键步骤。首先,需要有一个可用的 NFS 服务器来提供共享存储资源[^1]。 创建一个名为 `nfs-pv.yaml` 的持久卷定义文件如下所示: ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 5Gi accessModes: - ReadWriteMany nfs: path: /exports/data server: 192.168.0.100 ``` 此 YAML 文件描述了一个容量为 5GB 并支持多读写模式 (`ReadWriteMany`) 的持久卷 (PV),并指定了 NFS 服务器 IP 地址以及导出路径 `/exports/data`[^2]。 接着,为了使 Pod 能够请求特定大小的存储空间并与之绑定,在应用层面上还需要定义相应的持久卷声明 PVC(Persistent Volume Claim)。下面是一个简单的例子 `nfs-pvc.yaml`: ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 3Gi ``` 一旦 PV 和 PVC 创建完成之后,任何希望利用该 NFS 卷的应用程序都可以在其 pod spec 中引用这个 PVC 来挂载所需的目录结构。例如,在部署 Nginx 应用时可以通过以下方式指定要使用的存储类: ```yaml apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx-nfs name: nginx-deployment spec: replicas: 2 selector: matchLabels: app: nginx-nfs template: metadata: labels: app: nginx-nfs spec: containers: - image: nginx:latest name: nginx-container volumeMounts: - mountPath: "/usr/share/nginx/html" name: html-volume volumes: - name: html-volume persistentVolumeClaim: claimName: nfs-pvc ``` 上述配置展示了如何让两个副本实例化的 Nginx 容器能够共同访问同一个基于 NFS 提供的数据集,从而实现高可用性和数据一致性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值