Home  >  Article  >  Database  >  What is Kubernetes? How to deploy a MySQL database based on it

What is Kubernetes? How to deploy a MySQL database based on it

藏色散人
藏色散人forward
2021-11-03 16:30:551874browse

Kubernetes is a container orchestration engine open sourced by Google. It supports automated deployment, large-scale scalability, and application container management. When you deploy an application in a production environment, you typically deploy multiple instances of the application to load balance application requests.

In Kubernetes, we can create multiple containers, each container runs an application instance, and then use the built-in load balancing strategy to realize the management, discovery, and access of this group of application instances, and these Details do not require operation and maintenance personnel to perform complex manual configuration and processing.

This article will introduce how to deploy a MySQL database based on Kubernetes.

Create Service Service

Create a Service to fix the IP address of the MySQL database to be deployed and provide load balancing. The following is the content of the mysql-service.yaml file. :

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  selector:
    app: mysql
  ports:
    - port: 3306

The above configuration creates a Service object named mysql, which will proxy the request to the Pod using TCP port 3306 and having the label app=mysql.

Create resources:

kubectl create -f mysql-service.yaml

Create a persistent volume PV

Create a MySQL persistent volume mysql-pv.yaml (when the Pod no longer exists , Kubernetes will also destroy temporary volumes; however, Kubernetes will not destroy persistent volumes.):

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce # 卷可以被一个节点以读写方式挂载
  hostPath:
    path: "/mnt/data"

Create resources:

kubectl create -f mysql-pv.yaml

Create persistent volume declaration PVC

Persistent volumes are resources in the cluster, and persistent volume claims are requests for these resources and are also used to perform claim checks on resources. Below we will create a persistent volume declaration mysql-pvc.yaml named mysql-pvc:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

Create resources:

kubectl create -f mysql-pvc.yaml

Deploy MySQL

Create a Pod using the MySQL 5.7 image on port 3306, mysql-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - image: mysql:5.7
          name: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD # 生产环境中请使用 secret
              value: password
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-data
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-data
          persistentVolumeClaim:
            claimName: mysql-pvc

Create resources:

kubectl create -f mysql-deployment.yaml

Connect to MySQL

kubectl run -it --rm --image=mysql:5.6 --restart=Never mysql-client -- mysql -hmysql -ppassword

Recommended learning: "mysql video tutorial"

The above is the detailed content of What is Kubernetes? How to deploy a MySQL database based on it. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:juejin.im. If there is any infringement, please contact admin@php.cn delete