前 言
在面向生产环境的实践中,高可用是我们无法避免的问题,K3s本身也历经多个版本的迭代,HA方案也进行了不断优化,形成了目前的比较稳定的HA方案。
目前官方提供两种HA方案:
-
嵌入式DB的高可用(实验)
-
使用外部数据库实现高可用
嵌入式DB的高可用目前还是实验性的,本文不过多介绍,请参考:
https://rancher.com/docs/k3s/latest/en/installation/ha-embedded/
使用外部数据库实现高可用需要搭建一个高可用的外置数据库,目前,K3s支持SQLite/etcd/MySQL/PostgreSQL/DQLite等datastore,不同的datastore面向不同的使用场景。
目前国内使用最多的公有云环境应该就是阿里云了,我们可以在阿里云上利用虚拟机搭建K3s HA,然后对接到阿里云的RDS,这样可以免去单独维护一套数据库的麻烦。本文选择大家熟知的MySQL来做HA的实践,PostgreSQL与MySQL类似,本文不再赘述。
架构图
如上图,终端用户访问SLB,SLB将流量分别转发到后端的两台K3s master HA。两台 K3s master 节点连接同一个RDS 创建的外置数据库。
创建阿里云实例
K3s 需要至少两台实例去组成HA,所以在阿里云上创建至少两台实例用作演示:
配置阿里云RDS
1、创建RDS实例,实例类型要选择MySQL 5.7
,该版本是K3s官方支持的版本,其他参数根据自身需求设置即可。
2、设置白名单,白名单的内容设置为你的K3s 实例的内网IP即可。设置成功后,我们将得到一个内网地址用作数据库连接:rm-2ze64ke7q33bkq3yt.mysql.rds.aliyuncs.com