当前位置:   article > 正文

【云原生--K8S】 yaml文件部署Mysql数据库(一)_容器mysql得yaml文件指定数据库配置文件

容器mysql得yaml文件指定数据库配置文件


前言

在Linux系统下部署Mysql数据库,大家都比较熟悉,轻车熟路。但是如何在K8S环境部署Mysql数据库,却是一个全新的课题,涉及到数据的存储与同步,远比想像的复杂,下面我们将花几篇文章来详细探讨一下这个问题。本篇主要介绍如何通过yaml文件部署mysql,如何进入docker容器操作mysql,以及存在的问题。以下的演示都是基于minikube。


一、下载mysql镜像文件

执行docker search mysql命令查询mysql镜像文件
在这里插入图片描述
执行docker pull mysql:5.7命令下载5.7版本mysql镜像。
在这里插入图片描述
在这里插入图片描述

二、创建deployment和service

一个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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

执行kubectl apply -f mysql.yaml命令创建deployment和service。
在这里插入图片描述

三、进入docker容器操作mysql

执行docker ps -a命令查看docker中运行的容器,找到mysql的CONTAINER ID。
在这里插入图片描述
执行docker exec -it CONTAINERID bash命令进入容器。
在这里插入图片描述

四、Pod volumn存储无法持久化

在mysql中增加名为test的数据库。
在这里插入图片描述
删除pod,k8s会自动再启动一个pod。
在这里插入图片描述
再次进入新的容器查看mysql数据,已经没有test的数据库了。
在这里插入图片描述
在这里插入图片描述

五、删除deployment和service

在这里插入图片描述

总结

可见,Mysql正常部署的时候,数据是存放在Pod volumn中的,此时它的数据是无法持久化的。考虑到数据的持久化需求,K8S提供了PV和PVC机制,下一篇我们将重点探讨一下Mysql数据如何存放在PV中。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/161923
推荐阅读
相关标签
  

闽ICP备14008679号