Kod*_*odi 9 kubernetes persistent-volumes persistent-volume-claims kubernetes-pod
我正在尝试使用 WSL 使用本地存储设置本地持久卷。但 Pod STATUS 停止在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已创建并存在于本地机器上,但容器无法访问。
pod 和持久卷配置如下。
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
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
如果在 Rancher Kubernetes Engine (RKE) 集群上运行,则可能会出现此问题,因为每个 kubelet 也作为容器运行。因此,它看不到它运行的节点的文件系统。
kubelet解决方案是在配置集群时添加额外的绑定挂载(用于服务) cluster.yml。例如,要/data-1在要挂载的节点上像/data-1在 kubelet 上一样:
services:
...
kubelet:
extra_binds:
- "/data-1:/data-1"
Run Code Online (Sandbox Code Playgroud)
您正在使用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
Run Code Online (Sandbox Code Playgroud)
解决方案:
确保/mnt/data存在于所有可调度节点上
或者
尝试修改您的文件以添加nodeName或强制其在具有正确主机路径nodeSelector的nodeAffinity同一节点上进行调度。在下面的示例中,假设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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9206 次 |
| 最近记录: |