---
title: 简介
description: "本文提供K8s部署MGR（MySQL Group Replication）的方案。该方案采用K8s作为容器管理平台，K8s使用Pod作为调度单元，一个Pod可包含一个或多个容器，同一Pod内的容器共享IP地址和端口，始终位于同一位置并共同调度。本文中，每个Pod仅包含一个容器，因此不对Pod与容器进行严格区分。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmysqlmgr_03_0001.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmysqlmgr_03_0001.html
indexId: 82757da5fedb20b84517f8d24d4f73423c80327b04674f42346b7240783d78cf72
---
# 简介

本文提供K8s部署MGR（MySQL Group Replication）的方案。该方案采用K8s作为容器管理平台，K8s使用Pod作为调度单元，一个Pod可包含一个或多个容器，同一Pod内的容器共享IP地址和端口，始终位于同一位置并共同调度。本文中，每个Pod仅包含一个容器，因此不对Pod与容器进行严格区分。

方案中采用Kube-OVN作为K8s的网络插件，通过Kube-OVN实现每个Pod配置有固定的IP地址和MAC地址，即使Pod重新部署，其IP地址和MAC地址也不变。外部网络可通过service访问MySQL Pod，亦可配置静态路由以直接访问MySQL Pod的IP地址。

本文中MySQL MGR采用一主两备的部署方式，基于性能考虑，本示例采用计算节点的本地存储作为MySQL的数据及配置文件的存储位置。这需要将MySQL Pod与计算节点绑定部署，避免K8s调度使MySQL Pod漂移到其他计算节点而找不到数据的问题。通过K8s限制MySQL Pod在单个NUMA节点上运行，以提升MySQL运行的性能。组网如图1所示，图中涉及的相关术语解释如表1所示。

图1 基于K8s部署MySQL MGR组网图

本文以物理机192.168.200.10作为K8s主节点，192.168.200.218、192.168.200.220和192.168.200.222作为K8s计算节点，3个计算节点分别部署mysql-1、mysql-2和mysql-3，以mysql-1作为主库，mysql-2和mysql-3作为从库，构成一主两备的MySQL MGR集群。


**表1 术语解释**

| 术语 | 说明 |
| --- | --- |
| Docker | 一种开源的实现容器虚拟化的引擎。 |
| 镜像（Image） | 一个只读模板，用于指示创建容器。镜像分层（layers）构建的，而定义这些层次的文件叫Dockerfile。 |
| 容器（Containers） | 镜像的可运行的实例。 |
| K8s（Kubernetes） | 用于自动部署、扩展和管理“容器化（containerized）应用程序”的开源系统。 |
| 主节点（master） | K8s中负责控制和调度等功能的中心节点。 |
| 计算节点（worker） | K8s中负责业务负载的节点，每个计算节点可被主节点分配工作负载。 |
| Kube\-OVN | 一种基于Open vSwitch的开源的K8s网络插件。 |
| Pod | Kubernetes的基本调度单元称为“Pod”，Pod中承载着运行业务程序的容器。 |
| service | Kubernetes提供外部访问的一种资源，连接外部访问到Pod。 |
| MySQL Pod | 部署了MySQL服务程序的Pod。 |
| MGR（MySQL Group Replication） | MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案。 |
