Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 小程序 Arthas JVM AQS juc Kubernetes Docker DevOps


Kubernetes 数据存储 NFS

Kubernetes 大约 1597 字

概念

HostPath可以解决数据持久化的问题,但是一旦Node节点故障了,Pod如果转移到了别的节点,又会出现问题了,此时需要准备单独的网络存储系统,比较常用的用NFSCIFS

NFS是一个网络文件存储系统,可以搭建一台NFS服务器,然后将Pod中的存储直接连接到NFS系统上。

特点

无论Pod在节点上怎么转移,只要NodeNFS的对接没问题,数据就可以成功访问。

安装 NFS

第一步

CentOS使用yum安装

yum install nfs-utils -y

第二步

创建共享目录

mkdir -p /root/data/nfs

第三步

将共享目录以读写权限暴露给特定网段中的所有主机

vim /etc/exports

添加内容

/root/data/nfs 192.168.0.0/24(rw,no_root_squash)

第四步

启动NFS服务

systemctl start nfs

第五步

其他Node节点(Linux服务器)只需要安装nfs即可,无需启动服务。

yum install nfs-utils -y

示例 yml

volume-nfs.yml

apiVersion: v1
kind: Pod
metadata:
  name: volume-nfs
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
    ports:
    - containerPort: 80
    volumeMounts:
    - name: logs-volume
      mountPath: /var/log/nginx
  - name: busybox
    image: busybox:1.30
    command: ["/bin/sh","-c","tail -f /logs/access.log"] 
    volumeMounts:
    - name: logs-volume
      mountPath: /logs
  volumes:
  - name: logs-volume
    nfs:
      server: 192.168.0.100  # NFS 服务器地址
      path: /root/data/nfs # 共享文件路径

nfsserver说明:

/etc/exports配置的是网络地址(最后一个Bit0),而server配置的是服务器的IP地址。

查看 Pod

kubectl get pods -n dev -o wide

输出:

[root@localhost ~]# kubectl get pods -n dev -o wide
NAME         READY   STATUS    RESTARTS   AGE   IP           NODE                    NOMINATED NODE   READINESS GATES
volume-nfs   2/2     Running   0          27s   10.42.0.46   localhost.localdomain   <none>           <none>

查看共享目录

ll /root/data/nfs/

输出:

[root@localhost nfs]# ll /root/data/nfs/
total 0
-rw-r--r--. 1 root root 0 Feb  4 09:43 access.log
-rw-r--r--. 1 root root 0 Feb  4 09:43 error.log
阅读 405 · 发布于 2022-03-22

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批