Kubernetes 两个持久卷目标之一';地位是「;待决“;

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

我有一个文件有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   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)