apiVersion: apps/v1 kind: Deployment metadata: name: mysql namespace: devops labels: app.kubernetes.io/name: mysql spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: mysql template: metadata: labels: app.kubernetes.io/name: mysql spec: securityContext: fsGroup: 999 fsGroupChangePolicy: OnRootMismatch seccompProfile: type: RuntimeDefault containers: - name: mysql image: mysql:8.0 imagePullPolicy: IfNotPresent ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: aiops-secret key: mysql-root-password - name: MYSQL_DATABASE value: aiops - name: MYSQL_USER value: aiops - name: MYSQL_PASSWORD valueFrom: secretKeyRef: name: aiops-secret key: mysql-password - name: TZ value: Asia/Shanghai args: - --default-authentication-plugin=mysql_native_password - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci volumeMounts: - name: mysql-data mountPath: /var/lib/mysql securityContext: runAsNonRoot: true runAsUser: 999 runAsGroup: 999 allowPrivilegeEscalation: false capabilities: drop: ["ALL"] seccompProfile: type: RuntimeDefault readinessProbe: exec: command: ["sh", "-c", "mysqladmin ping -h 127.0.0.1 -uroot -p\"$MYSQL_ROOT_PASSWORD\""] initialDelaySeconds: 20 periodSeconds: 10 timeoutSeconds: 5 resources: requests: cpu: 250m memory: 512Mi limits: cpu: "1" memory: 2Gi volumes: - name: mysql-data persistentVolumeClaim: claimName: mysql-data --- # MySQL 数据必须独立持久化,供备份与恢复演练使用。 // Logan.Li apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-data namespace: devops labels: app.kubernetes.io/name: mysql spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi --- apiVersion: v1 kind: Service metadata: name: mysql namespace: devops spec: selector: app.kubernetes.io/name: mysql ports: - port: 3306 targetPort: 3306