小火炉
发布于 2025-09-12 / 28 阅读
0
0

Kubernetes

初步使用篇

本文主要介绍Kubernetes安装之后如何使用Kuboard运行一个Mysql实例。

安装Kuboard不在本文介绍范围内,相对比较简单,找到对应的官网按照不同的环境进行安装即可。

场景描述

Mysql选用8.0版本,数据需要持久化,存储使用NFS服务,为了便于演示,NFS服务安装在Master节点上,对应的目录为/nfs,对应的pvc为nfs-pvc。

Mysql的配置文件使用mysqld.conf,使用K8s的ConfigMap进行描述;

Mysql的用户名和密码均为root,密码使用K8s的Secret进行描述。

名称空间:xiaohuolu。

配置步骤

配置Secret文件

apiVersion: v1
kind: Secret
metadata:
  name: mysql-root-password
  namespace: xiaohuolu
type: Opaque
data:
  password: cm9vdA==

上述password部分为root的Base64编码(echo -n 'root' | base64)。

配置ConfigMap文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-config
  namespace: xiaohuolu
data:
  mysqld.conf: |
    [mysqld]
    # 大小写不敏感配置(关键参数)
    lower_case_table_names=1
    # 其他常用配置(按需调整)
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    default-time-zone='+8:00'
    max_connections=200
    innodb_buffer_pool_size=1G

配置Deployment文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  namespace: xiaohuolu
  labels:
    app: mysql
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-root-password
              key: password
        volumeMounts:
        - name: mysql-storage
          mountPath: /var/lib/mysql
          subPath: mysql/var/lib/mysql
        - name: mysql-config-volume
          mountPath: /etc/mysql/conf.d
      volumes:
      - name: mysql-storage
        persistentVolumeClaim:
          claimName: nfs-pvc
      - name: mysql-config-volume
        configMap:
          name: mysql-config
          items:
          - key: mysqld.conf
            path: mysqld.conf

配置Service文件

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


评论