东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

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:00813

评论

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

Java编程入门自学,牛客网在线编程,Java基础入门视频教程

Java 程序员 后端

Java编程百度云,java实用教程第五版百度云,字节跳动资深面试官亲述

Java 程序员 后端

Java进阶之光,java工程师视频教程,王者笔记!

Java 程序员 后端

Java进阶教程,极客网盘破解版吾爱破解,卑微打工人

Java 程序员 后端

Java重点知识点总结,java开发教程百度云,Java零基础入门书籍

Java 程序员 后端

Java面试常问问题,java入门电子书百度网盘,直接上干货

Java 程序员 后端

Java面试必备的集合源码详解,小白勿进

Java 程序员 后端

Java菜鸟入门教程,硅谷之火pdf百度网盘,吃透这份阿里P8纯手打Java面经

Java 程序员 后端

Java软件开发面试题,从paxos到zookeeper网盘,已拿到offer

Java 程序员 后端

Java零基础自学书籍,尚硅谷spring视频,BAT大厂面试总结

Java 程序员 后端

Java面试知识点总结,mongodb权威指南pdf网盘,SpringBoot

Java 程序员 后端

Java面试官,springboot教程百度云,Java编程教程视频

Java 程序员 后端

Java自学视频百度云,尚硅谷大数据百度云,Java编程教学视频

Java 程序员 后端

Java面试回忆录,任小龙java笔记百度云,Java社招面经分享

Java 程序员 后端

Java面试带答案,合买咕泡学院vip,全面展示线程内存模型的能力

Java 程序员 后端

Java面试常问问题,图灵科技学院,十分钟带你看懂Netty如何实现C-S

Java 程序员 后端

Java面试技巧和注意事项,java开发实例教程,阿里巴巴Java编程笔试题

Java 程序员 后端

Java通用流行框架大全,Java校招面试问题大全

Java 程序员 后端

Java银行面试题目及答案,java基础菜鸟教程容器类,疯狂涨知识

Java 程序员 后端

Java面试知识点总结宝典助你通关,Java校招笔试面试题目

Java 程序员 后端

Java编程方法论pdf,kalilinux新手教程,Java实习面试经验汇总

Java 程序员 后端

架构训练营-模块二

Geek_9de3de

架构实战营

Java面试基础知识点,mysql编程入门教程,Java知识总结

Java 程序员 后端

Java面试常见笔试题,java基础入门传智播客图书,被逼无奈开始狂啃底层技术

Java 程序员 后端

Java面试手写算法,极客时间数据结构算法地图,Java岗面试12家大厂成功跳槽

Java 程序员 后端

Java编程教程入门,java使用教程第五版答案,美团优选面试题Java

Java 程序员 后端

Java自学宝典下载免费,java框架ssh和ssm百度,Java常见编程笔试题

Java 程序员 后端

Java这些高端技术只有你还不知道,正在准备面试

Java 程序员 后端

Java通用流行框架大全,迈向java面试突击课百度云,来来来

Java 程序员 后端

Java重点知识点,极客时间破解蓝奏云,顺利通过阿里Java岗面试

Java 程序员 后端

Java面试java基础,java基础语法菜鸟教程,腾讯Java社招面试

Java 程序员 后端

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