概述
在传统的虚机/物理机环境里, 如果我们想要对一个有状态应用扩容, 我们需要做哪些步骤?
- 申请虚机/物理机
- 安装依赖
- 下载安装包
- 按规范配置主机名, hosts
- 配置网络: 包括域名, DNS, 虚 ip, 防火墙...
- 配置监控
今天虚机环境上出现了问题, 是因为 RabbitMQ 资源不足. 手动扩容的过程中花费了较长的时间.
但是在 K8S 上, 有状态应用的扩容就很简单, YAML 里改一下replicas
副本数, 等不到 1min 就扩容完毕.
当然, 最基本的: 下镜像, 启动 pod(相当于上边的前 3 步), 就不必多提. 那么, 还有哪些因素, 让有状态应用可以在 k8s 上快速扩容甚至自动扩容呢?
原因就是这两点:
- peer discovery +peer discovery 的 相关实现(通过 hostname, dns, k8s api 或其他)
- 可观察性 + 自动伸缩
我们今天选择几个典型的有状态应用, 一一梳理下:
- Eureka
- Nacos
- Redis
- RabbitMQ
- Kafka
- TiDB
K8S 上有状态应用扩容
在 Kubernetes 上, 有状态应用快速扩容甚至自动扩容很容易. 这得益于 Kubernetes 优秀的设计以及良好的生态. Kubernetes 就像是一个云原生时代的操作系统. 它自身就具有:
- 自动化工具;
- 内部服务发现 + 负载均衡
- 内部 DNS
- 和 Prometheus 整合
- 统一的声明式 API
- 标准, 开源的生态环境.
所以, 需要扩容, 一个 yaml 搞定全部. 包括上边提到的: 下载, 安装, 存储配置, 节点发现, 加入集群, 监控配置...
Eureka 扩容
标签:扩容,Service,Kubernetes,eureka,集群,Operator,软件,k8s,name From: https://www.cnblogs.com/east4ming/p/16962184.html