Kubernetes 两个持久卷目标之一';地位是「;待决“;
我有一个文件有PV,服务和2个Pod状态集,包括动态PVC。 当我部署该文件时,PVC状态出现了一个问题Kubernetes 两个持久卷目标之一';地位是「;待决“;,kubernetes,kubernetes-pvc,Kubernetes,Kubernetes Pvc,我有一个文件有PV,服务和2个Pod状态集,包括动态PVC。 当我部署该文件时,PVC状态出现了一个问题 # kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE www-web-0 Bound pv-test 10Gi RWO my-storage-class
# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
www-web-0 Bound pv-test 10Gi RWO my-storage-class 7m19s
www-web-1 Pending my-storage-class 7m17s
PVC的一个状态为“挂起”,原因是“未找到存储类名”。
但其中一种PVC是正常生产的
下面是该文件的内容
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-test
labels:
type: local
spec:
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: "my-storage-class"
capacity:
storage: 10Gi
hostPath:
path: /tmp/data
type: DirectoryOrCreate
---
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx # has to match .spec.template.metadata.labels
serviceName: "nginx"
replicas: 2 # by default is 1
template:
metadata:
labels:
app: nginx # has to match .spec.selector.matchLabels
spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: k8s.gcr.io/nginx-slim:0.8
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "my-storage-class"
resources:
requests:
storage: 1Gi
如果有人知道原因,请告诉我。
提前谢谢
描述PV、PVC(www-web-1)、Pod(web-1)的相关信息
kubectl描述光伏测试
名称:pv测试
标签:类型=本地
注释:kubectl.kubernetes.io/last-applicated-configuration:
{“apiVersion”:“v1”,“kind”:“PersistentVolume”,“metadata”:{“annotations”:{},“labels”:{“type”:“local”},“name”:“pv test”},“spec”:{“accessModes…”。。。
pv.kubernetes.io/bound-by-controller:是
终结器:[kubernetes.io/pv保护]
StorageClass:我的存储类
状态:绑定
声明:默认值/www-web-0
回收策略:删除
访问模式:RWX
VolumeMode:文件系统
容量:10Gi
节点关联:
信息:
资料来源:
类型:主机路径(裸主机目录卷)
路径:/tmp/数据
HostPathType:目录或创建
活动:
#kubectl描述pvc www-web-1
姓名:www-web-1
名称空间:默认值
StorageClass:我的存储类
状态:待定
卷:
标签:app=nginx
注释:
终结器:[kubernetes.io/pvc保护]
容量:
访问模式:
VolumeMode:文件系统
活动:
从消息中键入原因年龄
---- ------ ---- ---- -------
警告配置失败20秒(x7超过2m)的persistentvolume controller storageclass.storage.k8s.io找不到“我的存储类”
安装人:web-1
#kubectl描述po web-1
名称:web-1
名称空间:默认值
优先级:0
PriorityClassName:
节点:
标签:app=nginx
控制器修订哈希=web-6596ffb49b
statefulset.kubernetes.io/pod name=web-1
注释:
状态:待定
知识产权:
控制者:StatefulSet/web
容器:
nginx:
图片:k8s.gcr.io/nginx slim:0.8
端口:80/TCP
主机端口:0/TCP
环境:
挂载:
/来自www(rw)的usr/share/nginx/html
/来自默认令牌lnfvq(ro)的var/run/secrets/kubernetes.io/serviceCount
条件:
类型状态
播客计划错误
卷数:
www:
类型:PersistentVolumeClaim(对同一命名空间中PersistentVolumeClaim的引用)
权利要求书名称:www-web-1
只读:false
默认令牌lnfvq:
类型:Secret(由Secret填充的卷)
SecretName:默认令牌lnfvq
可选:false
QoS等级:最佳努力
节点选择器:
容差:node.kubernetes.io/未就绪:不执行300秒
node.kubernetes.io/不可访问:不执行300秒
活动:
从消息中键入原因年龄
---- ------ ---- ---- -------
警告失败调度3m43s(x183超过8m46s)默认调度程序pod已解除立即PersistentVolumeClaims的绑定(重复3次)
您正在使用hostpath卷存储数据。您正在主机上使用/tmp/data。请确保群集中的所有节点中都存在/tmp/data目录。您的卷pv test
具有访问模式:-ReadWriteOnce
我认为您需要为第二个pod再创建一个卷
因此,我认为如果
www-web-1
也试图挂载pv-test
,它将无法挂载。请运行kubectl description pvc www-web-1
,并使用返回的任何“事件”信息更新您的答案。这可能有助于找到原因。我在上述问题中对其进行了评论。返回的事件是“找不到存储类名称“。但我想知道的是为什么第一个pvc成功创建。主机路径类型是DirectoryOrCreate。如果目录不存在,它将创建。从pv定义中删除存储类对于主机路径,您不需要存储类。从pv和pvc定义中删除它对于有状态的podI,您肯定需要每个pv,并且还使用选项测试“ReadWriteMany”,但结果是一样的。你能在pod、pv和pvc上运行description
并共享输出吗?我添加了关于pv、pvc和pod的每个描述信息。你是如何创建my storage class
?
kubectl describe pv pv-test
Name: pv-test
Labels: type=local
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"PersistentVolume","metadata":{"annotations":{},"labels":{"type":"local"},"name":"pv-test"},"spec":{"accessModes...
pv.kubernetes.io/bound-by-controller: yes
Finalizers: [kubernetes.io/pv-protection]
StorageClass: my-storage-class
Status: Bound
Claim: default/www-web-0
Reclaim Policy: Delete
Access Modes: RWX
VolumeMode: Filesystem
Capacity: 10Gi
Node Affinity: <none>
Message:
Source:
Type: HostPath (bare host directory volume)
Path: /tmp/data
HostPathType: DirectoryOrCreate
Events: <none>
#kubectl describe pvc www-web-1
Name: www-web-1
Namespace: default
StorageClass: my-storage-class
Status: Pending
Volume:
Labels: app=nginx
Annotations: <none>
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning ProvisioningFailed 20s (x7 over 2m) persistentvolume-controller storageclass.storage.k8s.io "my-storage-class" not found
Mounted By: web-1
#kubectl describe po web-1
Name: web-1
Namespace: default
Priority: 0
PriorityClassName: <none>
Node: <none>
Labels: app=nginx
controller-revision-hash=web-6596ffb49b
statefulset.kubernetes.io/pod-name=web-1
Annotations: <none>
Status: Pending
IP:
Controlled By: StatefulSet/web
Containers:
nginx:
Image: k8s.gcr.io/nginx-slim:0.8
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts:
/usr/share/nginx/html from www (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-lnfvq (ro)
Conditions:
Type Status
PodScheduled False
Volumes:
www:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: www-web-1
ReadOnly: false
default-token-lnfvq:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-lnfvq
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 3m43s (x183 over 8m46s) default-scheduler pod has unbound immediate PersistentVolumeClaims (repeated 3 times)