Kubernetes PV文件未保存在主机上

Kubernetes PV文件未保存在主机上,kubernetes,Kubernetes,hi关于持久卷的主机路径的所有快速问题 我在这里创建了PV和PVC apiVersion: v1 kind: PersistentVolume metadata: name: task-pv-volume labels: type: local spec: storageClassName: manual capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path:

hi关于持久卷的主机路径的所有快速问题

我在这里创建了PV和PVC

apiVersion: v1
kind: PersistentVolume
metadata:
  name: task-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi
我运行了一个样本舱

apiVersion: v1
kind: Pod
metadata:
  name: task-pv-pod
spec:
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
        claimName: task-pv-claim
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage

我执行pod并创建了一个文件

root@task-pv-pod:/# cd /usr/share/nginx/html
root@task-pv-pod:/usr/share/nginx/html# ls
tst.txt
但是,当我返回主机并尝试删除该文件时,它不会出现。知道为什么吗?我的PV和PVC是正确的,因为我可以看到它是有界的

ubuntu@ip-172-31-24-21:/home$ cd /mnt/data
ubuntu@ip-172-31-24-21:/mnt/data$ ls -lrt
total 0
持久卷(PV)是一种kubernetes资源,其生命周期独立于pod。使用PVC消耗PV使其在其他工具中可见。例如azure文件、ELB、带有NFS的服务器等。我这里的观点是,节点中没有理由存在PV

如果希望将持久性保存在节点中,请使用PVs的
hostPath
选项。看看这个。虽然这不是一个好的生产实践

持久卷(PV)是一种kubernetes资源,其生命周期独立于pod。使用PVC消耗PV使其在其他工具中可见。例如azure文件、ELB、带有NFS的服务器等。我这里的观点是,节点中没有理由存在PV


如果希望将持久性保存在节点中,请使用PVs的
hostPath
选项。看看这个。虽然这不是一个好的生产实践

首先,如果要创建PVC,则不需要创建PV。如果您有合适的storageClass,PV将创建PV

其次,hostPath是Kubernetes世界中一个微妙的PV。这是唯一一个安装在吊舱中不需要创建的PV。因此,您不可能既不创建PV也不创建PVC,主机路径卷也可以正常工作

要进行测试,请删除PV和PVC,然后按如下方式创建Pod:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-volume
  labels:
    app: nginx
spec:
  containers:
  - image: nginx
    name: nginx
    securityContext:
      privileged: true
    ports:
    - containerPort: 80
      name: nginx-http
    volumeMounts:
    - name: nginx
      mountPath: /root/nginx-volume   # path in the pod
  volumes:
  - name: nginx
    hostPath:
      path: /var/test             # path in the host machine

我知道这是一个令人困惑的概念,但事实就是如此。

首先,如果要创建PVC,则不需要创建PV。如果您有合适的storageClass,PV将创建PV

其次,hostPath是Kubernetes世界中一个微妙的PV。这是唯一一个安装在吊舱中不需要创建的PV。因此,您不可能既不创建PV也不创建PVC,主机路径卷也可以正常工作

要进行测试,请删除PV和PVC,然后按如下方式创建Pod:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-volume
  labels:
    app: nginx
spec:
  containers:
  - image: nginx
    name: nginx
    securityContext:
      privileged: true
    ports:
    - containerPort: 80
      name: nginx-http
    volumeMounts:
    - name: nginx
      mountPath: /root/nginx-volume   # path in the pod
  volumes:
  - name: nginx
    hostPath:
      path: /var/test             # path in the host machine
我知道这是一个令人困惑的概念,但事实就是如此