博客
关于我
这应该是最适合国内用户的K3s HA方案
阅读量:440 次
发布时间:2019-03-06

本文共 2127 字,大约阅读时间需要 7 分钟。

K3s HA 实现指南:基于阿里云 RDS 和 SLB 的高可用架构

在生产环境中,高可用性是 Kubernetes(K3s)无论如何都无法回避的问题。随着技术的不断进步,K3s 的高可用(HA)方案也得到了多次优化,现已形成了一套较为稳定的解决方案。本文将详细介绍如何利用阿里云提供的RDS和SLB实现K3s的高可用架构。

HA 方案概述

目前,K3s官方提供了两种高可用方案:

  • 嵌入式数据库的高可用(实验):目前仍处于实验阶段,故本文不做详细介绍,建议关注官方文档。
  • 外部数据库实现高可用:通过搭建一个高可用的外置数据库,K3s支持多种数据库类型(如SQLite、etcd、MySQL、PostgreSQL等),不同数据存储适用于不同的场景。
  • 在国内公有云环境中,阿里云是最受欢迎的选择之一。通过在阿里云上利用虚拟机搭建K3s HA,并对接阿里云的RDS,可以避免自行维护数据库的麻烦。本文选择MySQL作为实践目标,类似于PostgreSQL,本文将不做赘述。


    阿里云实例创建

    为了实现K3s HA,至少需要两台实例。进入阿里云控制台,按照以下步骤创建实例:

  • 在实例管理中,点击“创建实例”,选择合适的实例类型(推荐选择“ ecs.t5.large ”)。
  • 在网络配置中,指定入站和出站的安全组规则,确保K3s节点之间的通信无阻碍。
  • 完成实例创建后,获取实例的内网IP地址,备用于后续数据库配置。

  • 阿里云 RDS 配置

    在阿里云RDS中创建MySQL实例,按照以下步骤操作:

  • 实例类型选择:选择“MySQL 5.7”版本,因为这是K3s官方支持的版本。
  • 白名单设置:在RDS实例的安全组中,添加K3s实例的内网IP,例如rm-2ze64ke7q33bkq3yt.mysql.rds.aliyuncs.com
  • 账号权限设置:创建普通账号(如ksd),并授予相应的权限。
  • 数据库创建:在RDS控制台中,创建名为k3s的数据库,并为账号ksd授予访问权限。
  • 数据库参数优化:在RDS实例的参数模板中,将innodb_large_prefix设置为“ON”,以避免K3s启动时的错误提示。

  • K3s HA 实现

    在两台K3s master节点(如k3s-master-1k3s-master-2)上执行以下命令,完成K3s HA的配置:

    curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | \INSTALL_K3S_MIRROR=cn \K3S_DATASTORE_ENDPOINT='mysql://ksd:your_password@tcp(rm-2ze64ke7q33bkq3yt.mysql.rds.aliyuncs.com:3306)/k3s' \sh -s - server

    执行完成后,K3s HA环境将已启动。


    SLB 提供统一访问入口

    为了为多个K3s master节点提供统一的访问入口,可以使用阿里云的SLB(负载均衡器)实现L4层负载均衡。以下是实现步骤:

  • 创建负载均衡实例:在阿里云控制台中,创建负载均衡实例,选择“SLB”的类型。
  • 绑定域名:将域名解绑到负载均衡实例,确保域名解析正确。
  • 负载均衡规则配置:在SLB控制台中,添加HTTP规则,将6443端口转发到后端的两台K3s master节点。
  • K3s master 节点配置:在K3s master节点的/etc/rancher/k3s/k3s.yaml中,将server地址修改为SLB的公网IP地址(如39.106.185.201)。

  • 验证节点连接

    完成上述配置后,验证K3s master节点是否能通过SLB访问。执行以下命令:

    kubectl get nodes

    如果出现以下错误:

    x509: certificate is valid for 10.43.0.1, 127.0.0.1, 172.17.207.15, 172.17.207.16, not 39.106.185.201

    这表明K3s master节点的证书不信任SLB的公网IP。为解决此问题,可以在安装命令中添加--tls-san参数,指定允许的SAN域名:

    curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | \INSTALL_K3S_MIRROR=cn \K3S_DATASTORE_ENDPOINT='mysql://ksd:your_password@tcp(rm-2ze64ke7q33bkq3yt.mysql.rds.aliyuncs.com:3306)/k3s' \sh -s - server \--tls-san 39.106.185.201

    重新启动K3s后,通过kubectl get nodes验证是否能成功连接到SLB。


    后 记

    本文仅介绍了基于阿里云SLB和RDS实现K3s HA的具体操作流程。虽然未对其他公有云环境进行详细测试,但理论上K3s HA方案在其他云平台上也是可行的。对于非公有云环境,建议根据实际需求选择适合的数据存储和高可用方案。

    转载地址:http://shbyz.baihongyu.com/

    你可能感兴趣的文章
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
    查看>>
    NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
    查看>>
    NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
    查看>>
    NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
    查看>>
    NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>
    NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
    查看>>
    NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
    查看>>
    NIH发布包含10600张CT图像数据库 为AI算法测试铺路
    查看>>
    Nim教程【十二】
    查看>>
    Nim游戏
    查看>>
    NIO ByteBuffer实现原理
    查看>>
    Nio ByteBuffer组件读写指针切换原理与常用方法
    查看>>
    NIO Selector实现原理
    查看>>