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

使用Persistent Volume部署MySQL时出错,请求协助排查

排查K8s MySQL部署YAML的验证错误

你的错误完全是YAML层级缩进不规范导致的,Kubernetes对YAML的结构层级要求非常严格,下面是具体问题和修正后的完整配置:

错误点解析

  1. strategy层级错误:strategy被错误嵌套在selector.matchLabels下,它应该是Deployment.spec的直接子项,和selector、template同级。
  2. template缩进错误:template的缩进位置不对,导致K8s误将template.spec识别为Deployment.spec的字段,引发"unknown field 'spec'"错误。
  3. PVC的requests缩进错误:requests必须是resources的子项,需对齐缩进。
  4. 环境变量valueFrom缩进错误:MYSQL_ROOT_PASSWORD的valueFrom要和name同级,不能错位。
  5. persistentVolumeClaim的claimName缩进错误:claimName是persistentVolumeClaim的子项,需正确缩进。

修正后的完整YAML文件

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-nfs
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path: /data
    server: xxxxxxxxxxxx
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mysql-nfs
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 500Mi
---
apiVersion: v1
kind: Service
metadata:
  name: mysql
  labels:
    app: mysql-wordpress
spec:
  ports:
    - port: 3306
  selector:
    app: mysql-wordpress
    product: mysql
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  labels:
    app: mysql-wordpress
spec:
  selector:
    matchLabels:
      app: mysql-wordpress
      product: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql-wordpress
        product: mysql
    spec:
      containers:
        - image: mysql
          name: mysql-container
          env:
            - name: MYSQL_DATABASE
              value: wordpress
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql-secret-password
                  key: password
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-storage
          persistentVolumeClaim:
            claimName: mysql-nfs

内容的提问来源于stack exchange,提问作者Sahil Tariq Lone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:04:56