深度解析容器服务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
目录
相关文章
|
10月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
1022 3
|
11月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
存储 缓存 安全
Java 集合容器常见面试题及详细解析
本文全面解析Java集合框架,涵盖基础概念、常见接口与类的特点及区别、底层数据结构、线程安全等内容。通过实例讲解List(如ArrayList、LinkedList)、Set(如HashSet、TreeSet)、Map(如HashMap、TreeMap)等核心组件,帮助读者深入理解集合容器的使用场景与性能优化。适合准备面试或提升开发技能的开发者阅读。
239 0
|
12月前
|
运维 Kubernetes 持续交付
ACK One GitOps:让全球化游戏服务持续交付更简单
ACK One GitOps 致力于提供开箱即用的多集群 GitOps 持续交付能力,简化游戏等服务的多集群/多地域统一部署,让您更加专注于业务开发。
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
1278 33
|
弹性计算 Java Maven
从代码到容器:Cloud Native Buildpacks技术解析
Cloud Native Buildpacks(CNB)是一种标准化、云原生的容器镜像构建系统,旨在消除手动编写Dockerfile,提供可重复、安全且高效的构建流程。它通过分层策略生成符合OCI标准的镜像,实现应用与基础镜像解耦,并自动化依赖管理和更新。阿里云应用管理支持通过CNB技术一键部署应用至ECS,简化构建和运行流程。
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
存储 人工智能 Kubernetes
ACK Gateway with AI Extension:面向Kubernetes大模型推理的智能路由实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with AI Extension组件,在Kubernetes环境中为大语言模型(LLM)推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
存储 运维 Kubernetes
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
飞轮科技推出了 Doris 的 Kubernetes Operator 开源项目(简称:Doris Operator),并捐赠给 Apache 基金会。该工具集成了原生 Kubernetes 资源的复杂管理能力,并融合了 Doris 组件间的分布式协同、用户集群形态的按需定制等经验,为用户提供了一个更简洁、高效、易用的容器化部署方案。
1120 16
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
|
弹性计算 人工智能 资源调度
DeepSeek大解读系列公开课上新!阿里云专家主讲云上智能算力、Kubernetes容器服务、DeepSeek私有化部署
智猩猩「DeepSeek大解读」系列公开课第三期即将开讲,聚焦阿里云弹性计算助力大模型训练与部署。三位专家将分别讲解智能算力支撑、Kubernetes容器服务在AI场景的应用实践、以及DeepSeek一键部署和多渠道应用集成,分享云计算如何赋能大模型发展。欲观看直播,可关注【智猩猩GenAI视频号】预约。 (239字符)

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版
  • 推荐镜像

    更多