我正在尝试使用WSL设置使用本地存储的本地永久卷。但Pod状态停止在挂起。kubectl describe pod <pod-name>
产生以下错误。Warning FailedMount 21s (x7 over 53s) kubelet MountVolume.NewMounter initialization failed for volume "pv1" : path "/mnt/data" does not exist
路径/mnt/data
已创建并存在于本地计算机上,但无法由容器访问。
和持久卷配置,如下所示。
apiVersion : v1
kind : PersistentVolume
metadata :
name : pv1
spec :
capacity :
storage : 2Gi
accessModes :
- ReadWriteOnce
persistentVolumeReclaimPolicy : Retain
storageClassName : local-storage
local :
fsType : ext4
path : /mnt/data
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- node1
---
apiVersion : v1
kind : PersistentVolumeClaim
metadata :
name : pvc1
spec :
resources :
requests :
storage : 1Gi
accessModes :
- ReadWriteOnce
storageClassName : local-storage
---
apiVersion : v1
kind : Pod
metadata :
name : pod1
spec :
containers:
- name: www
image: nginx:alpine
ports:
- containerPort: 80
name: www
volumeMounts:
- name: www-store
mountPath: /usr/share/nginx/html
volumes :
- name : www-store
persistentVolumeClaim :
claimName : pvc1
任何帮助都将不胜感激。
3条答案
按热度按时间dl5txlt91#
如果在RKE集群上运行,这个问题可能是由于每个kubelet也作为容器运行,因此它看不到运行它的节点的文件系统。
解决方案是在
cluster.yml
中配置群集时添加额外的绑定挂载(用于kubelet
服务)。例如,要将节点上的/data-1
挂载为kubelet上的/data-1
:pkwftd7m2#
您正在为
pv
使用nodeSelector
,告诉它为卷使用node1
,可能是1.node1
没有/mnt/data
目录,该目录为卷的hostPath
。或者2.node1
可能有/mnt/data
,但是pod
被调度在没有/mnt/data
目录的某个其他节点上:**解决方案:**确保所有可调度节点上都存在
/mnt/data
或
尝试修改要添加的文件,
nodeName
或nodeSelector
或nodeAffinity
,以强制在具有正确hostPath的同一节点上调度该文件。在以下示例中,假定node1
具有/mnt/data
目录。8hhllhi23#
在Talos上,类似于另一个答案中的RKE引擎,它也运行容器化的
kubelet
,必须在MachineConfig.kubelet
中配置extraMounts
,例如: