使用Persistent Volume部署MySQL时出错,请求协助排查
排查K8s MySQL部署YAML的验证错误
你的错误完全是YAML层级缩进不规范导致的,Kubernetes对YAML的结构层级要求非常严格,下面是具体问题和修正后的完整配置:
错误点解析
strategy层级错误:strategy被错误嵌套在selector.matchLabels下,它应该是Deployment.spec的直接子项,和selector、template同级。template缩进错误:template的缩进位置不对,导致K8s误将template.spec识别为Deployment.spec的字段,引发"unknown field 'spec'"错误。- PVC的
requests缩进错误:requests必须是resources的子项,需对齐缩进。 - 环境变量
valueFrom缩进错误:MYSQL_ROOT_PASSWORD的valueFrom要和name同级,不能错位。 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
相关产品推荐
相关产品推荐

