有状态应用如何在k8s上快速扩容甚至自动扩容

2022-04-21 14:46:52 浏览数 (1)

概述

在传统的虚机/物理机环境里, 如果我们想要对一个有状态应用扩容, 我们需要做哪些步骤?

  1. 申请虚机/物理机
  2. 安装依赖
  3. 下载安装包
  4. 按规范配置主机名, hosts
  5. 配置网络: 包括域名, DNS, 虚ip, 防火墙...
  6. 配置监控

今天虚机环境上出现了问题, 是因为RabbitMQ资源不足. 手动扩容的过程中花费了较长的时间.

但是在K8S上, 有状态应用的扩容就很简单, YAML里改一下replicas副本数, 等不到1min就扩容完毕.

当然, 最基本的: 下镜像, 启动pod(相当于上边的前3步), 就不必多提. 那么, 还有哪些因素, 让有状态应用可以在k8s上快速扩容甚至自动扩容呢?

原因就是这两点:

  1. peer discovery peer discovery的 相关实现(通过hostname, dns, k8s api或其他)
  2. 可观察性 自动伸缩

我们今天选择几个典型的有状态应用, 一一梳理下:

  1. Eureka
  2. Nacos
  3. Redis
  4. RabbitMQ
  5. Kafka
  6. TiDB

K8S上有状态应用扩容

在Kubernetes上, 有状态应用快速扩容甚至自动扩容很容易. 这得益于Kubernetes 优秀的设计以及良好的生态. Kubernetes就像是一个云原生时代的操作系统. 它自身就具有:

  1. 自动化工具;
  2. 内部服务发现 负载均衡
  3. 内部DNS
  4. 和Prometheus整合
  5. 统一的声明式 API
  6. 标准, 开源的生态环境.

所以, 需要扩容, 一个yaml搞定全部. 包括上边提到的: 下载, 安装, 存储配置, 节点发现, 加入集群, 监控配置...

Eureka 扩容

0 人点赞