容器技术在未来互联网中的应用研究
作者: 付爱英 邓庚盛 周晶晶
摘要:针对基于IPv4协议的传统互联网必然向基于IPv6协议的未来互联网演进的现实,该研究以如何实现传统互联网上已部署的应用服务向未来互联网平稳、不间断地过渡或移植,以及如何高效、快速部署未来互联网应用服务为研究目标,分析了未来互联网应用服务的特征,研究了容器技术独特的微服务部署能力及其与IPv6协议的融合能力和关键配置,提出容器技术将是未来互联网中应用服务部署的不可或缺的重要方式。
关键词:未来互联网;IPv6;微服务;容器
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2025)04-0107-03 开放科学(资源服务) 标识码(OSID) :
互联网协会总裁兼首席执行官安德鲁·沙利文(Andrew Sullivan) 认为,互联网这一有史以来人类最有创造力的发明,现已显然成为全球社会的重要资源。它已成为推动社会发展和进步的重要基础设施之一。而当前业务数字化、管理信息化、服务智能化的需求不断推进,对IPv4传统互联网构成了严峻挑战。互联网数据传送格式由IPv4向IPv6的演进奠定了IPv6作为未来互联网基础的地位,IPv6为未来互联网体系结构解决重大技术挑战提供了新的创新平台[1]。容器技术主要以分布式服务、集群化管理模式为主,凭借其轻量级虚拟化、可共享宿主机内核、独立运行、快速启动和可扩展性强等优势,在传统的IPv4 网络应用服务部署中发挥了重要作用。未来互联网的应用服务将更加规模化、普及化、深度化,更需要高效、快捷的部署模式。可以预见,容器技术、虚拟化技术将成为未来互联网的重要技术支撑[2]。
1 未来互联网
国际和国内学术界及产业界对“未来互联网”没有统一和明确的定义,但人们对其已有了基本共识。未来互联网将采用新的技术体系[3],通过各种新型技术和服务,实现人与人之间、人与物之间以及物与物之间的无缝连接和信息交流,为人类社会的发展和进步提供更加强大的支持和服务。
1.1 未来互联网应用服务的特征
未来互联网致力于形成更加开放、更加公正的网络生态环境,并将通过新的技术手段为用户提供更加便捷、个性化的服务和体验。它围绕数据、内容和用户构建多样化范例,通过在现有环境中部署测试平台,开展测试、验证和改进新型互联网体系结构。未来互联网应用服务将呈现数据关联、业务独立的特点,业务主要以微服务的方式面向用户。
1.2 IPv6协议是未来互联网的基础
IPv6协议因其独特的优势,能够实现未来互联网开放、安全可靠、智能化和可持续发展的目标,是未来互联网的基础协议。
1.2.1 地址量优势
在128bit寻址能力下,IPv6能提供2128 的地址空间,能满足地球上每一粒沙子的联网需求。足量的地址优势能满足未来互联网万物互联、端到端的直接通信和不良网络行为溯源的需求。
1.2.2 数据转发优势
IPv6对报文头部进行了优化,分为基本头部和扩展头部,如图1所示。基本头部仅含8个必要信息字段,固定长度为40个字节。相较IPv4报头中多达12 个选项,IPv6基本报头更为精简。网络数据在转发时只需读取基本报头,因此IPv6数据转发时减少了路由器的转发和处理数据包的负担,从而实现了更快的数据传输和更低的时延。
IPv6路由采用了层次化的设计方法[4]。全球单播IPv6地址的前3位固定为001,第4至48位(共45位) 由地址分配机构分配,其中第4至16位是顶级聚合。理论上,互联网骨干设备上的IPv6路由表只有213条路由信息,聚类功能减少了网络路由条目数并提高了数据转发效率。IPv6高效的数据转发优势能满足未来互联网万物互联、即时通信和实时控制的需求。
1.2.3 安全性优势
IPv6报头中预留了扩展头部(Extension Headers) ,如图1所示。基于扩展头部的选项机制,使得IPv6协议具有可扩展性和灵活性。例如,引入IPSec(InternetProtocol Security) [5]作为IPv6默认的网络层次安全协议。IPSec提供了网络通信的数据完整性、机密性和真实性等方面的保障,有效防范了恶意攻击、数据窃取等网络安全威胁[6-7]。
此外,IPv6还具备其他优势。例如,IPv6地址自动配置功能简化了网络设备的部署和安装,提高了网络的易用性和部署效率;IPv6的流量类别和优先级管理机制[8]能够支持更智能化的流量调度和负载均衡。这些优势使得IPv6必然成为未来互联网的基础协议。
2 容器技术微服务部署能力
Docker和Kubernetes是典型的容器技术。Docker 用于创建和操作容器映像,将应用程序及其所有依赖项打包到一个独立、可移植的运行时环境中。Kuber⁃netes是一种容器编排工具,提供了一种容器编排框架,简化了容器部署和管理,非常适合快速部署和弹性扩展容器系统,能够大规模地管理、协调与调度容器,在多个服务器之间协调多个容器,大规模地定义与运行复杂的容器应用程序[9]。Docker和Kubernetes 相辅相成,Docker为Kubernetes提供了强大的容器运行时环境,而Kubernetes则为Docker容器提供了自动化管理和编排的能力。容器天然支持微服务架构,Kubernetes是一个典型的集群架构[10],如图2所示。
如图2所示,每个Kubernetes集群一般包含一个Master节点和多个Node节点。Master是Kubernetes的集群控制节点,负责整个集群的管理和控制。Node节点是Kubernetes集群中的工作负载节点,当某个Node 宕机时,其上的工作负载会被Master自动转移到其他节点上。Kubernetes与Docker相互协作,能够实现应用的快速部署。kubelet是Master在Node节点上的代理,与Master密切协作,管理本机运行容器的生命周期,负责Pod对应容器的创建、启停等任务,实现集群管理的基本功能。Docker和Kubernetes相互配合,可以实现生产级应用程序的大规模快速部署和启动运行[11]。这种高效、快捷、规模化的应用服务部署和管理能力能满足未来互联网更加智能化、更加安全可靠、更加绿色环保的需求。
3 容器技术与IPv6的融合性
3.1 Docker 和Kubernetes 网络通信机制
在Kubernetes集群中,容器是应用程序及运行环境的最小单元,也是数据交换、数据传输的基本载体。以Docker为例,它默认采用bridge网络模式。在这种模式下,Docker 服务默认会创建Docker 的虚拟网桥docker0,它在内核层连接了其他的物理或虚拟网卡,将所有容器和宿主主机都放到同一物理网络中[12]。宿主机和容器可以通过网桥相互通信。如图3所示,网桥docker0 创建一对对等虚拟设备接口,一个叫veth,另一个叫eth0,它们成对匹配。
Kubernetes作为一个集群架构,其网络模型从外往内分别为Internet与Kubernetes Service之间通信的网络[13]、Pod与Service之间的通信网络(容器网络,即Pod内容器之间通信) 、Pod网络(同一Node的Pod之间通信和不同Node的Pod之间通信) ,如图4、图5所示。
3.2 Docker 和Kubernetes 支持IPv6 的核心参数和配置
Docker对IPv6有良好的支持性,在Docker守护进程的配置文件daemon.json 中启用IPv6 并为“fixedcidr-v6”指定IPv6地址段,创建容器时,只须指定容器的IPv6地址即可。
Kubernetes 从1.21 版本起就默认启用IPv4/IPv6 双栈协议,支持同时分配IPv4 和IPv6 地址给Pod 和Service[14-15]。以1.21版本为例,简述Kubernetes集群支持IPv6的相关配置项:
1) kube-apiserver组件的IPv6配置
负责整个集群的控制平面和集群操作入口,kube-apiserver启动参数中添加IPv6内容:
--advertise-address=2001:123::456(举例:API 服务器地址为2001:123::456)
若集群配置了DNS,则还需要确保DNS服务器能够正确解析IPv6地址。
2) kube-controller-manager组件的IPv6配置
负责维护集群状态,编辑kube-controllermanager.conf,修改kube-apiserver-host 项为kubeapiserver-host="https://[fd00:123::456]:6443",并根据实际情况安装网络插件以支持IPv6,并重启 kubecontroller-manager以应用新的配置。
3) kube-proxy组件的IPv6配置
负责为Service 提供代理,在kube-proxy-config.yaml中设置kube-proxy运行在IPVS模式,指定集群的IPv6网络CIDR,并且在健康检查和指标监听端口上使用IPv6地址,以确保kube-proxy能够正确处理IPv6 流量。
mode: "ipvs"
ipvs:
excludeCIDRs: []
clusterCIDR: "2001:db8::/64" # 假设Kubernetes集群使用的是IPv6的CIDR
healthzBindAddress: "[::]:10256" # 监听IPv6地址
metricsBindAddress: "[::]:10249" # 监听IPv6地址
4) kubelet组件的IPv6配置
kubelet是每个节点上的主要“节点代理”,负责节点上的容器和Pods的管理,配置IPv6的网络设置以及配置IPv6的cgroup和server地址以支持在Kubernetes 集群中使用IPv6网络。
clusterDNS:
- "fd00::1"
clusterDomain: cluster.local
healthzBindAddress: "[fd00::2]:10248"
ipv6Mode: ipv6-pods
podCIDR: "fd00::/64"
serverTLSBindAddress: "[fd00::3]:10250"
4 结束语
容器技术因具有标准化、轻量级、易移植、易管理和部署且拥有活跃的社区和完善的生态系统而备受广泛应用。再加上Kubernetes提供了强大的编排能力,可以帮助用户轻松管理和运行容器应用程序,使得应用程序的部署、扩展、管理和监控变得更加简单和高效。随着互联网的发展,人们所需的应用服务将越来越多,应用服务之间的关联性也将越来越强。因此,容器技术在未来互联网将会得到更深入的发展、更广泛的应用。目前,容器技术已全面支持IPv6协议,能满足当下IPv4/IPv6双栈模式的需求,将来也能顺利过渡到纯IPv6的未来互联网。在未来互联网中,容器技术的价值将得到更大的利用。
参考文献:
[1] 项阳.吴建平:IPv6是未来互联网的主要创新平台[J].中国教育网络,2020(10):12-13.
[2] 余涛,毕军,吴建平.未来互联网虚拟化研究[J].计算机研究与发展,2015,52(9):2069-2082.
[3] 刘韵洁,黄韬,汪硕.关于未来网络技术体系创新的思考[J].中国科学院院刊,2022,37(1):38-45.
[4] Network Working Group.IP Version 6 Addressing Architecture[R].RFC-4291, 2006(2).
[5] KENT S, ATKINSON R.IP层协议安全结构(Security Architec⁃ture for the Internet Protocol) [R].RFC-2401,1998(12).
[6] 姚林.IPv6中安全协议IPSec的分析与研究[D].广州:华南理工大学,2005.
[7] 李斌.IPv6网络下IPSec机制的安全性改进研究[D].焦作:河南理工大学,2010.
[8] HINTON S,et al.IPv6 Flow Label Specification[R].RFC-6437,2011(11).
[9] 倪振松,刘宏嘉,陈建平.Docker与Kubernetes容器虚拟化技术与应用[M].北京:清华大学出版社,2022.
[10] 吉吉·赛凡.Kubernetes微服务实战[M]. 史天,张媛,楼炜,等,译.北京:机械工业出版社,2020.
[11] 张春晓.Kubernetes零基础快速入门[M].北京:清华大学出版社,2021.
[12] 毕小红,刘渊,陈飞.微服务应用平台的网络性能研究与优化[J].计算机工程,2018,44(5):53-59.
[13] 肖小芳,宋建新.Docker网络通信研究与实现[J].通讯世界,2017,24(22):1-2.
[14] 艾叔.Kubernetes快速进阶与实战[M].北京:机械工业出版社,2023.
[15] 刘明,李俊峰.容器化部署Kubernetes及容器内IPv6通信[J].电子技术与软件工程,2019(16):32-33.
【通联编辑:代影】
基金项目:江西省教育厅科学技术研究项目:融合docker 和nginx 建立应用云容器平台(项目编号:209926)