k8s部署mysql

发布于:2025-08-03 ⋅ 阅读:(17) ⋅ 点赞:(0)

没那么多废话直接上编排文件
如果看此文章的是小白,请修改编排脚本中的namespce为自己集群中的namespace ,如果没有就请自己创建,其他修改项也下方进行了标注

# 密码加密
apiVersion: v1
kind: Secret
metadata:
  name: mysql-secret
  namespace: can-efws-ems #改为自己的名称空间
type: Opaque
data:
  # 对密码进行加密 下方字符串对应密码`CAN-qazxsw@123` 
  MYSQL_ROOT_PASSWORD: "Q0FOLXFhenhzd0AxMjM="
---
#创建mysql配置文件
apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-config
  namespace: can-efws-ems #修改名称空间
  labels:
    conf: mysql-config   
data:
  my.cnf: |
    [mysqld]
    lower_case_table_names = 1
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    skip-name-resolve
    max_allowed_packet=32M
    lower_case_table_names = 1
    character_set_server=utf8mb4  
    symbolic-links=0
    explicit_defaults_for_timestamp=true
    log_bin_trust_function_creators = 1
    binlog_expire_logs_seconds = 604800
    sql_mode = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
    slow_query_log = ON
    slow_query_log_file = /var/lib/mysql/slow-query.log
    long_query_time = 2   
    max_connections = 1000
---
# MySQL的StatefulSet配置
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql-server
  namespace: can-efws-ems #修改名称空间
  labels:
    app: mysql-server
    data/type: mysql
spec:
  serviceName: mnacos-mysql-server
  replicas: 1
  selector:
    matchLabels:
      app: mysql-server
  template:
    metadata:
      labels:
        app: mysql-server
        data/type: mysql
    spec:
      nodeSelector:
        bussness.node: "data"
      containers:
      - name: mysql-server
        image: harbor.dts.com/data/mysql:8.0
        imagePullPolicy: IfNotPresent
        env:
        - name: MYSQL_DATABASE
          value: "by_ems"
        - name: TZ
          value: "Asia/Shanghai"
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: MYSQL_ROOT_PASSWORD
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
        - name: mysql-config
          mountPath: /etc/my.cnf
          subPath: my.cnf
        - name: init-scripts
          mountPath: /docker-entrypoint-initdb.d
        resources:
          requests:
            memory: "512Mi"
            cpu: "500m"
          limits:
            memory: "4Gi"
            cpu: "1"
        # 容器健康检查
        livenessProbe:
          tcpSocket:
            port: 3306
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          tcpSocket:
            port: 3306
          initialDelaySeconds: 5
          periodSeconds: 10
      volumes:
      - name: init-scripts
        nfs: 
          server: 10.126.129.44
          path: /data/nfs/CAN/East-Finger-Gallery/ems/mysql/script
          readOnly: false
      - name: mysql-persistent-storage
         #此脚本中使用的挂载类型为nfs,需提前创建
        nfs: 
          server: 10.126.129.44
          path: /data/nfs/CAN/East-Finger-Gallery/ems/mysql/mysql-pv
          readOnly: false
      - name: mysql-config
        configMap:
          name: mysql-config
---
# MySQL的Service配置
apiVersion: v1
kind: Service
metadata:
  annotations: {}
  name: mysql-server
  namespace: can-efws-ems # 修改名称空间
  labels:
    app: mysql-server
    data/type: mysql
spec:
  ipFamilyPolicy: SingleStack
  ports:
  - port: 3306
    targetPort: 3306
    protocol: TCP
    name: mysql
  selector:
    app: mysql-server
  type: ClusterIP
  sessionAffinity: ClientIP
  # 会话亲和性配置, 默认值10800s
  sessionAffinityConfig:
    clientIP:
      timeoutSeconds: 10800


网站公告

今日签到

点亮在社区的每一天
去签到