首页 > 数据库 >云原生之在kubernetes集群下部署mysql应用

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

时间:2024-04-18 19:44:23浏览次数:29  
标签:原生 ago kubernetes 8d Running master mysql k8s

一、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-master 192.168.3.201 centos7.6 v1.23.1 master节点
k8s-node01 192.168.3.202 centos7.6 v1.23.1 worker节点
k8s-node02 192.168.3.203 centos7.6 v1.23.1 worker节点

三、检查本地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 
[root@k8s-master mysql]# cat mysql.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
  app: mk-mysql
name: mk-mysql
namespace: monkeyk
spec:
replicas: 1
selector:
  matchLabels:
    app: mk-mysql
template:
  metadata:
    labels:
      app: mk-mysql
      provider: monkeyk
      group: com.monkeyk
  spec:
    volumes:
    - name: mk-mysql-data
      persistentVolumeClaim:
        claimName: mk-mysql-data
    containers:
    - env:
      - name: MYSQL_ROOT_PASSWORD
        value: "666666"
      - name: MYSQL_USER
        value: "monkeyk"
      - name: MYSQL_PASSWORD
        value: "666666"
      image: "mysql:5.6"
      imagePullPolicy: IfNotPresent
      name: mk-mysql
      ports:
      - containerPort: 3306
        protocol: TCP
        name: http
      volumeMounts:
      - name: mk-mysql-data
        mountPath: /var/lib/mysql
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mk-mysql-data
namespace: monkeyk
annotations:
  volume.beta.kubernetes.io/storage-class: standard
spec:
accessModes:
  - ReadWriteMany
resources:
  requests:
    storage: 2Gi

---
kind: Service
metadata:
labels:
  expose: "true"
  app: mk-mysql
name: mk-mysql
namespace: monkeyk
spec:
type: NodePort
ports:
- name: http
  port: 80
  nodePort: 30802
  protocol: TCP
  targetPort: 3306
selector:
  app: mk-mysql

复制

五、创建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文件可作为新手小白后续进阶学习的基础模板。

标签:原生,ago,kubernetes,8d,Running,master,mysql,k8s
From: https://www.cnblogs.com/MarkGuo/p/18144257

相关文章

  • MySQL里 没有 boolean类型 怎么办?MySQL 里的 tinyint(1)
    之前我写的博客:https://www.cnblogs.com/del88/p/12538470.html由于之前的博客,没有使用markdown懒得重新排版了,重新写一篇;直接看AI给的答案吧:MySQL里没有boolean类型怎么办?在MySQL中,确实没有专门的boolean数据类型。不过,MySQL通常使用TINYINT(1)作为布尔值的替代。当使用T......
  • MYSQL 8 窗口函数的优点
    窗口函数的特点是可以分组,而且可以在分组内排序。另外,窗口函数不会因为分组而减少原表中的行数I这对我们在原表数据的基础上进行统计和排序非常有用。递归调用 复杂报表统计能力增强:窗口函数允许在数据集(窗口)内进行行级别的运算,而不会像传统聚合函数那样折叠所有行到单个输......
  • java-mysql-语法
    条件查询1.条件运算符:>,<,=,!=,<>2.按逻辑表达式:&&,||,!and,or,not &&和and:两个条件都为true.结果为true,反之为false ||和or:只要有一个条件为true,结果就为true,反之为false !和not:如果连接的条件本身就为false,结果为......
  • Kubernetes dashboardv2.7.0 无法访问解决过程
    问题及报错:K8S部署前端可视化dashboard插件成功后,但是运维一段时间后发现访问不了了。 排查过程:1、查看pod状态,发现拉镜像失败。我就很奇怪怎么又拉镜像了。1kubectlgetpod-nkubernetes-dashboard23kubectldescribepodkubernetes-dashboard-6c7ccbcf87-kz7q9-n......
  • Alibaba Cloud Linux 3.2104 LTS 安装mysql5.7.39
    1上传mysql安装包到linux服务器tar-zxvfmysql-5.7.39-linux-glibc2.12-x86_64.tar.gzmvmysql-5.7.39-linux-glibc2.12-x86_64mysql5.72创建mysql用户groupaddmysqluseradd-gmysql-s/sbin/nologinmysqlchown-Rmysql:mysqlmysql5.7 ......
  • Ubuntu部署有道QAnything(中间涉及到更换mysql容器端口)
    1、系统配置版本:Ubuntu20.04有两块3090的显卡2、下载相关文件首先下载源码,下载完成后解压得到QAnything-master文件夹github下载地址:https://github.com/netease-youdao/qanythinggitee下载地址:https://gitee.com/netease-youdao/QAnything?_from=gitee_search下载embed......
  • 原生js弹字效果
    效果预览:手速不够快,实际上是整体都是一个个崩出来的<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><divstyle="width:100%;margin:0pxauto&q......
  • 当 mysql-connector-java-5 遇上 MySQL8,终究还是错付了 → 门当户对真的很重要!
    开心一刻今天,老婆给我发消息老婆:老公,儿子从隔壁邻居家回来了老婆:是先打还是先洗?我:先洗吧,万一打错人了呢老婆:先洗脸吧,没错就边打边洗起因在我们的固有认知中, mysql-connector-java-5.x.x 连接的是 MySQL5 ,而 mysql-connector-java-8.x.x 连......
  • Failing package is: mysql-community-server-5.7.44-1.el7.x86_64 GPG Keys are con
    Failingpackageis:mysql-community-server-5.7.44-1.el7.x86_64GPGKeysareconfiguredas:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql  执行 wget--quiet--output-document-https://repo.mysql.com/RPM-GPG-KEY-mysql-2022|gpg--no-default-keyring--keyr......
  • centos7 安装 Mysql 5.7.28,详细完整教程
    https://cloud.tencent.com/developer/article/1886339 1. 下载MySQLyum包wgethttp://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm复制2.安装MySQL源rpm-Uvhmysql57-community-release-el7-10.noarch.rpm复制3.安装MySQL服务端,需要等待一些......