You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将数据库部署到Kubernetes集群时遇PVC相关静默失败问题

问题排查与修复方案

1. 修复PVC的API版本错误

你的PVC定义里重复写了apiVersion,而且第一个apiVersion: apps/v1完全错误——PersistentVolumeClaim属于Kubernetes核心API组,正确的apiVersion只有v1,删掉第一行错误的apiVersion即可。

修正后的PVC代码:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: timescale-pvc-1
  namespace: my-namespace
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi
  storageClassName: standard

2. 对齐Deployment与PVC的命名空间

你的Deployment没指定namespace,默认会部署到default命名空间,但PVC在my-namespace里,Kubernetes不允许跨命名空间引用PVC。给Deployment的metadata加上命名空间配置:

metadata:
  name: timescale
  namespace: my-namespace

3. 给容器挂载存储卷

当前Deployment只定义了volume,但没把它挂载到容器内PostgreSQL的默认数据目录/var/lib/postgresql/data,就算部署成功,数据库也没法用PVC存数据。在容器配置里添加volumeMounts:

containers:
- name: timescale
  image: timescale/timescaledb:2.3.0-pg11
  imagePullPolicy: IfNotPresent
  ports:
  - containerPort: 5432
  env:
        - name: POSTGRES_PASSWORD
          value: "password"
        - name: POSTGRES_DB
          value: "metrics"
  volumeMounts:
  - name: timescaledb-pv
    mountPath: /var/lib/postgresql/data

4. 验证部署状态

部署修正后的yaml后,用以下命令确认状态:

  • 检查PVC是否绑定成功:kubectl get pvc -n my-namespace,状态应为Bound
  • 检查Deployment就绪状态:kubectl get deploy -n my-namespace,READY列需显示1/1
  • 若仍有问题,查看Pod日志排查:kubectl logs <pod-name> -n my-namespace

内容的提问来源于stack exchange,提问作者RagePwn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 21:31:17