赞
踩
在Linux系统下部署Mysql数据库,大家都比较熟悉,轻车熟路。但是如何在K8S环境部署Mysql数据库,却是一个全新的课题,涉及到数据的存储与同步,远比想像的复杂,下面我们将花几篇文章来详细探讨一下这个问题。本篇主要介绍如何通过yaml文件部署mysql,如何进入docker容器操作mysql,以及存在的问题。以下的演示都是基于minikube。
执行docker search mysql命令查询mysql镜像文件
执行docker pull mysql:5.7命令下载5.7版本mysql镜像。
一个yaml文件可以创建多个资源,只需要使用—分隔即可,编写mysql.yaml文件创建deployment和service:
apiVersion: apps/v1 #版本 kind: Deployment #创建资源的类型 metadata: #资源的元数据 name: mysql-dep #资源的名称,是元数据必填项 spec: #期望状态 replicas: 1 #创建的副本数量(pod数量),不填默认为1 selector: # matchLabels: app: mysql-pod template: #定义pod的模板 metadata: #pod的元数据 labels: #labels标签,必填一个 app: mysql-pod spec: #pod的期望状态 containers: #容器 - name: mysql #容器名称 image: mysql:5.7 #镜像 imagePullPolicy: IfNotPresent ports: #容器的端口 - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD value: "root" --- apiVersion: v1 #版本 kind: Service #创建资源的类型 metadata: #资源的元数据 name: mysql-svc #资源的名称,是元数据必填项 labels: #labels标签 app: mysql-svc spec: #期望状态 type: NodePort #服务类型 ports: #端口 - port: 3306 targetPort: 3306 #与containerPort一样 protocol: TCP nodePort: 30306 selector: app: mysql-pod
执行kubectl apply -f mysql.yaml命令创建deployment和service。
执行docker ps -a命令查看docker中运行的容器,找到mysql的CONTAINER ID。
执行docker exec -it CONTAINERID bash命令进入容器。
在mysql中增加名为test的数据库。
删除pod,k8s会自动再启动一个pod。
再次进入新的容器查看mysql数据,已经没有test的数据库了。
可见,Mysql正常部署的时候,数据是存放在Pod volumn中的,此时它的数据是无法持久化的。考虑到数据的持久化需求,K8S提供了PV和PVC机制,下一篇我们将重点探讨一下Mysql数据如何存放在PV中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。