我正在尝试使用使用WSL的本地存储来设置本地持久卷。但是pod状态在Pending上停止。
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
任何帮助都将不胜感激。
发布于 2021-07-23 18:19:21
您正在使用nodeSelector
作为pv
,告诉它对卷使用node1
,机会是 1。node1
没有/mnt/data
目录,这是卷的hostPath
目录。或 2. node1
可能有/mnt/data
,但是pod
正被安排在没有/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
解决方案:确保所有可调度节点上都存在/mnt/data
或
尝试修改您的文件以添加、nodeName
或nodeSelector
或nodeAffinity
,以强制它在具有适当hostPath的同一节点上进行调度。在下面的示例中,假设node1
有/mnt/data
目录。
apiVersion : v1
kind : Pod
metadata :
name : pod1
spec :
nodeName: node1 #<------------this
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
发布于 2022-01-25 16:18:34
如果在Rancher Kubernetes引擎(RKE)集群上运行,则可能会出现此问题,因为每个kubelet也作为容器运行。因此,它看不到它运行的节点的文件系统。
解决方案是在配置kubelet
中的集群时添加额外的绑定挂载(用于cluster.yml
服务)。例如,如果要将节点上的/data-1
作为/data-1
挂载在kubelet上:
services:
...
kubelet:
extra_binds:
- "/data-1:/data-1"
https://stackoverflow.com/questions/68503386
复制相似问题