云原生时代, Kubernetes 多集群架构初探
近年来,多集群架构已经成为“老生常谈”。我们喜欢高可用,喜欢异地多可用区,而多集群架构天生就具备了这样的能力。另一方面我们也希望通过多集群混合云来降低成本,利用到不同集群各自的优势和特性,以便使用不同集群的最新技术(如 AI、GPU 集群等)。就是因为这种种原因,多集群几乎成为了云计算的新潮流,而被谈及最多并且落地的多集群场景主要有这三类:
近年来,多集群架构已经成为“老生常谈”。我们喜欢高可用,喜欢异地多可用区,而多集群架构天生就具备了这样的能力。另一方面我们也希望通过多集群混合云来降低成本,利用到不同集群各自的优势和特性,以便使用不同集群的最新技术(如 AI、GPU 集群等)。就是因为这种种原因,多集群几乎成为了云计算的新潮流,而被谈及最多并且落地的多集群场景主要有这三类:
本文详细介绍了在 AWS 上快速搭建生产级 EKS 集群的步骤,包括子网规划、IAM 配置、必要命令工具的安装以及集群的创建和授权。通过 `eksctl` 工具快速定义和创建 EKS 集群,并提供了集群权限管理与网络配置的建议,确保集群安全和稳定运行。文中还包含完工后的调整建议,如将访问端点调整为私有以提升安全性。
本文介绍了OpenTelemetry的历史、架构和基本概念。OpenTelemetry是一个用于统一日志、指标和链路追踪的开源项目,旨在简化可观测性技术栈的复杂性。文章详细介绍了OpenTelemetry的三个核心组件:客户端、OTel Collector和数据存储。通过标准化协议,OpenTelemetry实现了与多种后端系统的兼容,为开发者提供了一种灵活且可扩展的可观测性解决方案。
随着微服务以及云原生的发展,越来越多的企业都将业务部署运行到Kubernetes中,主要是想依托Kubernetes的可扩展、可伸缩、自动化以及高稳定性来保障业务的稳定性。
然而,Kubernetes本身是一个复杂的管理系统,它既然是作为企业业务的基础设施,其本身以及运行在集群内部的业务系统对于企业来说都变得非常重要。
在整个大环境的降本增效的熏陶下,我们也不得不做好应对方案。
根据对线上流量、存储以及系统资源的占用,发现我们的 Pulsar 集群有许多的冗余,所以考虑进行缩容从而减少资源浪费,最终也能省一些费用。
不过在缩容之前很有必要先聊聊扩容,Pulsar 一开始就是存算分离的架构(更多关于 Pulsar 架构的内容本文不做过多介绍,感兴趣的可以自行搜索),天然就非常适合 kubernetes 环境,也可以利用 kubernetes 的能力进行快速扩容。
KV 存储作为美团一项重要的在线存储服务,承载了在线服务每天万亿级的请求量,并且保持着 99.995% 的服务可用性。在 DataFunSummit 2023 数据基础架构峰会上,我们分享了《美团大规模 KV 存储挑战与架构实践》,本文为演讲内容的整理。文章主要分为四个部分:第一部分介绍了美团 KV 存储发展历程;第二部分分享了内存 KV Squirrel 挑战和架构实践;第三部分阐述了持久化 KV Cellar 挑战和架构实践;最后一部分介绍了未来的发展规划。希望这些内容对大家有所帮助或启发。
Kubernetes Pods被驱逐是什么意思?它们被终止了,通常是由于没有足够的资源,但是为什么会发生这种情况呢?
驱逐是一个过程,分配给一个节点的Pod被要求终止。Kubernetes中最常见的情况之一是抢占,为了在资源有限的节点上安排一个新的Pod,通常需要终止另外一个Pod。
另外,Kubernetes会不断检查资源使用情况,当节点压力过大的时候,会触发节点压力驱逐。
每天,数以千计的Pod被驱逐出他们的家园。搁浅和迷茫,他们不得不放弃以前的生活方式。他们中的一些人甚至会无家可归。当前的社会,对CPU和内存的要求会越来越高。
使用 Kubernetes 时,内存不足 (OOM) 错误和 CPU 节流是云应用程序中资源处理的主要难题。
这是为什么?
云应用程序中的 CPU 和内存要求变得越来越重要,因为它们与您的云成本直接相关。
通过 limits 和 requests ,您可以配置 pod 应如何分配内存和 CPU 资源,以防止资源匮乏并调整云成本。
如果节点没有足够的资源, Pod 可能会通过抢占或节点压力被驱当一个进程运行内存不足 (OOM) 时,它会被终止,因为它没有所需的资源。
如果 CPU 消耗高于实际限制,进程将开始节流。
但是,如何主动监控 Kubernetes Pod 到达 OOM 和 CPU 节流的距离有多近?
本文主要介绍了我在对内网集群进行管理的时候遇上的和解决的问题,包括统一控制,装机脚本,堡垒机,内网穿透等一系列问题。
在这篇文章中,我们将在Kubernetes中使用Grafana、Prometheus、Loki、Tempo、OpenTelemetry来搭建可观测性平台。其中Grafana作为操作面板,Prometheus、Loki、Tempo作为数据源,分别用来获取指标、日志以及跟踪数据。同时,我们还将使用Exemplars将trace_id与Java指标相关联,使用OpenTelemetry对应用进行检测。
当在Kubernetes中使用容器时,重要的是要知道所涉及的资源是什么以及如何需要它们。有些进程比其他进程需要更多的CPU或内存。有些是关键的,不应该被饿死。
知道了这一点,我们应该正确配置我们的容器和Pod,以获得两者的最佳效果。