k8s创建部署nignx, 并挂载nfs挂载共享存储

本文介绍了如何在Kubernetes(k8s)环境中部署Nginx,通过创建Persistent Volume Claim (PVC)和Persistent Volume (PV)实现NFS挂载共享存储,解决PVC绑定问题,确保accessModes和storageClassName匹配,并详细阐述了从创建Deployment到设置Service的整个过程,最终完成Nginx服务的对外访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. nfs服务端及客户端安装

请查看我的另一篇博客:https://blog.csdn.net/weixin_44020899/article/details/107283650

2. 创建pvc和pv

过程中遇到的问题

创建pvc和pv后,发现pvc一直处于pending状态,困惑许久,发现pvc中的accessModes和pv中的不一致。所以这里要注意:

  1. storageClassName: pvc和pvc要一致。
  2. accessModes:pvc和pvc要一致。
  3. 存储大小:pvc会匹配大小相近的进行绑定。

pvc.yaml

# 创建pv
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvctest
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mytest
  nfs:
    path: /nfs
    server: 192.168.1.14
---
# 创建pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName
### 在 Kubernetes 中配置和挂载 NFS 存储 #### 1. 安装和配置 NFS 服务器 为了在 Kubernetes 中使用 NFS 存储,首先需要设置一个 NFS 服务器。以下是安装和配置 NFS 的基本步骤: - **对于 Ubuntu 或 Debian 系统**,可以运行以下命令来安装必要的软件包: ```bash apt-get update && apt-get install -y nfs-kernel-server nfs-common ``` - **对于 CentOS 或 RHEL 系统**,则需执行以下命令: ```bash yum install -y nfs-utils.x86_64 ``` 完成安装后,编辑 `/etc/exports` 文件以定义共享目录及其权限[^1]。 例如,在 `/etc/exports` 文件中添加如下内容: ``` /mnt/nfs_from_master03 10.20.2.110(rw,sync,no_root_squash) ``` 这表示将 `/mnt/nfs_from_master03` 目录共享给 IP 地址为 `10.20.2.110` 的客户端,赋予其读写权限[^1]。 最后,重启 NFS 服务使更改生效: ```bash systemctl restart nfs-kernel-server.service ``` #### 2. 创建 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 为了让 Kubernetes 使用 NFS 存储,可以通过声明 PV 和 PVC 来实现持久化存储绑定。 ##### a. 配置 PersistentVolume (PV) 下面是一个 YAML 文件示例,用于创建基于 NFS 的 PV: ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 1Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain nfs: server: <nfs-server-ip> path: "/path/on/nfs/server" ``` 其中 `<nfs-server-ip>` 是 NFS 服务器的实际 IP 地址,而 `/path/on/nfs/server` 则是之前配置好的共享路径[^3]。 ##### b. 配置 PersistentVolumeClaim (PVC) 接着,通过 PVC 请求上述 PV 提供的存储资源: ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi ``` #### 3. 将 NFS挂载到 Pod 中 一旦成功创建了 PV 和 PVC,就可以将其挂载至容器内部作为卷的一部分。以下是一个简单的 Pod 配置文件示例: ```yaml apiVersion: v1 kind: Pod metadata: name: nfs-pod spec: containers: - name: app-container image: nginx volumeMounts: - name: nfs-volume mountPath: /usr/share/nginx/html volumes: - name: nfs-volume persistentVolumeClaim: claimName: nfs-pvc ``` 此配置会将 NFS挂载Nginx 容器中的 `/usr/share/nginx/html` 路径下[^3]。 --- ### 总结 以上方法展示了如何从零开始搭建集成 NFS 存储进入 Kubernetes 环境的过程。具体操作包括但不限于:NFS 服务器端的基础环境准备、Kubernetes 内部对象(如 PV/PVC)的设计以及最终应用层面对外部存储设备的有效利用[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值