实践案例|用kube-ovn实现跨k8s的统一网络平面部署tidb

CNCF CNCF     2022-11-28     462

关键词:

作者:成臣(Sei Jin) PingCAP Marketing & Community 

chengchen@pingcap.com   Github: it2911 


在前不久举办的KubeCon China 2021大会上,来自PingCAP的成臣,根据日本用户“跨K8s网络平面部署TiDB”的需求,所做的方案调研,带来“用Kube-OVN创建一个跨K8s的统一网络平面”的分享。


分享中指出,Kube-OVN具有许多特性,其中集成多个K8s网络以开放和创建一个共同的网络平面的特性是其中最吸引人的特性之一。通过集成多个K8s网络,并允许应用程序在多个K8s集群上运行而无需感知,可以提高节点的使用效率,降低应用程序和体系结构的复杂性;更重要的是,支持数据中心级别的灾难恢复。


在介绍如何使用Kube-OVN构建一个跨K8s网络平面部署TiDB的同时,成臣还对解释类似部署场景的重要性和概念做了详细的解读。


为什么要使用跨集群网络

在我们的认知中,用户使用跨集群网络无非有以下几个诉求:

  • 第一个诉求,是用户对服务可用状态的要求。往往用户期待着自己的服务可以进行两地三中心的部署,尤其在日本这么一个灾害多发国家,很可能一个地震就会造成多个数据公中心的停止运作,所以两地三中心在灾害多发的国家或者地区显得尤为重要。

  • 第二个诉求,是用户期待对服务进行分离。各个云厂商特点不同,比如a和b两个云厂商之间的存储的价格相差10倍,那么在这种情况下,用户就可能希望实现将存储放在a厂商,将计算放在b厂商,同时a和b在一个共治的K8s的网络平面上运作。

  • 第三个诉求:用户希望有”逃生方案”,避免自己被锁定在一个云厂商服务上。

  • 第四个诉求:是用户的合规要求,进行Hybrid Cloud的建设。比如,用户在本地有一个K8s集群,在远程的公有云上也有一个K8s集群,想统一管理,进行一个内网的连接时,一个网络平面的话就显得格外重要。


  • 跨Kubernetes网络集群的几种方案

    普通情况下,我们所创建的ipv4的K8s集群内部是一个内网状态,如果想做到跨K8s集群的网络,是有几种方案可以被提供的,在此我调研了三种实现/方案:


  • 实现/方案一:IPv6 K8s集群
  • 众所周知,IPv6有一些它的优势,比如说给IPv6的K8s分配一些IPv6的IP地址之后,它的pod实际上可以在很多情况下直接被外网访问到,甚至不需要提供一些特殊的网络隧道方案.但是如果非常了解IPv6会发现,我们很难通过个人去构筑IPv6的网络,原因是这些IPv6的网段要经过申请机构的申请。

    当然你可以通过公有云上去申请IPv6的网段,但是如果在私有云的条件下,IPv6的网段申请,还有整个网络的建设是非常巨大和浩瀚的工程,对网络人员有很高的要求,所以此方案对硬件成本还有软件成本要求非常之高。
  • 实现/方案二:公有云厂商的方案

  • 公有云厂商实际上提供了很多跨K8s集群网络统一平面的方案,这些方案非常不错,但是也无法满足全部诉求:比如目前没有看到这些云厂商的网络方案可以基于IPv6实现。第二,这些云厂商的网络方案实际上无法跨云厂商进行构筑。
  • 实现/方案三:Kube-OVN方案
  • 经过不懈的寻找,我们发现CNCF上的新秀网络方案Kube-OVN,可以满足我们在私有环境下构筑两个K8s集群的统一网络平面的期待。


    Kube-OVN功能特性

    官网上Kube-OVN对自己的介绍是一个很灵活的企业级的解决方案,在使用的过程中,能够很明显感受到Kube-OVN灵活、高效安全的三个特性。


    首先,我们如何看待灵活这个特点?

    我们可以基于Kube-OVN建立一个三层的overlay的网络。它可以保证我们的PVC和Acl与现有的物理网络相对独立;同时,我们的子网和主机也就变得无关了,容器的IP可以在整个集群进行漂移。我们还可以根据NameSpace进行绑定,有效的实现多租户。大家知道K8s运维是一个非常麻烦的事情,如果在没有足够的自动化的条件下运维人员肯定希望一个K8s集群可以发挥出它最高的功效,这个时候多租户也就显得极为重要。


    关于overlay网络还有一点非常重要的特点,就是它可以有分布式网关和集中式网关两种出口方式。如何理解分布式网关和集中式网关呢?分布式网关就是每一个Node上自己单独分出去一个网关进行通信;集中式网关是我们指定一两个Node,这两个Node带宽可能非常高,作为所有网络流量的出入口。基于overlay网络设计,Kube-OVN灵活的特性给我非常深刻的印象。

    Kube-OVN第二个特性,就是它的高效性。

    这些特性主要是由于Kube-OVN可以建立一个Underlay的网络,它可以使Pod直接和底层的虚拟机或者物理机直接相通,甚至支持Pod在不同的vlan网络进行通讯,而且还提供了Overlay和Underlay的共存能力。这就意味着,构建网络高效的同时,可以不失灵活;另外,用户可以选择封包或者不封包,把网络流量传给Pod。使用Underlay的网络的能力,就可以为K8s集群提供一个高性能的网络。



    第三,我们来说Kube-OVN的安全特性。

    自从容器诞生之日起,容器的安全一直被受到极大的关注。过去人们把目光一直聚焦在运行时的安全上,K8s本身的网络安全一直受到很多的诟病,尤其是K8s的network policy设定选项不够丰富,Kube-OVN极大的丰富了容器的网络安全的选项(如图所示)。难能可贵的是,Kube-OVN支持复制容器的全流量,这一点有助于运维人员对流量的安全进行审计和分析工作。


    Kube-OVN运行Demo

    为了让大家更加了解本方案的一些操作,我们构筑两个K8s集群进行Kube-OVN的Demo演示。

    1、为了简化两个集群都仅使用一个Node节点部署,该节点也将同时被作为集群的Gateway节点,负责Kube-OVN的流量进出。

    2、准备OVN Interconnection节点

    3、各个节点的网络互联互通

    *注:本次demo的全部执行代码,可以通过链接取得:https://github.com/it2911/kube ovn-demo


  • 实验一:组建Multi Kubernetes统一网络平面

  • 第一组实验的主要流程是,我们先建立两个K8s集群,然后建立OVN interconnection集群。此后在两个集群分别建立两个NGINX pod,然后查看两个NGINX pod是否可以互联互通。

    我们可以看到7层网络已经被成功建立,而且两个K8s集群之间可以通过Kube-OVN正常的相互访问。

  • 实验二:MySQL 和 Wordpress的互联互通


  • 第二个实验,检验一下Kube-OVN的4层网络的访问能力。通过在K8s集群1建立 MySQL Pod,K8s集群2建立Wordpress Pod,来测试MySQL和Wordpress的互联互通。

  • 实验三:TiDB和Wordpress的互联互通

  • TiDB本身具有非常良好的MySQL兼容性,换而言之,我们也可以把TiDB和Wordpress进行连接。

    接下来给大家演示的是如何基于K8s部署TiDB,以及如何基于Kube-OVN创建的统一网络平面建立Wordpress和TiDB的连接。

     添加微信邀您进入Kube-OVN社区交流群 

    社区联系方式

    官网:

    https://www.kube-ovn.io

    GitHub: 

    https://github.com/kubeovn/kube-ovn

    Slack:

    https://kube-ovn-slackin.herokuapp.com

    咨询Kube-OVN企业版

    Kube-OVN提供面向企业场景的容器网络解决方案。

    填写表单,了解跨云网络管理、IaaS(包括OpenStack、VM等)与K8s统一网络技术栈、容器托管新一代数据中心SDN、微服务架构下高性能网络、5G及边缘集群落地等应用场景。


    文章转载自KubeOVN点击这里阅读原文了解更多


    CNCF概况(幻灯片)

    扫描二维码联系我们!




    CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux  Foundation,是非营利性组织。 

    CNCF云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请长按以下二维码进行关注。


    kube-ovn总体架构

    本文档将介绍Kube-OVN的总体架构,和各个组件的功能以及其之间的交互。总体来看,Kube-OVN作为Kubernetes和OVN之间的一个桥梁,将成熟的SDN和云原生相结合。这意味着Kube-OVN不仅通过OVN实现了Kubernetes下的网络规范,... 查看详情

    docker&k8s---k8s跨宿主机pod通信之flannel(代码片段)

    ...pod通信之FlannelKubernetes设计了网络模型,但却将它的实现交给了网络插件,CNI网络插件最主要的功能就是实现POD资源能够跨宿主机进行通信。常见的CNI网络插件:FlannelCalicoCanalContivOpenContrailNSX-TKube-routerFlannelflannel的 查看详情

    精讲docker跨主机通信

    目录概述一、Dockeroverlay案例1.环境2.配置二、Macvlan案例1.环境同上2.docker01和docker02操作概述跨主机网络意味着将不同主机上的容器用同一个虚拟网络连接起来。这个虚拟网络的拓扑结构和实现技术叫网络模型。提示:本节介... 查看详情

    k8s的网络接口cni及灵雀云的实践

    K8S的网络接口CNI及灵雀云的实践K8S的网络模型我们从底层网络来看,分为三个层面。首先是Pod之间的多个容器的网络互通。我们知道,K8S的Pod可以由多个容器组成,这个层面网络互通是比较简单的,因为所有的容器都是共享一个... 查看详情

    k8s知识点总结

    ...化)node包含组件:  5.Kubelet:直接跟容器引擎交互实现容器的生命周期管理。  6.Kube-Proxy:负责写入规则至IPTABLES、IPVS实现服务映射访问。其他:  7.COREDNS:可以为集群中的SVC创建一个域名与IP的对应关系解... 查看详情

    中小企业zabbix监控生产案例实践

    一、Zabbix监控介绍1、Zabbix的功能概述1.1zabbix是什么Zabbix是一个企业级的、开源的、分布式的监控套件。Zabbix可以对网络和服务进行监控。Zabbix利用灵活的告警机制,可实现微信短信和邮件的自动报警。Zabbix利用存储的监控数据... 查看详情

    k8s的网络详解

    ...型:flannel组建一个大二层扁平网络,pod的ip分配由flannel统一分配,通讯过程也是走flannel的网桥。每个node上面都会创建一个flannel0虚拟网卡,用于跨node之间通讯。所以容器直接可以直接使用podid进行通讯。跨节点通讯时,发送端... 查看详情

    微服务架构统一安全认证设计与实践

    点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取后台回复“k8s”,可领取k8s资料当企业应用系统逐渐增多后,每个系统单独管理各自的用户数据容易形成信息孤岛,分散的用户管理模... 查看详情

    一次客户需求引发的k8s网络探究

    前言在本次案例中,我们的中台技术工程师遇到了来自客户提出的打破k8s产品功能限制的特殊需求,面对这个极具挑战的任务,攻城狮最终是否克服了重重困难,帮助客户完美实现了需求?且看本期K8S技术案例分享!(友情提示... 查看详情

    k8s容器之间通讯方式

    ...s在启动容器的时候会先启动一个pause容器,这个容器就是实现这个功能的。这种类型又可以分为两种情况:1.两个pod在一台主机上面2.两个pod分布在不同主机之上针对第一种情况,就比较简单了,就是docker默认的docker网桥互连容... 查看详情

    kubernetes(k8s)应用案例

    ...部署变得更加容易。下面是该公司使用K8S解决平台问题的案例:部署服务该公司将所有服务转换为Docker容器,并使用K8S进行部署。K8S使用Pods作为最小部署单元,它可以管理容器,提供网络连接和存储卷,并自动协调容器之间的... 查看详情

    iosmvvm实践刷新网络请求+tableview展示数据

    先展示实现的效果图如下: 此示例展示用的是MVVM结构形式,表述如下 M:数据Model的存储,可以用来对属性进行处理。(即胖model概念,上图中xx万人订阅这个处理方法写在Model内)V:View。用来统一管理控件初始化与布局。VM:... 查看详情

    架构分析:「转转云平台」的kubernetes实践

    我主要从实现层面来介绍K8s在转转的实践。本着让rd无感容器相关概念的原则,转转云平台主要包括镜像管理、发布升级、容器监控、日志收集四个部分。总体架构这是转转云平台架构图,其中包括组件镜像存储、日志收... 查看详情

    socket的应用案例

    java提供网络功能的四大类1、InetAddress:用于标识网络上的硬件资源。2、URL:统一资源定位符,通过URL可以直接读取和写入网络上的数据。3、Socket:使用TCP协议实现网络通信的Socket相关类4、Datagram:使用UDP协议,将数据保存到数... 查看详情

    k8s使用filebeat统一收集应用日志(代码片段)

    ...ajvm内存监控数据收集相关的点上,本文将介绍使用filebeat实现pod日志的统一收集,集中存放使用集群外的elasticsearch,后续可以加上kibana及模板文件实现更友好的数据展示。一、准备和测试tomcat基础镜像该镜像主要是配置jdk环境... 查看详情

    直击痛点,详解k8s日志采集最佳实践

    ...你遇到过几个?》第二篇:《一文看懂K8s日志系统设计和实践》第三篇:《9个技巧,解决K8s中的日志输出问题》Kubernetes日志采集难点在Kubernetes中,日志采集相比传统虚拟机、物理机方式要复杂很多,最根本的原因是Kubernetes把... 查看详情

    直击痛点,详解k8s日志采集最佳实践

    ...你遇到过几个?》第二篇:《一文看懂K8s日志系统设计和实践》第三篇:《9个技巧,解决K8s中的日志输出问题》Kubernetes日志采集难点在Kubernetes中,日志采集相比传统虚拟机、物理机方式要复杂很多,最根本的原因是Kubernetes把... 查看详情

    唯品会亿级数据服务平台实践

    点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取后台回复“k8s”,可领取k8s资料数据服务是数据中台体系中的关键组成部分。作为数仓对接上层应用的统一出入口,数据服务将数仓当作一... 查看详情