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

Kubernetes MySQL部署YAML报错求助:映射值与PVC字段异常

排查并解决Kubernetes MySQL部署的两个错误

错误1:YAML解析错误

问题原因

原配置中MYSQL_USER环境变量的valueFrom字段里,secretKeyRef::多了一个冒号,属于YAML语法错误,导致解析器无法正确转换YAML到JSON。另外还有几处字段拼写/大小写错误:

  • secretkeyRef应为secretKeyRef(Kubernetes API要求驼峰拼写)
  • Deployment模板标签里的apps: mysql应为app: mysql(需与selector的matchLabels匹配)
  • volumes中的PersistentVolumeClaim应为小写驼峰persistentVolumeClaim(Kubernetes字段名区分大小写)

修复方式

  • 将secretKeyRef::改为secretKeyRef:
  • 修正secretkeyRef为secretKeyRef
  • 调整模板标签为app: mysql
  • 调整volumes字段为persistentVolumeClaim

错误2:PersistentVolumeClaim配置错误

问题原因

PVC的spec字段使用了accessMode(单数),而Kubernetes API要求的正确字段名是accessModes(复数),因此触发严格解码错误。

修复方式

将PVC spec中的accessMode改为accessModes


修正后的完整mysql-deployment.yaml配置

apiVersion: v1
kind: Service
metadata:
  name: mysql
  labels:
    app: mysql
    tier: database
spec:
  ports:
    - port: 3306
      targetPort: 3306
  selector:
    app: mysql
    tier: database
  clusterIP: None
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
  labels:
    app: mysql
    tier: database
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  labels:
    app: mysql
    tier: database
spec:
  selector:
    matchLabels:
      app: mysql
      tier: database
  strategy:
    type: Recreate
  template:
    metadata: 
      labels:
        app: mysql
        tier: database
    spec:
      containers:
      - image: mysql:5.7
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: db-root-credentials
              key: password
        - name: MYSQL_USER
          valueFrom:
            secretKeyRef:
              name: db-credentials
              key: username
        - name: MYSQL_PASSWORD
          valueFrom:
            secretKeyRef:
              name: db-credentials
              key: password
        - name: MYSQL_DATABASE
          valueFrom:
            configMapKeyRef:
              name: dbbuddyto_mstr_local
              key: name
        ports:
          - containerPort: 3306
            name: mysql
        volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
          - name: mysql-persistent-storage
            persistentVolumeClaim:
              claimName: mysql-pv-claim

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:31:17