Kubernetes升级IPv6,双栈过渡是最佳选择,大型物联网用户很重视

栏目: 编程工具 · 发布时间: 5年前

内容简介:在Kubernetes诞生之前很久,大约20年前就已经指定了有限数量的公共IPv4地址和IPv6地址空间来解决互联网寻址问题。Kubernetes最初是在Google内部开发的,而且近年来才开始支持像Google和AWS这样的云服务,所以Kubernetes最初只支持IPv4。对于已经致力于使用IPv6的企业而言,这可能是一个问题,而且对于需要太多IP地址的物联网设备而言更加重要。“物联网客户使用IPv6部署各种设备和边缘设备,”微软首席软件工程师Khaled Henidak指出,他致力于Azure的容器服

在Kubernetes诞生之前很久,大约20年前就已经指定了有限数量的公共IPv4地址和IPv6地址空间来解决互联网寻址问题。Kubernetes最初是在Google内部开发的,而且近年来才开始支持像Google和AWS这样的云服务,所以Kubernetes最初只支持IPv4。

Kubernetes升级IPv6,双栈过渡是最佳选择,大型物联网用户很重视

对于已经致力于使用IPv6的企业而言,这可能是一个问题,而且对于需要太多IP地址的物联网设备而言更加重要。“物联网客户使用IPv6部署各种设备和边缘设备,”微软首席软件工程师Khaled Henidak指出,他致力于Azure的容器服务,并协调微软对Kubernetes的上游贡献。

运营商和电信公司也对采用Kubernetes感兴趣,比如美国最大运营商AT&T正在使用Kubernetes作为其用于运行5G和公共安全网络服务的Airship项目的基础。但他们已经部署了大量的IPv6,尤其是移动网络。大约90%的T-Mobile USA和Verizon Wireless流量已经是IPv6;对康卡斯特和AT&T而言,这个比例约为70%。

截至2017年,全球IP地址注册商只有3个新的IPv4地址可供分配(其中没有一个在美国,因此任何需要更多IPv4地址的人,都必须找到愿意出售他们的人)。

这意味着即使是那些因为使用像NAT这样的技术来解决地址短缺,而放慢IPv4速度的企业也会遇到问题,Google Cloud的首席软件工程师Tim Hockin表示。“Kubernetes非常自由地使用IP地址(每个Pod一个IP),这简化了系统并使其更易于使用和理解。对于非常大的安装,IPv4可能很难。发现大型企业已经“切断”其网络中的私有IPv4空间并不罕见,因此为Kubernetes集群寻找空间可能很难或不可能。IPv6使IP空间实际上是无限的。”

Kubernetes 1.9中添加了支持IPv6的集群的支持作为alpha功能,而对于版本1.13,Kubernetes默认DNS服务器更改为具有完全IPv6支持的CoreDNS。

“从支持[IPv6支持]回到测试版和遗传算法的唯一方面是与我们的自动化测试进行更深层次的集成,这是由我们的开发人员社区推动的,”Hockin说。

Kubernetes中的内置桥接网络使用Linux iptables功能实现; “iptables一段时间以来一直是对IPv6友好的,”Henidak指出。如果你正在使用容器网络接口(CNI)堆栈进行联网,那么像Project Calico这样的插件可让你禁用IPv4并为pod启用IPv6。

他指出,迁移到IPv6集群不应该做很多工作,但有一些事情需要注意。“如果你的网络基础设施和应用程序已经为IPv6做好准备,那么改变Kubernetes使用纯IPv6对于Kubernetes(dev或ops)用户来说应该不是特别困难。每个主要的操作系统都支持IPv6,大多数开源应用程序都可以在IPv6环境中运行。可能需要审核执行网络相关内容的自定义应用程序,以确保它们对IPv6安全。例如,IPv4地址通常存储在32位整数变量中,但IPv6地址不适合。”

双栈

但是,仅仅支持单个地址系列,无论是IPv4还是IPv6,都是不够的,因为它不能让Kubernetes轻松适应它需要集成的所有其他基础设施。

“Kubernetes并不孤立地运行;它在本地运行,需要与其他应用程序进行交互,或者主要是在云上运行,”Henidak指出。“如果我有一个应用程序,并通过负载均衡将其提供给外部,我在外部有一个IP,如果我的Kubernetes集群是IPv4或IPv6,那么该地址将只是IPv4或IPv6。如果我的网络仅使用一个地址空间和一个地址系列,则所有内容都必须位于同一系列中。如果我将我的节点作为IPv6,那么节点的客户端必须是IPv6,数据库必须是IPv6。这会产生问题,因为实际上很少有人将100%的所有内容用作IPv6。”

使用IPv6设备的物联网客户可以运行IPv6 Kubernetes集群供他们连接,但正如他指出的那样,“但这些集群还需要连接到内部运行或在另一个集群中运行的后端应用程序,甚至连接到只能与IPv4通信的云服务。”

在网络中没有复杂的IPv4/IPv6转换机制的情况下进行这项工作需要双栈网络,其中每个pod都分配了IPv4和IPv6地址,因此它可以与IPv6系统以及使用IPv4的传统应用和云服务进行通信。

AWS拥有最广泛的IPv6支持,但并未涵盖所有服务。15个AWS区域对EC2实例提供IPv6支持,为Elastic Load Balancing提供可公共路由的IPv6地址,通过双栈端点访问S3存储,对从设备传递到AWS IoT服务的消息提供IPv6支持,为公共和私有提供双栈支持具有Route Connect的虚拟接口,具有Route 53的IPv6端点的IPv6 DNS查询和运行状况检查,以及对CloudFront,Web应用程序防火墙和S3传输加速的IPv6支持。

自2016年以来,大多数Azure区域都通过负载均衡支持双栈VM ,并且私有预览了完整的IPv6双栈支持;一旦可用,Henidak表示将推出AKS和AKS Engine等工具(它使用Azure Resource Manager模板在Azure IaaS上引导Kubernetes集群。

“GCP在VPC网络中没有IPv6支持,但是,”Hockin指出,谷歌员工在GitHub上讨论了有关双栈支持的问题,该服务正在测试GCE内部的一些原型双栈配置。

为Kubernetes添加双栈支持需要比单独支持IPv6更多的工作,并且社区已经在一段时间内致力于Kubernetes增强建议。而不是采用简单的方法只为pod和节点提供双栈地址,而是使用单个系列 ,所有IPv4或所有IPv6,用于集群中的服务IP,这是一个真正的双栈实现,支持两个pod的IPv4和IPv6和服务。

由于应用程序使用完全限定的域名进行服务发现,因此集群中的DNS需要知道它是运行IPv4,IPv6还是双栈。

增强项目将使用Bridge和PTP CNI插件以及Host-Local IPAM插件测试双栈功能。“有多个网络提供商都有自己的基于CNI堆栈的解决方案,”Henidak指出。“他们可能依赖于本机 Linux 内核功能或他们自己的实现,当Kubernetes迁移到IPv6双栈时,他们需要提供自己的双栈实现。”

像NGINX这样的Ingress控制器也需要提供双栈支持;在这两种情况下,网络提供商可能已经在其他环境中支持IPv6,但之前没有将它带到Kubernetes,因为它不是双栈。

“目前的考虑是,服务将有一个ID,上面写着'我希望将其提供为IPv4或IPv6',”他解释道。这是你为互操作性做出的选择。“如果我的Kubernetes应用程序在双栈模式下运行,那么它们有来自不同家族的多个IP地址;如果我将此作为IPv4公开,则意味着仅具有IPv4功能的客户端将能够与此服务进行通信,或者对于IPv6进行通信。这样,人们可以从指向同一个应用程序的两个不同系列中获取两个IP地址,从而支持多个客户端。无论客户端能够做什么,他们都能够进入集群。”

目的是在不中断现有实现和部署的情况下添加新功能。“主要原则不是打破任何东西,”Henidak说。“Kubernetes上有很多工具,很多客户都在调用Kubernetes API,他们期望从服务中获得某些输入和输出。我们想要转移到双栈的新工作,而不会破坏任何这一点,同时允许客户端的最大价值。”

这意味着该项目将在未来版本的Kubernetes中经历通常的alpha,beta和GA阶段,以便有时间进行测试,但这需要一些时间。“对Kubernetes的双栈IPv6支持或多或少是设计完整的,”Hockin说。“我们有一个非常好的Kubernetes增强建议,但这项工作已经停滞不前了。在完成这项工作之前,还将有一些发布。”

如果在更改达到Kubernetes的发布版本(Henidak估计将需要大约9个月)之前需要双栈IPv6支持,你可以在IPv6模式下运行集群并通过设置有状态NAT64和DNS64服务器来处理地址转换连接到外部,仅限IPv4的服务器,双栈入口控制器,负载平衡到集群中的仅IPv6端点,以及具有IPv4到IPv6映射的无状态NAT64服务器,以便仅IPv4外部客户端访问Kubernetes容器或他们公开的服务。

Henidak预测,新提案的最早采用者将是大型物联网用户。“我有客户说,‘我想要IPv6,我现在想要它'。即使是在早期阶段测试它并提供反馈,那些人也会立即接受,社区中的用户都希望与这些早期采用者接触。“

“然后有些人现在对IPv4很了解,但他们知道将来他们需要跟踪提案的IPv6。他们告诉我们‘我的网络上的IPv4空间不足,我已经将我的内部网络转换为IPv6,我需要双堆栈来与我的云托管Kubernetes集成。”


以上所述就是小编给大家介绍的《Kubernetes升级IPv6,双栈过渡是最佳选择,大型物联网用户很重视》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入理解C#(第3版)

深入理解C#(第3版)

斯基特 (Jon Skeet) / 姚琪琳 / 人民邮电出版社 / 2014-4-1 / 99.00元

本书是世界顶级技术专家“十年磨一剑”的经典之作,在C#和.NET领域享有盛誉。与其他泛泛介绍C#的书籍不同,本书深度探究C#的特性,并结合技术发展,引领读者深入C#的时空。作者从语言设计的动机出发,介绍支持这些特性的核心概念。作者将新的语言特性放在C#语言发展的背景之上,用极富实际意义的示例,向读者展示编写代码和设计解决方案的最佳方式。同时作者将多年的C#开发经验与读者分享,读者可咀其精华、免走弯......一起来看看 《深入理解C#(第3版)》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具