【掌握Kubernetes,轻松部署MySQL数据库】高效、稳定、一步到位

发布时间:2025-05-23 11:14:28

引言

跟着云打算跟容器技巧的疾速开展,Kubernetes(简称K8s)已成为容器编排范畴的首选东西。MySQL作为一款广泛利用的关联型数据库,其牢固性跟坚固性在众多场景中掉掉落了验证。本文将介绍如何在Kubernetes情况中高效、牢固地安排MySQL数据库,帮助你疾速上手并利用。

筹备任务

在开端安排之前,请确保你曾经:

  1. 安装并设置了Kubernetes集群。
  2. 安装了kubectl命令行东西,用于与Kubernetes集群交互。
  3. 筹备了MySQL数据库镜像,比方官方的mysql:8.0镜像。

安排步调

1. 创建ConfigMap

起首,创建一个ConfigMap来存储MySQL的设置文件。

apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-config
  namespace: dev
data:
  my.cnf: |
    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set=utf8mb4
    [mysqld]
    max_connections=2000
    secure_file_priv=/var/lib/mysql
    sql_mode=STRICT_TRANS_TABLES

2. 创建PersistentVolumeClaim(PVC)

接上去,创建一个PVC来长久化MySQL数据。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
  namespace: dev
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: hpe-san
  volumeMode: Filesystem

3. 创建Deployment

创建一个Deployment来安排MySQL利用。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  namespace: dev
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:8.0
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: root-password
        volumeMounts:
        - name: mysql-pvc
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-pvc
        persistentVolumeClaim:
          claimName: mysql-pvc
      - name: mysql-config
        configMap:
          name: mysql-config

4. 创建Service

创建一个Service来裸露MySQL效劳的端口。

apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: dev
spec:
  selector:
    app: mysql
  ports:
    - protocol: TCP
      port: 3306
      targetPort: 3306
  type: ClusterIP

5. 创建Secret

创建一个Secret来存储MySQL的root密码。

apiVersion: v1
kind: Secret
metadata:
  name: mysql-secret
  namespace: dev
type: Opaque
data:
  root-password: <password_hash>

验证安排

利用以下命令验证MySQL效劳的状况:

kubectl get pods -n dev
kubectl get svc -n dev

假如全部正常,你应当能看到一个正在运转的MySQL pod跟一个名为mysql的Service。

总结

经由过程以上步调,你可能在Kubernetes情况中高效、牢固地安排MySQL数据库。在现实利用中,你可能根据须要调剂设置,比方增加正本数、设置长久化存储等。盼望本文能帮助你疾速上手Kubernetes跟MySQL的安排。