--- # 1. ConfigMaps apiVersion: v1 kind: ConfigMap metadata: name: mysql-master-config namespace: mysql data: my.cnf: | [mysqld] server-id=1 log-bin=mysql-bin binlog-format=ROW gtid-mode=ON enforce-gtid-consistency=ON log-replica-updates=ON skip-replica-start=ON default-authentication-plugin=mysql_native_password bind-address=0.0.0.0 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci max_connections=1000 innodb_buffer_pool_size=256M --- # 2. Secrets apiVersion: v1 kind: Secret metadata: name: mysql-secrets namespace: mysql type: Opaque stringData: root-password: "Lq123456!" replica-user: "replica" replica-password: "Replica123456!" --- # 3. PersistentVolume apiVersion: v1 kind: PersistentVolume metadata: name: mysql-master-pv namespace: mysql labels: type: local app: mysql role: master spec: storageClassName: manual capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: "/home/lq/mysql/master/data" # 本地目录路径 type: DirectoryOrCreate --- # 4. PersistentVolumeClaim apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-master-pvc namespace: mysql labels: app: mysql role: master spec: storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 10Gi selector: matchLabels: app: mysql role: master --- # 5. Services apiVersion: v1 kind: Service metadata: name: mysql-master namespace: mysql labels: app: mysql role: master spec: ports: - port: 3306 name: mysql selector: app: mysql role: master --- # 6. Master Deployment (先用Deployment简化调试) apiVersion: apps/v1 kind: Deployment metadata: name: mysql-master namespace: mysql labels: app: mysql role: master spec: replicas: 1 selector: matchLabels: app: mysql role: master strategy: type: Recreate template: metadata: labels: app: mysql role: master spec: containers: - name: mysql image: mysql:8.0.44 env: - name: MYSQL_ROOT_PASSWORD value: "Lq123456!" - name: MYSQL_DATABASE value: "appdb" - name: MYSQL_USER value: "appuser" - name: MYSQL_PASSWORD value: "App123456!" ports: - containerPort: 3306 volumeMounts: - name: config mountPath: /etc/mysql/conf.d/ - name: data mountPath: /var/lib/mysql resources: requests: memory: "512Mi" cpu: "250m" livenessProbe: tcpSocket: port: 3306 initialDelaySeconds: 90 periodSeconds: 20 readinessProbe: exec: command: - mysql - -h127.0.0.1 - -uroot - -pLq123456! - -e - "SELECT 1" initialDelaySeconds: 60 periodSeconds: 10 lifecycle: postStart: exec: command: - /bin/bash - -c - | sleep 20 mysql -uroot -pLq123456! <