k8s local PV 创建过程
时间: 2023-11-22 08:05:07 浏览: 158
Kubernetes(简称为K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。在K8s中,可以使用本地持久化卷(Local PV)来将本地磁盘挂载到容器中,为应用程序提供持久化存储。
下面是创建Local PV的步骤:
1. 创建本地存储类(StorageClass)
首先,需要创建一个本地存储类来定义如何创建Local PV。以下是一个创建名为`local-storage`的本地存储类的示例:
```
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
```
在这个例子中,`provisioner`字段设置为`kubernetes.io/no-provisioner`,这意味着不需要外部存储提供程序来创建Local PV。`volumeBindingMode`字段设置为`WaitForFirstConsumer`,这表示该存储类只会在第一个Pod请求使用该存储类时创建PV。
2. 创建Local PV
创建Local PV时,需要指定存储类、容量和路径等信息,以下是一个创建名为`local-pv`的Local PV的示例:
```
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /mnt/data
```
在此示例中,`capacity`字段设置为10GB。`accessModes`字段设置为`ReadWriteOnce`,这表示Local PV只能被单个节点上的单个Pod挂载并读写。`persistentVolumeReclaimPolicy`字段设置为`Retain`,这样当该PV被删除时,不会自动删除PV中的数据。`storageClassName`字段设置为`local-storage`,这表示使用前面创建的`local-storage`存储类来创建PV。`local`字段指定了本地文件系统中的路径。
3. 创建使用Local PV的Pod
创建Local PV后,可以创建使用该PV的Pod。以下是一个使用名为`local-pv`的Local PV的Pod的示例:
```
apiVersion: v1
kind: Pod
metadata:
name: local-pv-pod
spec:
containers:
- name: local-pv-container
image: nginx
volumeMounts:
- name: local-pv-volume
mountPath: /usr/share/nginx/html
volumes:
- name: local-pv-volume
persistentVolumeClaim:
claimName: local-pv-claim
```
在此示例中,`volumes`字段指定了使用名为`local-pv-claim`的Persistent Volume Claim(PVC)。PVC是PV的请求,它定义了需要多少存储空间和访问模式。在此示例中,PVC与前面创建的Local PV匹配,并且请求了10GB的存储空间。`volumeMounts`字段指定了将PVC挂载到容器中的路径。
4. 创建Persistent Volume Claim
最后,需要创建一个Persistent Volume Claim来请求Local PV。以下是一个使用名为`local-pv-claim`的PVC的示例:
```
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: local-pv-claim
spec:
storageClassName: local-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
```
在此示例中,`storageClassName`字段设置为`local-storage`,这表示使用前面创建的`local-storage`存储类来请求PV。`accessModes`字段设置为`ReadWriteOnce`,这表示只有单个节点上的单个Pod可以读写此PVC。`resources`字段指定了请求的存储空间大小。
阅读全文