Kubernetes升级IPv6双栈过渡是最佳选择
在Kubernetes诞生之前很久,大约20年前就已经指定了有限数量的公共IPv4地址和IPv6地址空间来解决互联网寻址问题。Kubernetes最初是在Google内部开发的,而且近年来才开始支持像Google和AWS这样的云服务,所以Kubernetes最初只支持IPv4。
对于已经致力于使用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空间实际上是无限的。”
“从支持[IPv6支持]回到测试版和遗传算法的唯一方面是与我们的自动化测试进行更深层次的集成,这是由我们的开发人员社区推动的,”Hockin说。
他指出,迁移到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 Ku