深度解析容器服务Kubernetes集群容量以及网络规划

简介: #背景 在目前云原生技术被如火如荼的大规模使用的过程中。越来越多的用户都会使用Kubernetes集群去部署其应用。但是在这个过程中,如果由于早期对于容量和网络的规划不当,可能造成实际生产中实践中,不能满足业务的真实需要。如果此时在重新规划就面临着集群重建、应用迁移的诸多事项,这样不仅仅浪费了大量的精力,甚至可能会造成业务有一定的中断。因此,为了使得广大使用者可以更加深入的理解阿里云容器服务Ku

背景

在目前云原生技术被如火如荼的大规模使用的过程中。越来越多的用户都会使用Kubernetes集群去部署其应用。但是在这个过程中,如果由于早期对于容量和网络的规划不当,可能造成实际生产中实践中,不能满足业务的真实需要。如果此时在重新规划就面临着集群重建、应用迁移的诸多事项,这样不仅仅浪费了大量的精力,甚至可能会造成业务有一定的中断。因此,为了使得广大使用者可以更加深入的理解阿里云容器服务Kubernetes集群容量和网络规划,本文章会详细介绍相关概念以及如何进行规划。

概念

集群容量

这所指的集群容量,指的一个Kubernetes集群最多能容纳的节点总数。

VPC网段

为了可以顺利的在容器服务中创建VPC的容器集群,首先我们需要根据实际的情况规划网络。创建VPC网络的时候,您必须指定对应的CIDR来划分对应的子网,如果想了解更多的关于CIDR的信息,参见RFC4632了解更多关于 CIDR 的信息.
每个专有网络只能指定 1 个网段,网段范围如下,其中 172.16.0.0/12 是默认专有网络使用的网段。

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

容器Pod网段

在创建容器服务Kubernetes集群的时候,需要用户指定对应的Pod网段,目前容器服务支持的容器网段如下:

  • 192.168.0.0/24
  • 172.[16-31].1.0/16
  • 10.0.0.0/8

Flannel

使用的是简单稳定的社区的Flannel CNI 插件,配合阿里云的VPC的高速网络,能给集群高性能和稳定的容器网络体验,但功能偏简单,支持的特性少,例如:不支持基于Kubernetes标准的Network Policy。

Terway

Terway是阿里云容器服务自研的网络插件,将阿里云的弹性网卡分配给容器,支持基于Kubernetes标准的NetworkPolicy来定义容器间的访问策略,支持对单个容器做带宽的限流。对于不需要使用Network Policy的用户,可以选择Flannel,其他情况建议选择Terway。

规划

接下来,我们就按Flannel和Terway两种类型就行相应的规划说明。

Flannel

在使用Flannel网络的场景下,集群的规模以及网络规划相对比较简单一些,主要受限于集群所在的VPC网段、pod网络以及每台节点可以最多部署的Pod数量。

集群规模的计算公式为:2 ^ (节点pod数量对应的掩码 - Pod网段掩码 ) 。例如 我们的Pod网段为 172.16.0.0/16,每台节点的Pod数为128(对应的掩码是25), 那么该集群的规模 = 2 ^ (25-16) = 512 ,也就是说该集群最多能容纳512个节点。

当然,这个集群的规模还受限于集群所使用的VPC网段所能容纳的节点数。一般来说这个问题不大,我们假设一个比较极端的场景,例如我们的VPC网段是 192.168.0.0/16 ,则该VPC最多能容纳的主机数是 2^16 , 此时假设我们设置的Pod网段是 10.0.0.0/8 ,每台节点的Pod 数为 128 (对应的掩码是 25),那么该集群的规则为 2 ^ (25 - 8) = 2^17 。由此我们可以看到集群最多能容纳的节点数已经超过了VPC网络最多能容纳的主机数。

另外由于Flannel网络场景下,为了保证每个Pod可以互联互通,在VPC的路由表里添加了节点对应网段的路由,由于VPC路由表的默认路由条目是48条,因此一旦集群的规模多于48个节点,建议提工单申请VPC路由表上限。

总上所述,在使用Flannel的场景下,需要从VPC网段、Pod网段以及节点能容纳的Pod数总和考量,来规划整体的集群容量以及Pod网段。

Terway

对于使用Terway网络而言,由于涉及到独占和共享两种方式,而且还涉及到所使用的ECS实例的规格,由于不同的实例规则可以容纳的ENI数量是有限的。

以下示例是一个实例规格的属性

{
    "CpuCoreCount": 32,
    "InstanceTypeFamily": "ecs.mn4",
    "InstanceBandwidthRx": 5120000,
    "InstancePpsRx": 500000,
    "InstancePpsTx": 500000,
    "EniQuantity": 8,     //弹性网卡数量
    "InstanceTypeId": "ecs.mn4.8xlarge",
    "GPUSpec": "",
    "InstanceBandwidthTx": 5120000,
    "InstanceFamilyLevel": "EntryLevel",
    "MemorySize": 128,
    "GPUAmount": 0,
    "LocalStorageCategory": "",
    "EniPrivateIpAddressQuantity": 4  //每张弹性网络最多可以虚拟多少IP
}

从以上,我们可以看出,如果是独占模式,由于每个Pod会使用一张独立的弹性网卡,因此该规格的机器最多能容纳8个Pod;反之,如果是共享模式,由于每张网卡可以虚拟4个IP,因此该规则的机器最多可以容纳 8 *4 = 32 个Pod。

当使用Terway的时候,我们需要指定一个Terway的交换机作为容器的网段,此时集群内能容纳的主机数,会有该交换机的网段以及节点的类型等决定。例如我们的Pod交换机网段是 172.16.1.0/24, 意味着该交换机内做多能容纳 256个IP,如果我们集群内的节点都使用如上所示的实例规则,如果在独占模式下,该集群最多能容纳的节点数为 256/8 = 64 台;反之如果在共享模式下,该集群最多能容纳的节点数为 256/32 = 8 台。

综上所述,在选择Terway网络的场景下,Pod网段的交换机选择很重要,在规划之前可以根据实例上容难的弹性网卡数量等做一个比较合理的计算和规划。

总结

其实对于Kubernetes集群网络规划并没有想象的那么复杂,只要弄明白每种网络组件之间的差异,以及和集群规模、VPC网络、路由等之间的关系,结合业务情况科学、合理的规划容量和网络,会起到事半功倍的效果。

相关文档

  • VPC网络相关资料详见文档
  • 容器服务资料[详见文档]
相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
运维 Kubernetes 前端开发
如何用 eBPF 实现 Kubernetes 网络可观测性?实战指南
本文深入探讨了Kubernetes网络观测的挑战与eBPF技术的应用。首先分析了传统工具在数据碎片化、上下文缺失和性能瓶颈上的局限性,接着阐述了eBPF通过零拷贝观测、全链路关联和动态过滤等特性带来的优势。文章进一步解析了eBPF观测架构的设计与实现,包括关键数据结构、内核探针部署及生产环境拓扑。实战部分展示了如何构建全栈观测系统,并结合NetworkPolicy验证、跨节点流量分析等高级场景,提供具体代码示例。最后,通过典型案例分析和性能数据对比,验证了eBPF方案的有效性,并展望了未来演进方向,如智能诊断系统与Wasm集成。
|
弹性计算 人工智能 资源调度
DeepSeek大解读系列公开课上新!阿里云专家主讲云上智能算力、Kubernetes容器服务、DeepSeek私有化部署
智猩猩「DeepSeek大解读」系列公开课第三期即将开讲,聚焦阿里云弹性计算助力大模型训练与部署。三位专家将分别讲解智能算力支撑、Kubernetes容器服务在AI场景的应用实践、以及DeepSeek一键部署和多渠道应用集成,分享云计算如何赋能大模型发展。欲观看直播,可关注【智猩猩GenAI视频号】预约。 (239字符)
|
人工智能 运维 监控
容器服务Kubernetes场景下可观测体系生产级最佳实践
阿里云容器服务团队在2024年继续蝉联Gartner亚洲唯一全球领导者象限,其可观测体系是运维的核心能力之一。该体系涵盖重保运维、大规模集群稳定性、业务异常诊断等场景,特别是在AI和GPU场景下提供了全面的观测解决方案。通过Tracing、Metric和Log等技术,阿里云增强了对容器网络、存储及多集群架构的监控能力,帮助客户实现高效运维和成本优化。未来,结合AI助手,将进一步提升问题定位和解决效率,缩短MTTR,助力构建智能运维体系。
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
1281 2
|
监控 安全 网络安全
Elasticsearch集群的网络设置
Elasticsearch集群的网络设置
662 3
|
人工智能 运维 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日至10日,CCF ChinaNet(中国网络大会)在江苏张家港召开,众多院士、教授和技术领袖共聚一堂,探讨网络未来发展方向。阿里云研发副总裁蔡德忠发表主题演讲,展望智算技术发展趋势,提出智算网络架构变革的新思路,发布高通量以太网协议和ENode+超节点系统规划,引起广泛关注。阿里云HPN7.0引领智算以太网生态蓬勃发展,成为业界标杆。未来,X10规模的智算集群将面临新的挑战,Ethernet将成为主流方案,推动Scale up与Scale out的融合架构,提升整体系统性能。
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
1044 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1710 29
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
743 4
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版