k8s kubernates部署mysql8.x集群

本文详细介绍了如何在Kubernetes v1.20.4平台上利用mysql-operator部署MySQL 8.0.29的InnoDBCluster,涉及环境准备、CRD和operator安装、集群创建、验证与配置,以及连接与验证步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介
基于k8s平台部署mysql inndb cluster。

版本说明:
1、mysql 8.0.29
2、mysql-operator 8.0.29-2.0.4
3、kubernates v1.20.4

官方参考:
1、MySQL集群架构图
在这里插入图片描述

2、官方参考文档
https://dev.mysql.com/doc/mysql-operator/en/mysql-operator-installation.html

在这里插入图片描述

实践如下

1、环境准备

step1 :下载yaml到本地,防止在线下载可能存在访问不了的情况。

https://raw.githubusercontent.com/mysql/mysql-operator/trunk/deploy/deploy-crds.yaml
https://raw.githubusercontent.com/mysql/mysql-operator/trunk/deploy/deploy-operator.yaml

step2:kubectl apply
deploy-crds.yaml

kubectl apply -f deploy-crds.yaml 

deploy-operator.yaml

 
kubectl apply -f deploy-operator.yaml

step3:验证mysql-operator是否正常运行

kubectl get deployment mysql-operator --namespace mysql-operator

2、部署MySQL InnoDB Cluster

2.1、创建namespace存在就不用创建

kubectl create namespace prod

2.2、指定当前上下文namespace

kubectl config set-context --current --namespace=prod

在这里插入图片描述

2.3、创建secret

kubectl create secret generic mysqlpwds --from-literal=rootUser=root --from-literal=rootHost=% --from-literal=rootPassword="123456"

在这里插入图片描述

2.4、创建InnoDBCluster配置文件

vim mycluster.yaml

apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: sysmysqlcluster
spec:
  secretName: mysqlpwds
  tlsUseSelfSigned: true
  instances: 3
  router:
    instances: 1

2.5、部署cluster

kubectl apply -f mycluster.yaml
在这里插入图片描述

kubectl get innodbcluster --watch
在这里插入图片描述
大概需要10分钟左右才会看到如下信息,具体取决于下载 mysql镜像的速度,请耐心等待。
在这里插入图片描述

2.6、获取服务描述

kubectl describe service sysmysqlcluster

在这里插入图片描述

2.7、获取服务列表

kubectl get service

在这里插入图片描述

kubeshpere管理后台截图

1、容器组信息
在这里插入图片描述
在这里插入图片描述

2、服务列表
在这里插入图片描述

3、存储卷
在这里插入图片描述

4、工作负载
在这里插入图片描述

在这里插入图片描述

5、配置中心
在这里插入图片描述
在这里插入图片描述

6、自定义资源
在这里插入图片描述

重要组件
1、mysql-router

在这里插入图片描述
在这里插入图片描述

2、mysql cluster
在这里插入图片描述

在这里插入图片描述

Connect with MySQL Shell

kubectl run --rm -it myshell --image=mysql/mysql-operator -- mysqlsh

kubectl --namespace prod exec -it myshell -- mysqlsh root@sysmysqlcluster --sql

在这里插入图片描述

验证mysql节点

在这里插入图片描述

验证主从是否同步
在这里插入图片描述

暴露路由端口提供外部访问

1、通过页面配置外网访问

在这里插入图片描述

在这里插入图片描述

Kubernetes (k8s) 集群部署MySQL 5.7.40通常涉及以下几个步骤: 1. **镜像准备**: - 创建一个Docker镜像,包含MySQL 5.7.40以及所需的运行配置。可以在基础镜像如`mysql:5.7`的基础上进行修改,添加必要的环境变量、数据卷等。 2. **YAML文件编写**: - 编写Deployment YAML文件,描述Pod的配置,包括副本数(replicas)、容器的定义(image, ports, environment variables等),以及存储持久化策略(PersistentVolumeClaim)。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: mysql-deployment spec: replicas: 3 # 设置三个实例提供高可用 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql-container image: your-mysql-5.7.40-image ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-root-password-secret key: password volumeMounts: - mountPath: /var/lib/mysql name: mysql-data volumes: - name: mysql-data persistentVolumeClaim: claimName: mysql-pvc ``` 3. **创建服务**: - 使用Service资源来暴露数据库访问端口,并定义服务的类型(例如ClusterIP)和标签选择器。 ```yaml apiVersion: v1 kind: Service metadata: name: mysql-service spec: selector: app: mysql ports: - protocol: TCP port: 3306 targetPort: 3306 type: ClusterIP ``` 4. **秘密管理**: - 创建一个Secret,用于存储数据库密码,避免直接暴露在YAML中。 ```yaml apiVersion: v1 kind: Secret metadata: name: mysql-root-password-secret data: password: <base64-encoded-password> ``` 5. **应用到集群**: - 将上述YAML文件应用到k8s集群,使用`kubectl apply -f <filename>.yaml`命令。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值