Home > Database > Mysql Tutorial > body text

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

藏色散人
Release: 2021-11-03 16:30:55
forward
1937 people have browsed it

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
Copy after login

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
Copy after login

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"
Copy after login

Create resources:

kubectl create -f mysql-pv.yaml
Copy after login

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
Copy after login

Create resources:

kubectl create -f mysql-pvc.yaml
Copy after login

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
Copy after login

Create resources:

kubectl create -f mysql-deployment.yaml
Copy after login

Connect to MySQL

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

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!

Related labels:
source:juejin.im
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!