首页 > 数据库 >基于 Kubernetes 部署 MySQL 数据库

基于 Kubernetes 部署 MySQL 数据库

时间:2023-07-28 15:57:54浏览次数:37  
标签:name Kubernetes 创建 数据库 MySQL yaml 复制 mysql

本文将介绍如何基于 Kubernetes 部署 MySQL 数据库。

创建服务 Service

创建一个 Service 为即将部署的 MySQL 数据库固定连接的 IP,同时提供负载均衡,下面是 mysql-service.yaml 文件的内容:

  yaml 复制代码
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  selector:
    app: mysql
  ports:
    - port: 3306

上述配置创建一个名称为 mysqlService 对象,它会将请求代理到使用 TCP 端口 3306,并且具有标签 app=mysql 的 Pod 上。

创建资源:

  bash 复制代码
kubectl create -f mysql-service.yaml

创建持久卷 PV

创建一个 MySQL 的持久卷 mysql-pv.yaml(当 Pod 不再存在时,Kubernetes 也会销毁临时卷;不过 Kubernetes 不会销毁 持久卷。):

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

创建资源:

  bash 复制代码
kubectl create -f mysql-pv.yaml

创建持久卷声明 PVC

持久卷是集群中的资源,而持久卷声明是对这些资源的请求,也被用来执行对资源的声明检查。下面我们将创建名称为 mysql-pvc 的持久卷声明 mysql-pvc.yaml

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

创建资源:

  bash 复制代码
kubectl create -f mysql-pvc.yaml

部署 MySQL

在 3306 端口上使用 MySQL 5.7 的镜像创建 Pod,mysql-deployment.yaml

  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

创建资源:

  bash 复制代码
kubectl create -f mysql-deployment.yaml

连接 MySQL

  bash 复制代码
kubectl run -it --rm --image=mysql:5.6 --restart=Never mysql-client -- mysql -hmysql -ppassword

作者:K8sCat
链接:https://juejin.cn/post/6972937193551724552
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:name,Kubernetes,创建,数据库,MySQL,yaml,复制,mysql
From: https://www.cnblogs.com/gaoyanbing/p/17587814.html

相关文章

  • 数据库数据恢复-断电导致Syabse数据库无法启动,存储页底层数据杂乱的数据恢复案例
    数据库恢复环境:Sybase版本:SQLAnywhere8.0。数据库故障:数据库所在的设备意外断电后,数据库无法启动。错误提示:使用SybaseCentral连接后报错:数据库故障分析:经过北亚企安数据恢复工程师检测,定位到数据库无法启动的原因:突然断电导致Sybase数据库无法正常回写数据,造成多个存......
  • mysql 中的 having 与 order by 的区别与联系举例说明
    HAVING和ORDERBY都是在查询语句中用于对结果进行排序的子句,但它们的使用场景和作用略有不同。区别:HAVING子句用于在GROUPBY子句后对分组结果进行筛选,只返回满足条件的分组。它通常与聚合函数一起使用,用于筛选分组后的结果集。HAVING子句是在分组后进行筛选,可以使用聚合函数和......
  • mysql 的左连结 右边结 内连结 外连结和全连结的区别及使用场景举例
    在MySQL中,左连接(LEFTJOIN)、右连接(RIGHTJOIN)、内连接(INNERJOIN)、外连接(OUTERJOIN)和全连接(FULLJOIN)是常用的连接操作,用于联接多个表。这些连接操作的区别如下:左连接(LEFTJOIN):返回左表中的所有记录,以及与右表中匹配的记录。如果右表没有匹配的记录,则返回NULL值。左连接使用L......
  • 写一条mysql更新数据的语句
    要更新MySQL数据库中的数据,你可以使用UPDATE语句。下面是一个示例代码,用于更新数据库中的数据:importmysql.connectordefupdate_data(connection,table,column,value,condition):cursor=connection.cursor()#构造更新数据的SQL语句update_query=f"UP......
  • 云原生|kubernetes|安全漏扫神器trivy的部署和使用
    前言:云原生领域内的安全漏扫工具有clair和trivy是比较常用的,而安全漏扫工具是可以和harbor这样的私有仓库集成的,自harbor-1.21版以后都是默认使用trivy这个漏扫工具的,而在此之前是使用clair的。那么,本文将就什么是trivy,trivy如何正确的部署,如何正确的使用做一个简单的探讨。一,......
  • mysql中子查询和连接操作的使用场景和区别是什么?请举例说明?
    MySQL中的子查询和连接操作都是用于联接多个表或查询结果,但它们有不同的使用场景和区别。子查询是指在一个查询中嵌套另一个查询,内部查询的结果作为外部查询的条件或数据源。子查询通常用于获取特定条件下的数据,或者用于计算某个字段的值。连接操作是指通过联接多个表来获取相关......
  • mysql中in的使用场景及用法举例说明?
    在MySQL中,IN运算符用于在WHERE子句中指定一个条件,以便从一个给定的列表中选择满足条件的值。IN运算符可以用于任何数据类型,包括数字、字符串和日期。下面是IN运算符的使用场景和用法的示例说明:使用IN运算符筛选特定值:查询订单表中订单状态为"已发货"或"已完成"的订单:SELECT......
  • mysql8.0环境的搭建(Linux)
    1.安装前说明1.1Linux系统及工具的准备。安装并启动好两台虚拟机:CentOS7安装有远程访问centOS系统的工具CentOS6和CentOS7在MySQL的使用中的区别默认防火墙:CentOS6是iptables;CentOS7是firewalld;启动服务的命令:CentOS6是servicemysqldstart;CentOS7是systemctlstart......
  • Mysql高级4-索引的使用规则
    一、最左前缀法则如果索引了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列,如果跳跃某一列,索引将部分失效(后面的字段索引失效)示例1:account_transaction表中创建一个联合索引,使用method字段+trader_staff_id字段+operat......
  • MySQL之锁
    MySQL之锁全局锁介绍全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。其典型的使用场景是做全库的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据的完整性演示特点数据库中加全局锁,......