【Kubernetes实战】(二十一)数据存储 NFS

目录

一、环境安装

二、NFS介绍

三、NFS使用准备

四、NFS使用实例

1 创建NFS

2 查看 Pod

3 查看共享目录


一、环境安装

参考

【Kubernetes实战】(四)MiniKube方式部署

【Kubernetes实战】(五)KubeAdm方式部署

【Kubernetes实战】(六)Kind方式部署

二、NFS介绍

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

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

特点:

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

三、NFS使用准备

1 安装NFS

yum install nfs-utils -y

2 创建共享目录

mkdir -p /root/data/nfs

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

vim /etc/exports


#添加内容
/root/data/nfs 172.30.1.0/24(rw,no_root_squash)

4 启动NFS服务

systemctl start nfs

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

yum install nfs-utils -y

四、NFS使用实例

示例 yml

vim 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: 172.30.1.100  # NFS 服务器地址
      path: /root/data/nfs # 共享文件路径

nfsserver说明:

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

1 创建NFS

kubectl create -f volume-nfs.yml

2 查看 Pod

kubectl get pods -n dev -o wide

 

3 查看共享目录

ll /root/data/nfs/

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Kubernetes 是一种用于自动化容器操作的开源平台,它可以帮助您管理和调度容器化应用程序。在 Kubernetes 中,Volume 是一种对象,用于将持久性存储附加到容器,并在容器中访问它们。本文将介绍 Kubernetes 中的 Volume,包括它的型、如何创建和使用 Volume,以及常见的 Volume 插件。 ## Volume Kubernetes 中支持多种 Volume 型,每种型都有不同的用途和功能。以下是一些常见的 Volume 型: ### emptyDir EmptyDir 是 Kubernetes 中最简单的 Volume 型之一,它是一个空目录,可以在容器之间共享数据。当 Pod 被创建时,Kubernetes 会在节点上创建一个空目录,然后将其挂载到容器中。当 Pod 被删除时,这个空目录也会被删除。EmptyDir 的主要作用是在同一 Pod 中的容器之间共享数据。 ### hostPath HostPath Volume 允许将节点上的文件或目录挂载到 Pod 中。这意味着 Pod 可以直接访问节点上的文件系统,例如 /etc、/usr 等。HostPath Volume 可以用于访问宿主机上的配置文件、数据文件等。 ### configMap 和 secret ConfigMap 和 Secret 是 Kubernetes 中用于存储配置数据和敏感数据的对象。ConfigMap 可以存储 key-value 对,而 Secret 可以存储敏感数据,例如密码、证书等。这两种 Volume 型都可以在容器中挂载,使容器可以访问其中的数据。 ### persistentVolumeClaim PersistentVolumeClaim(PVC)是 Kubernetes 中用于请求持久性存储的对象。PVC 可以用于请求某种存储型,例如 NFS、iSCSI 等,并将其挂载到容器中。PVC 可以在多个 Pod 之间共享,并可以在 Pod 被删除后保留数据。 ## 创建和使用 Volume 在 Kubernetes 中创建和使用 Volume 非常简单。以下是一个使用 EmptyDir Volume 的示例: ```yaml apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: nginx volumeMounts: - name: my-volume mountPath: /usr/share/nginx/html volumes: - name: my-volume emptyDir: {} ``` 在上面的示例中,我们定义了一个名为 my-volume 的 EmptyDir Volume,并将其挂载到容器的 /usr/share/nginx/html 目录中。这意味着容器可以在该目录中读取和写入数据。 以下是一个使用 HostPath Volume 的示例: ```yaml apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: nginx volumeMounts: - name: my-volume mountPath: /usr/share/nginx/html volumes: - name: my-volume hostPath: path: /data ``` 在上面的示例中,我们定义了一个名为 my-volume 的 HostPath Volume,并将其挂载到容器的 /usr/share/nginx/html 目录中。这意味着容器可以访问节点上的 /data 目录中的数据。 ## 常见的 Volume 插件 Kubernetes 中有许多 Volume 插件可用于连接各种持久性存储。以下是一些常见的 Volume 插件: ### NFS NFS Volume 插件允许将 NFS 共享挂载到容器中。它可以用于在多个 Pod 之间共享数据。 ### iSCSI iSCSI Volume 插件允许将 iSCSI 存储挂载到容器中。它可以用于连接 SAN 存储等。 ### AWS EBS AWS EBS Volume 插件允许将 Amazon Elastic Block Store(EBS)存储挂载到容器中。它可以用于连接 Amazon EC2 实例上的持久性存储。 ### GCE PD GCE PD Volume 插件允许将 Google Compute Engine 持久性磁盘(PD)挂载到容器中。它可以用于连接 Google Cloud Platform 上的持久性存储。 ## 总结 本文介绍了 Kubernetes 中的 Volume,包括它的型、如何创建和使用 Volume,以及常见的 Volume 插件。Volume 是 Kubernetes 中非常重要的概念之一,它可以帮助您管理和调度容器化应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

forest_long

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值