写点什么

OpenSource I 探索 EKS 的网络基础:amazon-vpc-cni-k8s + Calico

  • 2019-10-28
  • 本文字数:1741 字

    阅读完需:约 6 分钟

OpenSource I 探索EKS的网络基础:amazon-vpc-cni-k8s + Calico

Amazon 在 AWS re:invent 上宣布推出 Elastic Container Service for Kubernetes (EKS) 并详细介绍了容器网络将如何在此令人振奋的新平台上工作 — 以及得到保护。特别是 EKS 利用了新推出的 AWS Container Network Interface (amazon-vpc-cni-k8s) 插件以及 Project Calico 来执行网络策略。在本博文中,我们将详细介绍这种集成的工作原理,还将说明目前如何在 EC2 中运行的 Kubernetes 群集中试用。它好比您在等待访问 EKS 本身时的一个“先睹为快”,或者您在自己基于 AWS 的 Kubernetes 中部署时可能考虑的因素 — 但请注意 amazon-vpc-cni-k8 仍然是官方的 alpha 版发布,不能用于生产工作负载。

VPC 与容器

Virtual Private Cloud (VPC) 网络的概念已经被 AWS 用户广为接受,但最初它是基于实例将拥有单个 IP 地址的假设建立的。因此,AWS 中部署的大多数容器环境将使用叠加 — 特别使用 Calico 来利用 EC2 的第 2 层功能,以避免单个可用区 (AZ) 内的叠加。但即使是 Calico 也使用叠加来遍历可用区。Calico 的联网方法虽然在 AWS 中非常流行,但它不能为容器赋予“真正的 IP”,即让相关 VPC 看起来与主机实例 IP 一样的 IP 地址。更好的解决方案将是从相关 VPC 为它分配一个 IP 地址,让相关 Amazon 联网层负责路由。这就是 AWS 团队通过 amazon-vpc-cni-k8s 插件实现的功能。它利用 EC2 的能力为主机实例预置多重弹性网络接口 (ENI),每个接口都有多个二级 IP 地址,从而获得来自 VPC 池的多个 IP 地址。然后,它将这些 IP 地址分配给主机上的 Pod,将 ENI 连接到 Pod 上创建的虚拟以太网端口 (veth),然后将剩下的工作交给 Linux 内核。


有关 veth 的策略

现在您也许会自问:如果 amazon-vpc.cni-k8s 插件负责分配 IP 地址和容器联网,Calico 如何才能启用网络策略?它其实非常简单:因为 Calico 采用模块化设计,它的联网、IPAM 和策略功能都可以通过相关设置独立部署。对于 EKS,amazon-vpc-cni-k8s 插件作为 Kubernetes 的 CNI 插件配置,但我们还会在每个节点上将“calico-node”代理作为 Kubernetes daemonset 部署。将 amazon-vpc.cni-k8s 插件的 veth 命名规则与 Calico 统一,每个主机上的 calico-node 都将知道哪个 veth 属于哪个容器,因此可以 (使用 iptable/ipset) 照常创建每个容器在 Linux 内核中的接口的策略规则。由于 amazon-vpc-cni-k8s 插件以正确的方式接入 veth,我们知道所有来自 Pod 的流量都将执行这些规则。实际上您需要知道的是:作为 CNI 插件,amazon-vpc-cni-k8s 会执行简单声明以将 Calico 部署为 daemonset,然后就万事大吉

将理论应用到您自己的 EC2 控制台

读到这里,您也许不禁想要尝试一下。当然,最终这将成为适用于所有 EKS 用户的标准。虽然它目前还属于功能有限的预览版,但您可以利用在 EC2 上的正常 Kubernetes 部署来试用:github.com/aws-samples/aws-kube-cni

适用于 AWS Calico 联网何去何从?

amazon-vpc-cni-k8s 插件的优点非常明显:您在 VPC 中获得真实的 IP 地址,性能与 EC2 主机联网相同,可用区与 VPC 之间的路由无需额外的叠加。那么您是否会希望在 AWS 中使用 Calico 的联网功能?可能有一些原因会让您希望继续使用 Calico 而不是 amazon-vpc-cni-k8s 插件:


  • 使用 amazon-vpc-cni-k8s 插件,单个主机实例 (Kubernetes 节点) 的 Pod 总数以 ENI 的数量乘以每个 ENI 的二级 IP 地址数量为极限 –根据实例的大小不同会有差异 (参见此表)。对于较小的实例,这可能极低 — 例如,对于 c1.medium 实例,您只能启动 10 个 Pod。而 Calico 对每个节点的 Pod 数量是没有限制的。

  • amazon-vpc-cni-k8s 插件会在日初为给定的节点分配最大数量的 IP 地址,这可能会降低地址利用的效率。而 Calico 允许整个 IP 地址池在所有节点之间使用。


我们的建议是:如果部署没有应阻断,您应当使用 amazon-vpc-cni-k8s 插件,这是适用于 AWS 的最简单、最佳性能的原生联网解决方案 — 当然,这也是 EKS 的默认配置。不论您选择哪种联网方法,您都可以放心享受 Calico 提供的行业标准容器网络安全性。


本文的另一位作者是 Tigera 的 Andy Randall!有关他的信息请关注 @andrew_randall


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/networking-foundation-eks-aws-cni-calico/


2019-10-28 08:00939

评论

发布
暂无评论
发现更多内容

逻辑删除用户账号合规吗?

江南一点雨

Java 后端

探索商品详情API中的重量与体积信息:解锁精准物流管理与用户购物体验的秘密

代码忍者

API 测试 API 策略

Python进行Socket接口测试的实现

我再BUG界嘎嘎乱杀

Python 编程 后端 socket 接口测试

Monorepo:让你的项目脱胎换骨,既能代码复用,又能独立部署!

OpenTiny社区

开源 前端 组件库 OpenTiny

[LINUX使用] iptables/tcpdump/wireshark/tshark

百度搜索:蓝易云

垃圾去无踪,生活更轻松 - StarRocks 如何清理对象存储垃圾数据

Ding_Kai

数据库 StarRocks 湖仓一体

Microsoft Teams电话

cts喜友科技

通信 通讯 云通讯

项目管理新趋势,10款工具引领未来工作模式

爱吃小舅的鱼

项目管理 项目经理

【KDD2024】面向集群整体作业运行变慢的异常检测

阿里云大数据AI技术

人工智能 数据挖掘 阿里云 异常检测 论文

“智启新机 云驱增长”——2024腾讯全球数字生态大会

ToB行业头条

高防服务器过域名白名单是什么意思?

百度搜索:蓝易云

妙用 Batch,StarRocks 存算分离实时性能起飞

Ding_Kai

数据仓库 数据湖 StarRocks

Go 程序如何实现优雅退出?来看看 K8s 是怎么做的——上篇

江湖十年

k8s k8s知识 Go web #k8s Go 面试题 面经 后端 大厂

用小程序容器使移动开发效率提升了5倍!

Geek_2305a8

ubuntu 20.04设置authorized_keys让VS Code ssh远程免密连接

百度搜索:蓝易云

Tomcat报BAD packet signature 18245错误的原因

百度搜索:蓝易云

linux基础命令cd /xxx和cd xxx的区别

百度搜索:蓝易云

喜讯!云起无垠创始人沈凯文博士荣列科学家创业先锋榜

云起无垠

智扣物联,“论剑”长沙!2024全国大学生物联网竞赛火山引擎赛道获奖名单重磅揭晓

火山引擎边缘云

物联网 边缘计算 AIOT 智能IoT边缘服务 人工智能’

一文揭秘:火山引擎云基础设施如何支撑大模型应用落地

Geek_2d6073

2024第35届中国(广州)国际大健康产业博览会

秋硕展览

调试理解 NodeJS 模块机制sh

yuanyxh

node.js js Node

API集成的未来:行业级解决方案的发展趋势

幂简集成

API API集成

9k star 监控系统,100% 国产,推荐了解

巴辉特

Prometheus Nightingale

Match与RFG:颠覆传统社交,开启价值社交新时代

股市老人

豆瓣评分9.4!最适合Python入门后进阶的Python食谱!

我再BUG界嘎嘎乱杀

Python 编程 后端 开发语言

Michael Rey谈质押的未来:“节点切片是流动性的关键”

股市老人

2025年中国(成都)国际航空航天及无人机展会

秋硕展览

怎么制作韦恩图?用这款在线白板绘制简单又漂亮!

职场工具箱

效率工具 职场 在线白板 办公软件 绘图工具

活动报名:从手搓 AI bot 到多模态 AI agent+TEN 框架丨 RTE Meetup,上海,8.31

声网

我对管理的理解

老张

团队管理 管理者 人员招聘

OpenSource I 探索EKS的网络基础:amazon-vpc-cni-k8s + Calico_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章