在kubernetes中找不到持久卷声明

mor*_*rla 5 kubernetes google-kubernetes-engine

目前,我尝试在我的yaml文件中实现PersistentVolume。我在互联网上阅读了很多文档,但我不明白为什么当我转到仪表板窗格时收到此消息

找不到persistentvolumeclaim“ karaf-conf”

pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: karafpod
spec:
  containers:
  - name: karaf
    image: xxx/karaf:ids-1.1.0
    volumeMounts:
    - name: karaf-conf-storage
      mountPath: "/apps/karaf/etc"
  volumes:
    - name: karaf-conf-storage
      persistentVolumeClaim:
        claimName: karaf-conf-claim
Run Code Online (Sandbox Code Playgroud)

PersistentVolumeClaimKaraf.yml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: karaf-conf-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Mi
Run Code Online (Sandbox Code Playgroud)

PersistentVolume.yaml

kind: PersistentVolume
apiVersion: v1
metadata:
  name: karaf-conf
  labels:
    type: local
spec:
  capacity:
    storage: 100Mi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/apps/karaf/etc"
Run Code Online (Sandbox Code Playgroud)

您会在下面找到命令kubectl get pv的结果

NAME                             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS        CLAIM                         STORAGECLASS   REASON    AGE
karaf-conf                    100Mi      RWO            Retain           Terminating   default/karaf-conf-claim                            17h
karaf-conf-persistentvolume   100Mi      RWO            Retain           Released      default/karaf-conf                                  1h
Run Code Online (Sandbox Code Playgroud)

kubectl获取pvc

NAME                  STATUS        VOLUME          CAPACITY   ACCESS MODES   STORAGECLASS   AGE
karaf-conf-claim   Terminating   karaf-conf   10Mi       RWO            manual         17h
Run Code Online (Sandbox Code Playgroud)

小智 5

使用 hostPath,您不需要 PersistentVolume 或 PersistentVolumeClaim 对象,因此根据您的需要,这可能会更容易:

# file: pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: karafpod
spec:
  containers:
  - name: karaf
    image: xxx/karaf:ids-1.1.0
    volumeMounts:
    - name: karaf-conf-storage
      mountPath: "/apps/karaf/etc"  # Path mounted in container

  # Use hostPath here
  volumes:
    - name: karaf-conf-storage
      hostPath:
        path: "/apps/karaf/etc" # Path from the host
Run Code Online (Sandbox Code Playgroud)

然后删除另外两个.yaml文件PersistentVolumeClaimKaraf.ymlPersistentVolume.yml

官方文档请参见:https ://kubernetes.io/docs/concepts/storage/volumes/#hostpath

编辑:注意到原始帖子中的spec.containers.VolumeMounts.mountPath和spec.containers.volumes.hostPath.path是相同的,因此在yaml中添加了注释以澄清每个的目的。


Dae*_*ark -1

我的建议是重新创建pvpvc,并且确保在配置 的节点主机上运行 pod hostPath