云原生之在kubernetes集群下部署Mysql应用

news/2024/10/21 7:44:10/

云原生之在kubernetes集群下部署mysql应用

  • 一、Mysql介绍
  • 二、kubernetes集群介绍
    • 1.k8s简介
    • 2.k8s架构图
  • 三、本次实践介绍
    • 1.本次实践简介
    • 2.本次环境规划
  • 三、检查本地k8s集群环境
    • 1.检查k8s各节点状态
    • 2.检查k8s版本
    • 3.检查k8s系统pod状态
  • 四、编辑mysql.yaml文件
  • 五、创建mysql应用
    • 1.应用mysql.yaml
    • 2.查看pod状态
  • 六、查看mysql服务IP
  • 七、外部客户端远程访问mysql
  • 八、本次实践总结

一、Mysql介绍

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。MySQL是一种开源的关系型数据库管理系统,可将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内,从而加快了访问速度并提高了灵活性。MySQL 使用了标准的 SQL 语言形式。支持大型的数据库,可以处理拥有上千万条记录的大型数据库。MySQL 还可用于多种系统中,且支持多种语言。

二、kubernetes集群介绍

1.k8s简介

kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

2.k8s架构图

kubernetes集群架构示意图

在这里插入图片描述

三、本次实践介绍

1.本次实践简介

1.在k8s集群环境中快速部署一个mysql应用服务,在个人环境中测试与学习;
2.本次实践环境为个人环境,生产环境请谨慎使用;
3.本次实践直接在yaml文件中写入数据库账号信息,方便以最快速度部署一个测试数据库服务;
4.如果了安全,可以使用k8s的Secret资源对象保存数据库的账号密码信息,来加强数据库的安全性;

2.本次环境规划

本次实践规划环境介绍

hostnameIP地址操作系统版本k8s版本角色
k8s-master192.168.3.201centos7.6v1.23.1master节点
k8s-node01192.168.3.202centos7.6v1.23.1worker节点
k8s-node02192.168.3.203centos7.6v1.23.1worker节点

三、检查本地k8s集群环境

1.检查k8s各节点状态

检查k8s各节点状态,确保k8s集群各节点状态正常。

[root@k8s-master ~]# kubectl get nodes 
NAME         STATUS   ROLES                  AGE    VERSION
k8s-master   Ready    control-plane,master   130d   v1.23.1
k8s-node01   Ready    <none>                 130d   v1.23.1
k8s-node02   Ready    <none>                 130d   v1.23.1

2.检查k8s版本

查看k8s的版本,注意部署应用时兼容的k8s版本。

[root@k8s-master ~]# kubectl version --short 
Client Version: v1.23.1
Server Version: v1.23.1

3.检查k8s系统pod状态

检查k8s集群的系统pod状态,确保所有系统pod运行正常。

[root@k8s-master ~]# kubectl get pods -n kube-system 
NAME                                       READY   STATUS    RESTARTS     AGE
calico-kube-controllers-7bc6547ffb-2nf66   1/1     Running   1 (8d ago)   130d
calico-node-8c4pn                          1/1     Running   1 (8d ago)   130d
calico-node-f28qq                          1/1     Running   1 (8d ago)   130d
calico-node-wmc2j                          1/1     Running   1 (8d ago)   130d
coredns-6d8c4cb4d-6gm4x                    1/1     Running   1 (8d ago)   130d
coredns-6d8c4cb4d-7vxlz                    1/1     Running   1 (8d ago)   130d
etcd-k8s-master                            1/1     Running   1 (8d ago)   130d
kube-apiserver-k8s-master                  1/1     Running   1 (8d ago)   130d
kube-controller-manager-k8s-master         1/1     Running   1 (8d ago)   130d
kube-proxy-8dfw8                           1/1     Running   1 (8d ago)   130d
kube-proxy-ghzrv                           1/1     Running   1 (8d ago)   130d
kube-proxy-j867z                           1/1     Running   1 (8d ago)   130d
kube-scheduler-k8s-master                  1/1     Running   1 (8d ago)   130d

四、编辑mysql.yaml文件

编辑mysql.yaml,该文件使用最简单方式部署了一个mysql应用服务。

[root@k8s-master mysql]# cat mysql.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: mysqlname: my-mysql
spec:replicas: 1selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:containers: # 定义容器部分- image: mysql:5.7name: mysqlports:- containerPort: 3306env:- name: MYSQL_ROOT_PASSWORDvalue: "123456"
---
apiVersion: v1
kind: Service
metadata:name: my-db
spec:ports:- port: 3306nodePort: 30011selector:app: mysqltype: NodePort 

五、创建mysql应用

1.应用mysql.yaml

应用mysql.yaml文件,快速创建部署一个数据库服务。


[root@k8s-master mysql]# kubectl apply -f mysql.yaml 
deployment.apps/my-mysql created
service/my-db created

2.查看pod状态

检查pod是否正常运行,确保pod运行状态正常。如果运行异常,可根据pod日志信息,判断故障。

[root@k8s-master ~]# kubectl get pods
NAME                      READY   STATUS    RESTARTS   AGE
my-mysql-9b877f47-nqf5f   1/1     Running   0          7m54s

六、查看mysql服务IP

查看svc资源对象,查看mysql的外部访问端口为30011

[root@k8s-master ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP          130d
my-db        NodePort    10.98.200.79   <none>        3306:30011/TCP   8m32s

七、外部客户端远程访问mysql

远程连接mysql服务,进入mysql数据库,确保能正常进入。


[root@server ~]# mysql -h 192.168.3.202 -P30011 -uroot -p123456
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36 MySQL Community Server (GPL)Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)mysql> 

八、本次实践总结

1.本次实践为之前在初学k8s时的学习笔记,旨在为新手小白快速部署一个mysql应用;
2.mysql的存储可以配置持久存储来保存数据,使用storageclass来配置持久存储;
3.安全性方面,可以配置secret来确保数据库的安全性;
4.还可以配置初始化容器,来检查pod的运行环境是否正常;
5.对于本次yaml文件,可以增加更多的功能及高级特性,进行不断的优化升级;
6.本次实践的yaml文件可作为新手小白后续进阶学习的基础模板。


http://www.ppmy.cn/news/48340.html

相关文章

Redis分布式锁有哪些缺点?如何解决?

目录 一、死锁问题&#xff1a; 二、锁竞争问题&#xff1a; 三、时效性问题&#xff1a; 四、单点故障问题&#xff1a; 五、高并发量下锁抢占时间长的问题 一、死锁问题&#xff1a; 因为每个客户端在设置锁过期时间时可能出现网络延迟等原因&#xff0c;有可能出现某个…

五项热门技术领域和应用场景

介绍五种当下比较热门的技术&#xff0c;分别是人工智能、云计算、数据分析、微服务和区块链。每种技术都有自己的定义、子领域、应用场景和学习难度。这些技术都有着广阔的发展前景和市场需求&#xff0c;对于想要从事或了解这些领域的人来说&#xff0c;都是很有价值的知识。…

centos7安装nginx的三种方式~yum源,源码,Docker

目录 1.yum安装&#xff1a;Centos7源默认没有nginx 2.源码安装&#xff1a; 3.Docker安装&#xff1a; 1.yum安装&#xff1a;Centos7源默认没有nginx 配置yum源&#xff1a; wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 查看nginx源&…

Vue中的路由导航

声明式路由导航 router官网-起步 声明式路由导航其实就是使用官方给的<router-link>路由导航标签直接进行路由跳转 <body> <div id"app"><!--<router-link>路由导航标签&#xff0c;用于找到path属性中url对应的组件&#xff0c;通过传入…

Spring的循环依赖

什么是循环依赖&#xff1f; 循环依赖其实就是循环引用&#xff0c;也就是两个或者两个以上的 bean 互相持有对方&#xff0c;最终形成闭环。比如 A 依赖于 B&#xff0c;B 依赖于 C&#xff0c;C 又依赖于 A。如下图&#xff1a; 注意&#xff0c;这里不是函数的循环调用&…

rk3568-rk809电池电量计

简介&#xff1a; RK809 集成在RK3568上的一个高性能的 PMIC&#xff08;(Power Management IC):电源管理集成电路&#xff09;&#xff0c;PMIC全称Power management integrated circuit&#xff0c;一般情况下是一颗独立于主控的芯片&#xff0c;集成了电源控制&#xff0c;电…

Nginx rewrite ——重写跳转

Nginx常见模块 http http块是Nginx服务器配置中的重要部分&#xff0c;代理、缓存和日志定义等绝大多数的功能和第三方模块的配置都可以放在这模块中。作用包括&#xff1a;文件引入、MIME-Type定义、日志自定义、是否使用sendfile传输文件、连接超时时间、单连接请求数上限等…

不讲废话普通人了解 ChatGPT——基础篇第一课

wx供重浩&#xff1a;创享日记 获取更多内容 文章目录 前言什么是 ChatGPT它是如何工作的ChatGPT 和其它机器人有什么不同 前言 不知道大家在第一次会使用 ChatGPT 并尝试和他对话时有没有感到震惊。当ChatGPT首次推出时&#xff0c;我立即被它的功能所吸引。 曾经在遇到繁杂…