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
相关产品推荐
相关产品推荐

