iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL on k8s 云原生环境部署
  • 302
分享到

MySQL on k8s 云原生环境部署

2024-04-02 19:04:59 302人浏览 独家记忆
摘要

目录一、概述二、开始部署(一主两从)1)添加源2)修改配置3)开始安装4)测试验证5)prometheus监控6)卸载一、概述 Mysql是一个关系型数据库管理系统,由瑞典mysql AB 公司开发,属于 oracle

一、概述

Mysql是一个关系型数据库管理系统,由瑞典mysql AB 公司开发,属于 oracle 旗下产品。Mysql 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。这里主要讲mysql部署在k8s上,mysql部署在k8s上的优势主要有以下几点:

  • 资源隔离
  • 动态弹性扩缩容
  • 环境一致性
  • 运维方便

官方文档:docs.oracle.com/en-us/iaas/… MySQL 原理介绍也可以参考我这篇文章:MySQL原理介绍

MySQL on k8s 云原生环境部署

二、开始部署(一主两从)

MySQL on k8s 云原生环境部署

1)添加源

helm repo add bitnami https://charts.bitnami.com/bitnami
helm pull bitnami/mysql
tar -xf mysql-9.3.3.tgz

2)修改配置

  • 修改mysql/values.yaml
...
image:
  reGIStry: myharbor.com
  repository: bigdata/mysql
  tag: 8.0.30-Debian-11-r15
...
architecture: replication
...
primary:
  persistence:
    enabled: true
    size: 10Gi
    storageClass: "mysql-local-storage"
    # 目录需要提前在宿主机上创建
    local:
    - name: mysql-0
      host: "local-168-182-110"
      path: "/opt/bigdata/servers/mysql/data/data1"
  service:
    type: nodePort
    nodePorts:
      mysql: "30306"
secondary:
  replicaCount: 2
  persistence:
    enabled: true
    size: 10Gi
    storageClass: "mysql-local-storage"
    # 目录需要提前在宿主机上创建
    local:
    - name: mysql-1
      host: "local-168-182-111"
      path: "/opt/bigdata/servers/mysql/data/data1"
    - name: mysql-2
      host: "local-168-182-112"
      path: "/opt/bigdata/servers/mysql/data/data1"
  service:
    type: NodePort
    nodePorts:
      mysql: "30307"
...
metrics:
  ## @param metrics.enabled Start a side-car prometheus exporter
  ##
  enabled: true
  image:
    registry: myharbor.com
    repository: bigdata/mysqld-exporter
    tag: 0.14.0-debian-11-r33
  • 添加mysql/templates/pv.yaml
{{- range .Values.primary.persistence.local }}
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: {{ .name }}
  labels:
    name: {{ .name }}
spec:
  storageClassName: {{ $.Values.primary.persistence.storageClass }}
  capacity:
    storage: {{ $.Values.primary.persistence.size }}
  AcceSSModes:
    - ReadwriteOnce
  local:
    path: {{ .path }}
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - {{ .host }}
---
{{- end }}
{{- range .Values.secondary.persistence.local }}
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: {{ .name }}
  labels:
    name: {{ .name }}
spec:
  storageClassName: {{ $.Values.secondary.persistence.storageClass }}
  capacity:
    storage: {{ $.Values.secondary.persistence.size }}
  accessModes:
    - ReadWriteOnce
  local:
    path: {{ .path }}
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - {{ .host }}
---
{{- end }}
  • 添加mysql/templates/storage-class.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: {{ .Values.primary.persistence.storageClass }}
provisioner: kubernetes.io/no-provisioner

3)开始安装

# 创建持久化目录
mkdir -p /opt/bigdata/servers/mysql/data/data1
# 先准备好镜像
Docker pull docker.io/bitnami/mysql:8.0.30-debian-11-r15
docker tag docker.io/bitnami/mysql:8.0.30-debian-11-r15 myharbor.com/bigdata/mysql:8.0.30-debian-11-r15
docker push myharbor.com/bigdata/mysql:8.0.30-debian-11-r15
# mysqld-exporter
docker pull docker.io/bitnami/mysqld-exporter:0.14.0-debian-11-r33
docker tag docker.io/bitnami/mysqld-exporter:0.14.0-debian-11-r33 myharbor.com/bigdata/mysqld-exporter:0.14.0-debian-11-r33
docker push myharbor.com/bigdata/mysqld-exporter:0.14.0-debian-11-r33
# 开始安装
helm install mysql ./mysql -n mysql --create-namespace

NOTES

NAME: mysql
LAST DEPLOYED: Mon Sep 19 23:57:18 2022
NAMESPACE: mysql
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mysql
CHART VERSION: 9.3.3
APP VERSION: 8.0.30
** Please be patient while the chart is being deployed **
Tip:
  Watch the deployment status using the command: kubectl get pods -w --namespace mysql
Services:
  echo Primary: mysql-primary.mysql.svc.cluster.local:3306
  echo Secondary: mysql-secondary.mysql.svc.cluster.local:3306
Execute the following to get the administrator credentials:
  echo Username: root
  MYSQL_ROOT_PASSWord=$(kubectl get secret --namespace mysql mysql -o JSONpath="{.data.mysql-root-password}" | base64 -d)
To connect to your database:
  1. Run a pod that you can use as a client:
      kubectl run mysql-client --rm --tty -i --restart='Never' --image  myharbor.com/bigdata/mysql:8.0.30-debian-11-r15 --namespace mysql --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash
  2. To connect to primary service (read/write):
      mysql -h mysql-primary.mysql.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"
  3. To connect to secondary service (read-only):
      mysql -h mysql-secondary.mysql.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"
To access the MySQL Prometheus metrics from outside the cluster execute the following commands:
    kubectl port-forward --namespace mysql svc/mysql-metrics 9104:9104 &
    curl Http://127.0.0.1:9104/metrics

MySQL on k8s 云原生环境部署

查看pod状态

kubectl get pods,svc -n mysql -owide

MySQL on k8s 云原生环境部署

4)测试验证

【温馨提示】从库(slave)是只读的。就是简单的读写测试,还有就是pod挂了,能否正常拉起等等。这个测试验证比较简单。这里就不一步步的演示了。

5)Prometheus监控

Prometheus:

MySQL on k8s 云原生环境部署

可以通过命令查看采集数据

kubectl get --raw http://10.244.0.74:9104/metrics
kubectl get --raw http://10.244.1.125:9104/metrics
kubectl get --raw http://10.244.2.178:9104/metrics

Grafana 账号:admin,密码通过下面命令获取

kubectl get secret --namespace grafana grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

导入grafana模板,集群资源监控:7362 官方模块下载地址:grafana.com/grafana/das…

MySQL on k8s 云原生环境部署

6)卸载

helm uninstall mysql -n mysql 
kubectl delete pod -n mysql `kubectl get pod -n mysql |awk 'NR>1{print $1}'` --force
kubectl patch ns mysql -p '{"metadata":{"finalizers":null}}'
kubectl delete ns mysql --force

这里只是实现了mysql 的主从,没有实现高可用,官方目前没有出mysql ok k8s高可用的实现方案,虽然网上也有高可用的实现方案,但是我们公司没真正去落地使用,所以不予评价网上的高可用的方案,有兴趣的小伙伴可以去试试,其实mysql在大数据领域一般只是作为元数据存储,主挂了,影响不是很大。目前也在研究mysql on k8s 的高可用实现方案,如果后期有mysql on k8s高可用真正落地到生产环境中使用,到时候再来分享一下。

MySQL on k8s 环境部署就先这里了,更多关于MySQL k8s 环境部署的资料请关注我们其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL on k8s 云原生环境部署

本文链接: https://www.lsjlt.com/news/34183.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQLonk8s云原生环境部署
    目录一、概述二、开始部署(一主两从)1)添加源2)修改配置3)开始安装4)测试验证5)Prometheus监控6)卸载一、概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL...
    99+
    2024-04-02
  • 【云原生 • Docker】mysql、tomcat、nginx、redis 环境部署
    注意在应用部署之前,docker 服务必须是开启状态 systemctl start docker。 目录 一、MySQL 部署 二、Tomcat 部署 三、Nginx 部署 四、Redis 部署 一、MySQL 部署 1. 拉取 My...
    99+
    2023-10-03
    云原生 docker tomcat redis mysql
  • 生产级K8S基础环境部署配置流程
    生产级K8S基础环境部署: 配置本地hosts文件(有多少台,配置多少台) vim /etc/hosts 192.168.1.5 k8s-master 配置yum源(有自己的yum...
    99+
    2024-04-02
  • 关于k8s环境部署mysql主从的问题
    一、通过yaml部署mysql 1、mysql-configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: mys...
    99+
    2024-04-02
  • MongoDB在云原生环境中怎么部署与管理
    在云原生环境中部署和管理MongoDB通常可以通过以下几种方式: 使用托管服务:许多云服务提供商都提供了托管的MongoDB服务,...
    99+
    2024-05-07
    MongoDB
  • nodejs生产环境部署vue
    Node.js 生产环境部署 Vue在开发 Vue.js 应用程序时,部署您的应用程序是至关重要的一步。本文将介绍如何在生产环境中部署一个 Vue.js 应用程序,使用 Node.js 作为运行时环境。在本文中,我们将深入了解如何将应用程序...
    99+
    2023-05-14
  • 生产环境部署python代码(djang
    基础环境不做介绍,在django开发web项目完成后,一直使用django自带的服务器进行调试:python manage.py runserver 0.0.0.0:8080 这个服务器在开发时使用,实际生产则不能满足,要使用uwsgi把动...
    99+
    2023-01-31
    代码 环境 python
  • Django + Uwsgi + Nginx 的生产环境部署
    使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了。比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下dj...
    99+
    2023-01-30
    环境 Django Uwsgi
  • 【云原生| Docker】 部署 Django & mysql 项目
    🤵‍♂️ 个人主页: @计算机魔术师 👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。 🌐 推荐一款找工作神器网站: 点...
    99+
    2023-09-01
    云原生 docker django python 后端
  • LNMP(nginx php-fpm mysql) 环境部署——mysql
    前言:上一篇已经说过部署的初衷,如有不清楚的,可以看下上篇的前言或在评论区留言给我。此篇主要介绍安装mysql的方法,php会要用到mysql连接数据库准备:mysql官网:mysql.com源码目录:/u...
    99+
    2024-04-02
  • tomcat+mysql怎么部署jsp环境
    tomcat+mysql怎么部署jsp环境,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。tomcat+mysql部署jsp环境我的JSP源...
    99+
    2024-04-02
  • ubuntu Django + Uwsgi + Nginx 的生产环境部署
    使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了。比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下dj...
    99+
    2023-01-31
    环境 Django ubuntu
  • 怎么用tomcat+mysql部署jsp环境
    本篇内容介绍了“怎么用tomcat+mysql部署jsp环境”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • 如何部署Django应用到生产环境
    部署Django 应用到生产环境通常需要以下步骤: 配置服务器:选择合适的服务器,如Nginx或Apache,并安装相关软件。 设...
    99+
    2024-04-02
  • springboot生产环境热部署怎么实现
    在Spring Boot中,可以通过使用Spring Boot DevTools库来实现生产环境的热部署。下面是一些实现的步骤: ...
    99+
    2023-10-25
    springboot
  • Spinnaker生产环境如何安装部署监控
    小编给大家分享一下Spinnaker生产环境如何安装部署监控,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 架构分析Haly...
    99+
    2024-04-02
  • 阿里云ECS环境部署指南
    简介:本文将详细介绍如何在阿里云上部署和管理ECS环境。我们将涵盖从创建ECS实例到配置网络、安装操作系统、安装软件和服务的所有步骤。 正文:创建ECS实例在阿里云控制台上,选择“ECS实例”选项,然后点击“创建实例”。在创建实例页面,您需...
    99+
    2024-01-26
    阿里 环境 指南
  • Kubernetes(K8S)容器集群管理环境完整部署详细教程
    以下是一个完整的Kubernetes容器集群管理环境的部署详细教程:1. 部署集群节点:- 确保每个节点上安装了Docker和Kub...
    99+
    2023-08-14
    Kubernetes
  • java生产环境热部署的方法是什么
    Java生产环境热部署是指在不停止应用程序服务的情况下更新应用程序代码或配置文件,使新的代码或配置生效。以下是几种常见的Java生产...
    99+
    2024-04-02
  • nodejs生产环境部署vue的方法是什么
    这篇“nodejs生产环境部署vue的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“nodejs生产环境部署vue...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作