无法附加或安装卷:等待条件超时

2023-11-22

我本地集群中的一个 pod 无法启动,因为我得到Unable to attach or mount volumes: unmounted volumes=[nats-data-volume], unattached volumes=[nats-data-volume nats-initdb-volume kube-api-access-5b5cz]: timed out waiting for the condition error.

$ kubectl get pods
NAME                                        READY   STATUS              RESTARTS   AGE
deployment-nats-db-5f5f9fd6d5-wrcpk         0/1     ContainerCreating   0          19m
deployment-nats-server-57bbc76d44-tz5zj     1/1     Running             0          19m

$ kubectl describe pods deployment-nats-db-5f5f9fd6d5-wrcpk
Name:           deployment-nats-db-5f5f9fd6d5-wrcpk
Namespace:      default
Priority:       0
Node:           docker-desktop/192.168.65.4
Start Time:     Tue, 12 Oct 2021 21:42:23 +0600
Labels:         app=nats-db
                pod-template-hash=5f5f9fd6d5
                skaffold.dev/run-id=1f5421ae-6e0a-44d6-aa09-706a1d1aa011
Annotations:    <none>
Status:         Pending
IP:
IPs:            <none>
Controlled By:  ReplicaSet/deployment-nats-db-5f5f9fd6d5
Containers:
  nats-db:
    Container ID:
    Image:          postgres:latest
    Image ID:
    Port:           <none>
    Host Port:      <none>
    State:          Waiting
      Reason:       ContainerCreating
    Ready:          False
    Restart Count:  0
    Limits:
      cpu:     1
      memory:  256Mi
    Requests:
      cpu:     250m
      memory:  128Mi
    Environment Variables from:
      nats-db-secrets  Secret  Optional: false
    Environment:       <none>
    Mounts:
      /docker-entrypoint-initdb.d from nats-initdb-volume (rw)
      /var/lib/postgresql/data from nats-data-volume (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-5b5cz (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  nats-data-volume:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  nats-pvc
    ReadOnly:   false
  nats-initdb-volume:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  nats-pvc
    ReadOnly:   false
  kube-api-access-5b5cz:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason       Age                 From               Message
  ----     ------       ----                ----               -------
  Normal   Scheduled    19m                 default-scheduler  Successfully assigned default/deployment-nats-db-5f5f9fd6d5-wrcpk to docker-desktop
  Warning  FailedMount  4m9s (x2 over 17m)  kubelet            Unable to attach or mount volumes: unmounted volumes=[nats-data-volume], unattached volumes=[nats-initdb-volume kube-api-access-5b5cz nats-data-volume]: timed out waiting for the condition
  Warning  FailedMount  112s (x6 over 15m)  kubelet            Unable to attach or mount volumes: unmounted volumes=[nats-data-volume], unattached volumes=[nats-data-volume nats-initdb-volume kube-api-access-5b5cz]: timed out waiting for the condition

我不知道问题出在哪里。 PV和PVC似乎都已成功应用。

$ kubectl get pv,pvc
NAME                            CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                   STORAGECLASS             REASON   AGE
persistentvolume/nats-pv        50Mi       RWO            Retain           Bound    default/nats-pvc        local-hostpath-storage            21m

NAME                                  STATUS   VOLUME         CAPACITY   ACCESS MODES   STORAGECLASS             AGE
persistentvolumeclaim/nats-pvc        Bound    nats-pv        50Mi       RWO            local-hostpath-storage   21m

以下是 SC、PV 和 PVC 的配置:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-hostpath-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nats-pv
spec:
  capacity:
    storage: 50Mi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  storageClassName: local-hostpath-storage
  hostPath:
    path: /mnt/wsl/nats-pv
    type: DirectoryOrCreate
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nats-pvc
spec:
  volumeName: nats-pv
  resources:
    requests:
      storage: 50Mi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  storageClassName: local-hostpath-storage
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-nats-db
spec:
  selector:
    matchLabels:
      app: nats-db
  template:
    metadata:
      labels:
        app: nats-db
    spec:
      containers:
        - name: nats-db
          image: postgres:latest
          envFrom:
            - secretRef:
                name: nats-db-secrets
          volumeMounts:
            - name: nats-data-volume
              mountPath: /var/lib/postgresql/data
            - name: nats-initdb-volume
              mountPath: /docker-entrypoint-initdb.d
          resources:
            requests:
              cpu: 250m
              memory: 128Mi
            limits:
              cpu: 1000m
              memory: 256Mi
      volumes:
        - name: nats-data-volume
          persistentVolumeClaim:
            claimName: nats-pvc
        - name: nats-initdb-volume
          persistentVolumeClaim:
            claimName: nats-pvc

如果我注释掉这个pod将会成功启动volumeMounts and volumes键。特别是这个/var/lib/postgresql/data小路。就像我删除一样nats-data-volume并保留nats-initdb-volume,就启动成功了。

谁能帮助我到底哪里错了?预先致谢并致以最诚挚的问候。


...if I remove nats-data-volume and keep nats-initdb-volume, it's started successfully.

此 PVC 不能安装两次,即无法满足条件。

看看你的规范,你似乎不介意哪个工作节点将运行你的 postgress pod。在这种情况下,您不需要PV/PVC,您可以直接挂载hostPath,如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-nats-db
spec:
  selector:
    matchLabels:
      app: nats-db
  template:
    metadata:
      labels:
        app: nats-db
    spec:
      containers:
        - name: nats-db
          image: postgres:latest
          envFrom:
            - secretRef:
                name: nats-db-secrets
          volumeMounts:
            - name: nats-data-volume
              mountPath: /var/lib/postgresql/data
            - name: nats-data-volume
              mountPath: /docker-entrypoint-initdb.d
          resources:
            requests:
              cpu: 250m
              memory: 128Mi
            limits:
              cpu: 1000m
              memory: 256Mi
      volumes:
        - name: nats-data-volume
          hostPath:
            path: /mnt/wsl/nats-pv
            type: DirectoryOrCreate
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法附加或安装卷:等待条件超时 的相关文章

随机推荐

  • Linq 2 SQL - 通用 where 子句

    有没有办法做到这一点 public T GetItemById int id Table
  • 使用 Youtube Api v3 和 oauth2 将视频上传到我的 Youtube 频道,无需用户身份验证

    我的任务目标是创建一个控制台脚本 它将我自己网站上最近上传的视频插入到我自己的 Youtube 频道中 我想使用服务器到服务器的身份验证 但 YoutubeApi 现在不支持这种身份验证方式 所以我的问题是 如何在没有用户帮助的情况下使用
  • Xcode 6 / Beta 4:不支持将桥接标头与框架目标一起使用

    我刚刚升级到 Xcode 6 Beta 4 并拥有一个为 Beta 2 中的实时视图创建的框架 由于另一个 swiftbug 我需要使用一些 Obj C 代码 但升级时 我收到以下错误 错误 不支持将桥接标头与框架目标一起使用 我没有在发行
  • 连接具有相同 id 的 pandas DataFrame 行

    假设我有一个 pandas DataFrame 例如 A B id 0 1 1 0 1 2 1 0 2 3 2 1 3 0 2 1 假设我想合并具有相同 id 的行 以便将行中的其他元素放在一个列表中 这样上面的数据框将变为 A B id
  • AngularJS 在两个选择列表之间移动项目

    我正在尝试使用下面的代码在两个选择列表之间移动项目 但是项目没有从 availableClients 列表移动到 selectedClients 列表 所以有人可以检查下面的代码并让我知道我在这里缺少什么吗 谢谢 div div div d
  • 在同一服务器上运行多个 Django Celery 网站

    我使用 apache2 虚拟服务器在同一服务器上运行多个 Django apache wsgi 网站 我想使用 celery 但是如果我为多个网站启动 celeryd 所有网站都将使用我启动的最后一个 celeryd 实例的配置 日志 数据
  • 为什么引发 NSException 不会导致我的应用程序崩溃?

    问题 我正在编写一个 Cocoa 应用程序 我想引发异常 从而导致应用程序崩溃 我的应用程序委托中有以下几行 NSException raise NSInternalInconsistencyException format This sh
  • Google 翻译 API v2 - (403) 访问未配置

    我在通过 Google 控制台 API 使用 Google 翻译时遇到问题 当我从本地计算机运行测试时 它运行得很好 但是当我尝试在远程测试虚拟服务器上运行它时 它返回上面的 403 我在控制台 API 访问中通过服务器密钥使用简单 API
  • prolog,在元组列表中查找列表元素

    我正在尝试用 Prolog 解决一个新程序 但我被卡住了 不知道如何继续 我必须做一个有 3 个参数的谓词 第一个是元素列表 第二个是元素列表是元组列表 如果元组的第一个元素与第一个参数列表的元素匹配 则第三个必须是返回的包含元组的第二个元
  • __scrt_common_main_seh 是什么/在哪里?

    我的程序中的第三方库正在尝试调用 scrt common main seh通过微软库msvcrt lib 但由某些未知库定义 因此会出现链接器错误 我不知道这个函数应该做什么或者它是在哪里定义的 我在网上查找了这个函数 但除了链接器错误的一
  • 突出显示 ggplot2 中感兴趣的区域

    在普通绘图中 可以使用polygon调用panel first论证plot突出显示背景区域 是否可以做同样的事情ggplot2 可以在保留网格线的同时完成吗 eg plot hp and wt for mtcars data highlig
  • JavaFX:循环之间的旋转动画延迟

    我使用以下代码为基于 RotatedTranstion 的 ImageView 创建了动画 ImageView icon ImageCache getImage refresh png RotateTransition rotateTran
  • 订阅 Angular 2 HTML 元素中的可观察对象

    我有一个可观察的生产Users有一个isLoading属性 这样就可以产生预期的结果 user async isLoading 我希望能够使用这个isLoadingHTML 属性中的属性 如下所示
  • 比 <__main__.MyClass 实例位于 0x1624710> 更漂亮的东西

    这是我的课程 尽可能简单 class MyClass def init self id self id id def str self return MyClass d self id 当我打印 MyClass 的对象时 我得到这个漂亮的字
  • 如何使用 javascript 或 jquery 从字符串中提取 html 标签的内容? [复制]

    这个问题在这里已经有答案了 也许这是非常基本的 但我很困惑 我有一个简单的 html 页面 其中包含许多部分 div 我有一个包含 javascript 中的 html 标签的字符串 代码如下
  • 如何在Windows中编写Unix行尾字符?

    如何使用 Python 在 Windows 上 写入文件并使用 Unix 行尾字符 例如做时 f open file txt w f write hello n f close Python自动替换 n with r n 现代方式 使用 n
  • Celery 任务可以在重启后继续存在吗?

    我需要构建一个处理两种类型任务的系统 一种类型可以创建更多其自身或另一种类型的任务 工作人员数量很少 2 3 并且只有一名主机 最重要的要求是系统应该优雅地处理重新启动 即重新启动时 正在进行的任务应该从头开始 并且工作人员应该选择重新启动
  • 在 XAML 中使用矩形形状作为剪辑

    有没有办法可以使用普通的矩形 形状 作为 XAML 中另一个对象的剪辑的一部分 看起来我应该能够做到 但解决方案却让我困惑
  • 在pyspark中读取Excel(.xlsx)文件

    我正在尝试从 PySpark 中的本地路径读取 xlsx 文件 我写了下面的代码 from pyspark shell import sqlContext from pyspark sql import SparkSession spark
  • 无法附加或安装卷:等待条件超时

    我本地集群中的一个 pod 无法启动 因为我得到Unable to attach or mount volumes unmounted volumes nats data volume unattached volumes nats dat