银行信创之容器云适配最佳实践.docx

银行信创之容器云适配最佳实践.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

?

?

银行信创之容器云适配最佳实践

问题、挑战与解决之道

?

?

【导读】我国正在大力推动政府、国防、金融、交通等关键领域的信息化产品尽快实现国产化替代,并发布了多个重要政策来保障国产化的实施,加速实现信息核心技术的自主可控。信创国产化云的建设也是当下的重要任务,但在云计算平台软件与国芯物理服务器、国产操作系统的适配方面有不少的问题与挑战。

当前国内的信息技术的核心和标准大多数都由国外公司掌握和制定,因此存在诸多的安全风险。随着我国加快推进信息网络等新型基础设施建设、网络主权概念的逐步明确,信息技术应用创新产业已经成为当前信息化部署的关键词。我国正在大力推动政府、国防、金融、交通等关键领域的信息化产品尽快实现国产化替代,并发布了多个重要政策来保障国产化的实施,加速实现信息核心技术的自主可控。

中国农业银行作为国有银行,是中国金融体系重要的组成部分,也是信创国产化布局的关键领域,在IT建设方面发展十分迅速,其中引入云计算平台基础设施来承载新建应用系统已经作为行内的一条刚性原则。信创国产化云的建设也是当下的重要任务,在云计算平台软件与国芯物理服务器、国产操作系统的适配方面也遇到不少的问题与挑战,下面就这个话题举几个典型的案例和大家分享一下。

农行信创云是采用容器及容器调度为核心技术栈的PaaS平台。容器引擎Docker、容器编排调度组件kubernetes和容器网络插件等整体运行于银河麒麟或者CentOS8操作系统之上。服务器方面采用基于海光x86和鲲鹏arm处理器的国产服务器。

案例1基于国芯海光x86服务器安装Centos8操作系统,部署并运行Kubernetes网络插件flannel时出现跨服务器容器网络不通的现象。

现象:当我们完成基于海光服务器和CentOS8操作系统的kubernetes集群搭建时意外发现从集群外无法访问发布到集群的应用程序,使用同样的发布方式将应用程序发布到非国产化kubernetes集群上可以从集群外进行访问。环境信息如下:

操作系统:CentOSLinux8

内核版本:4.18.0-147.el8.x86_64

kubernetes版本:1.17.4

flannel版本:0.11.0(vxlan模式)

分析:我们从集群外访问到应用程序的流量路径上逐步进行排查,最后发现跨服务器节点访问应用容器IP和服务端口不可达。集群采用flannel的vxlan模式提供容器网络服务,flannel会在每个集群节点上分配一个私有子网来分配该节点的容器IP,当跨节点容器互访时,源容器的数据包会通过vxlan隧道封装技术进行封装后再通过节点UDP4789端口发送到目标节点,完成解封装后送至目标容器。使用tcpdump对flannel的UDP4789端口抓包发现,每个UDP数据包都会出现下图所示的badudpcksum并且该数据包被丢弃。

措施:查阅网上相关技术资料发现这个现象是由服务器网卡Checksumoffloading引起的。这项功能旨在如果内核想通过物理网卡向外发送数据包时可以让硬件网卡代替CPU来完成checksum计算,以节省CPU资源。如果网卡支持,可以设置对发送Tx或接收Rx有效,或者两者都有效。临时的解决方案是关闭flannel网络接口的Txchecksum功能,通过sudoethtool-Kflannel.1tx-checksum-ip-genericoff命令关闭。可以通过sudoethtool-kflannel.1查询当前checksum是否有效,如下图所示,可以看到tx-checksumming状态是off。

当然这并没有根本解决问题,从kubernetes社区上反馈的情况来看是由于kernelpacketchecksum的bug以及kubernetes的kube-proxy组件设置Iptables策略时引发的内核double-NAT进而设置了错误的checksum值的问题碰到一起就会出现vxlan跨节点网络丢包的现象,两者解决一个都可以解决此问题,详细内容可以具体参考以下链接:

/coreos/flannel/issues/1279

/kubernetes/kubernetes/pull/92035

一方面对于kernel的bug尚未查到明确的fixed版本,对于海光芯片的服务器来说我们是通过升级网卡驱动程序来解决的,服务器网卡为网讯的EthernetControllerRP2000,升级驱动程序及版本为kmod-ngbe-1.0.4-1.el8.x86_64和kmod-txgbe-1.1.12-1.el8.x86_64,这个解决方法只针对网讯的这款网卡,另一方面在kubernetes(v1.16.13、v1.17.9、v1.18.6)版本中对进

文档评论(0)

180****4026 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档