在k8s集群部署MySQL单实例,支持多个主流发行版

说明

部署MySQL单实例。

可自定义MySQL配置文件。务必注意格式。

可自定义MySQL的nodeport端口,自定义storageclass的名字。

本方法支持多个MySQL版本,可按需调整。

bash 复制代码
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:5.7.44
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.4.11
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:9.7.2
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:26.7.0

配置文件

v1.yaml内容如下

bash 复制代码
---
# ... Secret  ...
apiVersion: v1
kind: Secret
metadata:
  name: mysql-secret
type: Opaque
stringData:
  ROOT_PASSWORD: "ComplexPassword123!"

---
# ... ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-config
data:
  my.cnf: |
    [mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    skip-name-resolve
    max_connections=4000
    open_files_limit=65535
    default_time_zone = '+8:00'

---
# ... Service
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
  - port: 3306
  clusterIP: None
  selector:
    app: mysql
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-external
spec:
  type: NodePort
  selector:
    app: mysql
  ports:
  - port: 3306
    targetPort: 3306
    # nodePort: 30306

---
# ... StatefulSet
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  serviceName: "mysql"
  replicas: 1
  template:
    metadata:
      labels:
        app: mysql
    spec:
      terminationGracePeriodSeconds: 60
      containers:
      - name: mysql
        image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:26.7.0
        imagePullPolicy: IfNotPresent
        securityContext:
          allowPrivilegeEscalation: false
          privileged: false
        ports:
        - containerPort: 3306
        env:
        - name: TZ
          value: "Asia/Shanghai"
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: ROOT_PASSWORD
        resources:
          requests:
            memory: "1Gi"
            cpu: "500m"
          limits:
            memory: "4Gi"
            cpu: "2"
        startupProbe:
          exec:
            command:
            - sh
            - -c
            - mysqladmin ping -h 127.0.0.1 -u root -p"$MYSQL_ROOT_PASSWORD" || exit 1
          failureThreshold: 30
          periodSeconds: 10
        readinessProbe:
          exec:
            command:
            - sh
            - -c
            - mysqladmin ping -h 127.0.0.1 -u root -p"$MYSQL_ROOT_PASSWORD" || exit 1
          initialDelaySeconds: 10
          periodSeconds: 5
          failureThreshold: 3
        livenessProbe:
          exec:
            command:
            - sh
            - -c
            - mysqladmin ping -h 127.0.0.1 -u root -p"$MYSQL_ROOT_PASSWORD" || exit 1
          initialDelaySeconds: 30
          periodSeconds: 10
          failureThreshold: 3
        volumeMounts:
        - name: data
          mountPath: /var/lib/mysql
        - name: config
          mountPath: /etc/mysql/conf.d
          readOnly: true
      volumes:
      - name: config
        configMap:
          name: mysql-config
          items:
          - key: my.cnf
            path: my.cnf
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      # storageClassName: "csi-disk"
      resources:
        requests:
          storage: 10Gi

部署

bash 复制代码
kubectl create namespace mysql
kubectl apply -f v1.yaml -n mysql

查询访问

复制代码
kubectl get all -n mysql

使用MySQL工具访问master node1 的IP,端口是nodeport映射的端口。

相关推荐
山岚的运维笔记几秒前
mysql 专业笔记 -- 第 14 章:GROUP BY
运维·数据库·笔记·后端·学习·mysql·dba
事圆则缓7 分钟前
Jetpack Compose Effect 完全指南
android·kotlin
大梦想家a1 小时前
基于 Spring Boot 的物流运单管理系统后端设计与实现(JWT + MyBatis-Plus + MySQL)
spring boot·mysql·mybatis
名字还没想好☜9 小时前
用 systemd 托管后台服务:Restart 策略、日志接管、资源限制与开机自启全踩一遍
运维·docker·kubernetes
平头哥技术团队9 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
冬木家居10 小时前
40㎡客厅变形记,小家住出大自由[特殊字符]
android·经验分享·笔记·智能家居·微信公众平台
AFinalStone11 小时前
Android 7系统无障碍服务(六)输入事件拦截与 TouchExplorer
android·无障碍服务
天空之城--11 小时前
MT管理器Android逆向工程完全指南:从入门到实战
android
云贝贝贝11 小时前
腾讯云 TDSQL(MySQL 版)运维高频 6 坑:代理路由、读写分离、分片键、监控、PITR
运维·mysql·腾讯云
Anhty12 小时前
2026九月最新变声器测评:iOS安卓双端适配,低延迟运行更稳定
android·人工智能·功能测试·ios·智能手机