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!