深度解析容器服务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
目录
相关文章
|
4月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
830 108
|
3月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
396 2
|
3月前
|
Kubernetes Devops Docker
Kubernetes 和 Docker Swarm:现代 DevOps 的理想容器编排工具
本指南深入解析 Kubernetes 与 Docker Swarm 两大主流容器编排工具,涵盖安装、架构、网络、监控等核心维度,助您根据团队能力与业务需求精准选型,把握云原生时代的技术主动权。
306 1
|
9月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
278 0
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
10月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
210 1
|
9月前
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
10月前
|
监控 Cloud Native Java
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。
|
12月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
273 17

相关产品

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

    更多