ToB企服应用市场:ToB评测及商务社交产业平台

标题: kubernetes集群下部署mysql 8.0.20单机数据库 [打印本页]

作者: 耶耶耶耶耶    时间: 2024-8-26 09:32
标题: kubernetes集群下部署mysql 8.0.20单机数据库
一、背景:

   因为业务需求,需要在kubernetes集群下部署一个mysql数据库 8.0.20版本的单机服务。
  具体实施过程如下:
  二、实施部署mysql数据库:

   mysql 8.0.20的镜像:
  dockerhub.jiang.com/jiang-public/mysql:8.0.20-stjh
    这里选择的namespace是:dev
  1、创建pv、pvc存储:

   注:这里的kubernetes集群环境存在storageclass组建,所以这里只要是pvc组建的设置就可以。
    pvc:mysql-db-pvc 的yml设置内容
  1. apiVersion: storage.k8s.io/v1
  2. kind: PersistentVolumeClaim
  3. metadata:
  4.   name: db-mysql-pvc
  5.   namespace: dev
  6.   finalizers:
  7.     - kubernetes.io/pvc-protection
  8. spec:
  9.   accessModes:
  10.     - ReadWriteOnce
  11.   resources:
  12.     requests:
  13.       storage: 10Gi
  14.   storageClassName: hpe-san
  15.   volumeMode: Filesystem
复制代码
  应用该pvc资源
  1. # kubectl apply -f mysql-db-pvc.yaml
复制代码
  检察该pv资源
  1. # kubectl get pvc -n dev
复制代码
  若需要进行删除pvc
    方式一:
  1. # kubectl delete pvc mysql-db-pvc -n dev
复制代码
  方式二:
  1. # kubectl delete -f mysql-db-pvc.yaml
复制代码
2、创建ConfigMap组建:

   ConfigMap 是kuberbetes中的一种 API对象,用来将非机密性的数据生存到键值对中。使用时,Pods 可以将其用作环境变量、命令行参数或者存储卷中的设置文件。ConfigMap 的主要作用就是为了让镜像和设置文件解耦,以便实现镜像的可移植性和可复用性。
    使用 ConfigMap 的限制条件:
    1、ConfigMap 需要在 Pod 启动前创建出来;
2、并且只有当 ConfigMap 和 Pod 处于同一命名空间时,才可以被 Pod 引用;
3、当 Pod 挂载 ConfigMap 绑定的目次时,目次下的目次并不会挂载到 Pod 内,只有目次下的文件会被挂载。
    mysql-db-cm的yaml设置内容:
  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4.   annotations:
  5.     configlabels: ""
  6.   name: db-mysql-cm
  7.   namespace: dev
  8. data:
  9.   my.cnf: |
  10.     [mysql]
  11.     default-character-set=utf8
  12.     [mysqld]
  13.     datadir=/var/lib/mysql
  14.     max_connections=1000
  15.     innodb_lock_wait_timeout=500
  16.     character-set-server=utf8mb4
  17.     collation-server=utf8mb4_general_ci
  18.     default-storage-engine=INNODB
  19.     sort_buffer_size=256MB
  20.     lower_case_table_names=1
  21.     default-time-zone='+8:00'
复制代码
  mysql的参数表明: 
        # mysql客户端默认字符集
    default-character-set=utf8
    [mysqld]
    # 数据库文件位置
    datadir=/var/lib/mysql
    # 允许最大毗连数
    max_connections=1000
    # innodb的dml操作的行级锁的等待时间
    innodb_lock_wait_timeout=500
    # 设置mysql服务端默认字符集
    character-set-server=utf8mb4
    # 默认创建新数据的新建排序规则
    collation-server=utf8mb4_general_ci
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    # 缓存巨细
    sort_buffer_size=256MB
    # 巨细写敏感设置项0为敏感,1为不敏感
    lower_case_table_names=1
    # 选择正8区
    default-time-zone='+8:00'
    应用configmap资源:
  1. # kubectl apply -f mysql-db-cm.yaml
复制代码
  检察configmap:
  1. # kubectl get cm -n dev
复制代码
3、部署deployment的mysql服务:

    mysql-deploy.yaml设置内容:
  1. kind: Deployment
  2. metadata:
  3.   name: mysql-db-okbny
  4.   namespace: dev
  5.   labels:
  6.     app: mysql-db-okbny
  7.     name: mysql-db
  8.     version: v8.0.2
  9.   annotations:
  10.     deployment.kubernetes.io/revision: '6'
  11.     sidecar.istio.io/inject: 'false'
  12. spec:
  13.   replicas: 1
  14.   selector:
  15.     matchLabels:
  16.       app: mysql-db-okbny
  17.       name: mysql-db
  18.   template:
  19.     metadata:
  20.       labels:
  21.         app: mysql-db-okbny
  22.         name: mysql-db
  23.         version: v8.0.2
  24.       annotations:
  25.         cni.projectcalico.org/ipv4pools: '["172.25.0.0/16"]'
  26.         sidecar.istio.io/inject: 'false'
  27.         system/container-registry-map: '{"mysql-db":"default"}'
  28.         system/registry: default
  29.         v1.multus-cni.io/default-network: kube-system/calico@eth0
  30.     spec:
  31.       volumes:
  32.         - name: db-mysql-cm
  33.           configMap:
  34.             name: db-mysql-cm
  35.             defaultMode: 420
  36.         - name: db-mysql-pvc
  37.           persistentVolumeClaim:
  38.             claimName: db-mysql-pvc
  39.       containers:
  40.         - name: mysql-db
  41.           image: 'dockerhub.jiang.com/jiang-public/mysql:8.0.20-stjh'
  42.           ports:
  43.             - containerPort: 3306
  44.               protocol: TCP
  45.           env:
  46.             - name: MYSQL_ROOT_PASSWORD
  47.               value: foura@1234
  48.           resources:
  49.             limits:
  50.               cpu: '2'
  51.               memory: 2Gi
  52.             requests:
  53.               cpu: '1'
  54.               memory: 1Gi
  55.           volumeMounts:
  56.             - name: db-mysql-cm
  57.               mountPath: /etc/my.cnf
  58.               subPath: my.cnf
  59.             - name: db-mysql-pvc
  60.               mountPath: /var/lib/mysql
  61.           livenessProbe:
  62.             exec:
  63.               command:
  64.                 - sh
  65.                 - '-c'
  66.                 - 'mysqladmin -uroot -p${MYSQL_ROOT_PASSWORD} ping'
  67.             initialDelaySeconds: 30
  68.             timeoutSeconds: 5
  69.             periodSeconds: 10
  70.             successThreshold: 1
  71.             failureThreshold: 3
  72.           terminationMessagePath: /dev/termination-log
  73.           terminationMessagePolicy: File
  74.           imagePullPolicy: IfNotPresent
  75.           securityContext:
  76.             privileged: false
  77.       restartPolicy: Always
  78.       terminationGracePeriodSeconds: 30
  79.       dnsPolicy: ClusterFirst
  80.       serviceAccountName: default
  81.       serviceAccount: default
  82.       securityContext: {}
  83.   strategy:
  84.     type: Recreate
  85.   minReadySeconds: 10
  86.   revisionHistoryLimit: 10
  87.   progressDeadlineSeconds: 600
复制代码
  应用deploy资源: 
  1. # kubectl apply -f mysql-deploy.yaml
复制代码
  检察deploy的mysql服务:
  1. # kubectl get -f deploy
复制代码
 4、部署service的mysql服务:

    mysql-db-service的服务设置内容:
  1. kind: Service
  2. metadata:
  3.   name: mysql-db
  4.   namespace: dev
  5.   labels:
  6.     name: mysql-db
  7.     system/appName: dev
  8.   annotations:
  9.     binding_domains: ''
  10.     system/https: 'false'
  11.     system/lbgroup: group-dgdxw
  12.     system/ruleComment: ''
  13.     system/ruleName: db-mysql
  14. spec:
  15.   ports:
  16.     - name: tcp-port-0
  17.       protocol: TCP
  18.       port: 3306
  19.       targetPort: 3306
  20.   selector:
  21.     name: mysql-db
  22.   type: ClusterIP
  23.   sessionAffinity: None
复制代码
应用service资源:
  1. # kubectl apply -f mysql-db-service.yaml
复制代码
检察service资源:
  1. # kubectl get svc
复制代码
三、登入mysql数据库:




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4