k8s之 volumes配置管理(emptyDir、hostPath、nfs方式挂载卷)

1. K8S中的volume挂载方式

容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。 首先,当容器崩溃时,kubelet 将重新启动容器,容器中的文件将会丢失——因为容器会以干净的状态重建。

当在一个 Pod 中同时运行多个容器时,常常需要在这些容器之间共享文件。 Kubernetes 抽象出 Volume 对象来解决这两个问题。

Kubernetes卷具有明确的生命周期——与包裹它的 Pod 相同。 因此,卷比Pod中运行的任何容器的存活期都长,在容器重新启动时数据也会得到保留。当然,当一个Pod不再存在时,卷也将不再存在。也许更重要的是,Kubernetes 可以支持许多类型的卷,Pod 也能同时使用任意数量的卷。

卷不能挂载到其他卷,也不能与其他卷有硬链接。Pod 中的每个容器必须独立地指定每个卷的挂载位置。

2. Volume的类型

Kubernetes支持下列类型的卷:
awsElasticBlockStore、azureDisk、azureFile、cephfs、cinder、configMap、csi、downwardAPI、emptyDir、fc (fibre channel)、flexVolume、flockegcePersistentDisk、gitRepo (deprecated)、glusterfs、hostPath、iscsi、local、nfs、persistentVolumeClaim、projected、portworxVolume、quobyte、rbd、scaleIO、secret、storageos、vsphereVolume

3. emptyDir卷

当Pod指定到某个节点上时,首先创建的是一个empt

在 Kubernetes 中,可以使用 NFS volume 来将 NFS 服务器上的目录挂载到 Pod 中。下面是一些指导步骤: 1. 在 NFS 服务器上创建共享目录,确保其在网络中可见。 2. 在 Kubernetes 集群中安装 NFS 客户端。 3. 创建一个包含 NFS 挂载信息的 Kubernetes Secret 对象,用于在 Pod 中访问 NFS 服务器。 4. 创建一个 PersistentVolume 对象,它定义了如何访问 NFS 服务器上的共享目录。 5. 创建一个 PersistentVolumeClaim 对象,它请求一个 PersistentVolume。 6. 在 Pod 中使用这个 PersistentVolumeClaim 对象作为 volume。 下面是一个示例 YAML 文件,它演示了如何将 NFS 服务器上的目录挂载到 Pod 中: ```yaml apiVersion: v1 kind: Secret metadata: name: nfs-creds type: Opaque data: username: <base64-encoded-username> password: <base64-encoded-password> --- apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 1Gi accessModes: - ReadWriteMany nfs: server: <nfs-server> path: /path/to/nfs/share readOnly: false mountOptions: - hard - nfsvers=4.1 - timeo=600 - retrans=2 - noresvport persistentVolumeReclaimPolicy: Retain storageClassName: nfs volumeMode: Filesystem secretRef: name: nfs-creds --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi storageClassName: nfs volumeMode: Filesystem --- apiVersion: v1 kind: Pod metadata: name: nfs-pod spec: containers: - name: nfs-container image: nginx volumeMounts: - name: nfs-volume mountPath: /usr/share/nginx/html volumes: - name: nfs-volume persistentVolumeClaim: claimName: nfs-pvc ``` 在上面的 YAML 文件中,我们首先创建了一个 Secret 对象,它包含了 NFS 服务器的用户名和密码。接下来,我们创建了一个 PersistentVolume 对象,它定义了如何访问 NFS 服务器上的共享目录。注意,我们使用了我们之前创建的 Secret 对象来访问 NFS 服务器。然后,我们创建了一个 PersistentVolumeClaim 对象,它请求一个 PersistentVolume。最后,我们创建了一个 Pod 对象,它使用这个 PersistentVolumeClaim 对象作为 volume。 希望这些信息能够帮助你安装并配置 NFS 在 Kubernetes 上的挂载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值