您的位置:

Kubeovn全面解析

一、kubeovn dpdk

Kubeovn是一种网络虚拟化工具,它使用DPDK技术来将OVS offload到网卡硬件,从而提高网络性能。DPDK实现快速数据包处理,允许应用程序可以直接访问NIC,以避免Linux内核中的性能限制。使用Kubeovn dpdk可以有效提高网络平面的吞吐量和延迟。


//kubeovn dpdk实例
apiVersion: kubeovn.io/v1alpha1
kind: VNIRouter
metadata:
  name: dpdk-router
spec:
  image: kubeovn/go-base
  type: Router
  makeGw: true
  useDpdk: true

二、kubeovn对比calico

Calico与Kubeovn非常相似,在Kubernetes集群中都能够提供高性能和高可靠性的网络连通性。但是,它们之间也存在着巨大的差异。Kubeovn倾向于提供完全托管的网络解决方案,这意味着在对集群的配置和管理方面,它的使用体验更加简单。而Calico则更侧重于高度定制化,在某些情况下可以提供更高的灵活性。


//kubeovn和calico对比实例
apiVersion: kubeovn.io/v1alpha1
kind: VNILoadBalancer
metadata:
  name: kubeovn-vs-calico-lb
spec:
  image: kubeovn/go-base
  type: LoadBalancer
  clusterIp: 10.1.1.1
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: kubeovn-vs-calico-np
spec:
  podSelector:
    matchLabels:
      app: kubeovn-vs-calico
  ingress:
    - from:
        - namespaceSelector:
            matchLabels:
              name: kube-system
          podSelector:
            matchLabels:
              name: etcd
      ports:
        - protocol: TCP
          port: 2379
  policyTypes:
    - Ingress

三、kubeovn 架构

Kubeovn的架构可以分为三个层次,每个层次都有自己的功能。第一层是虚拟机层,其主要作用是提供网卡服务。第二层是overlay层,在此层次上使用VXLAN(或者Geneve,GRE等协议)进行跨宿主机网络通信。第三层是逻辑网络层,它由kubeovn-agent管理,主要是通过OVS连接所有的端口。


//kubeovn架构实例
apiVersion: kubeovn.io/v1alpha1
kind: VNI
metadata:
  name: kubeovn-vni
spec:
  image: kubeovn/go-base
  type: Overlay
  network: default
  podSubnet: 10.244.0.0/16
  ipsecEnabled: true

四、kubeovn cilium

Cilium是一种基于BPF(Berkeley Packet Filter)的网络解决方案,作为基于Kubernetes的Service Mesh(服务网格)的一部分。Kubeovn和Cilium可以一起使用,从而实现高效、可靠的网络和服务保护。Kubeovn用于提供覆盖网络,而Cilium提供边界网络保护。这种联合使用可以保证应用程序的连通性和安全性。


//kubeovn cilium实例
apiVersion: kubeovn.io/v1alpha1
kind: VNIFirewall
metadata:
  name: kubeovn-cilium-fw
spec:
  image: kubeovn/go-base
  type: Firewall
  useCilium: true
  policyMode: Kubernetes
  rules:
    - allow:
        toCIDR: 10.0.0.0/8
      direction: In
    - allow:
        protocol: TCP
        toPort: 443
      direction: Out

五、kubeovn支持vpc

Kubeovn可以轻松地集成VPC(virtual private cloud)网络,从而让多个独立的云服务互相连接。利用Kubeovn的VPC支持功能,您可以创建一个高度安全的虚拟化网络,以连接所有独立的云服务。这种方法允许您在云环境中创建多种不同的应用程序并有效地管理它们之间的连接性,同时又能保证网络连接的安全性。


//kubeovn支持vpc实例
apiVersion: kubeovn.io/v1alpha1
kind: VNINetwork
metadata:
  name: kubeovn-vpc
spec:
  image: kubeovn/go-base
  type: Network
  networkMode: VPC
  vpcCidr: 10.0.0.0/16
  vpcId: vpc-id

六、kubeovn openyurt

OpenYurt是一个开源项目,它为Kubernetes提供了边缘计算特性。它可以让您在边缘环境中运行Kubernetes工作负载,并为您的应用程序提供网络连通性。Kubeovn和OpenYurt可以协同工作,且Kubeovn为OpenYurt提供了一个更有效的网络解决方案。使用Kubeovn,您可以在OpenYurt中实现高效和可靠的网络输入/输出控制。


//kubeovn openyurt实例
apiVersion: kubeovn.io/v1alpha1
kind: VNINetwork
metadata:
  name: kubeovn-openyurt
spec:
  image: kubeovn/go-base
  type: Network
  networkMode: Underlay
  openyurtEnabled: true
  ingress:
    - from:
        - podSelector:
            matchLabels:
              name: app1
          ports:
            - port: 80
              protocol: TCP
      to:
        - cidr: 10.244.0.0/16
      direction: In

七、kubeovn underlay

对于那些需要更个性化的网络配置的用户,Kubeovn提供了Underlay模式。Underlay模式可以将虚拟化网络直接映射到物理网络上,从而实现更复杂的网络布局。使用Underlay模式,您可以自定义路由规则,防火墙规则,IPAM和其他网络参数。


//kubeovn underlay实例
apiVersion: kubeovn.io/v1alpha1
kind: VNINetwork
metadata:
  name: kubeovn-underlay
spec:
  image: kubeovn/go-base
  type: Network
  networkMode: Underlay
  ipam:
    type: DHCP
  routing:
    - dst: 10.244.0.0/16
      gateway: 192.168.10.101

八、kubeovn是什么山寨网络

Kubeovn是一个开源项目,致力于帮助Kubernetes用户提供高效、稳定和可靠的网络服务。它提供了一个灵活的基础架构,可以让用户按照自己的需求创建和管理多种类型的虚拟网络。除了提供标准的虚拟化网络服务外,Kubeovn还支持多种附加功能,例如DPDK、VPC、OpenYurt、Cilium和Underlay等。


//kubeovn是什么山寨网络实例
apiVersion: kubeovn.io/v1alpha1
kind: VNINetwork
metadata:
  name: kubeovn-demo
spec:
  image: kubeovn/go-base
  type: Network
  networkMode: Overlay
  overlay:
    vxlanId: 10
  ingress:
    - from:
        - podSelector:
            matchLabels:
              name: webserver
      ports:
        - port: 80
          protocol: TCP
          name: http-port
      to:
        - podSelector:
            matchLabels:
              name: client
      direction: In
  egress:
    - from:
        - podSelector:
            matchLabels:
              name: client
      ports:
        - port: 22
        - port: 23
          protocol: TCP
        - port: 53
          protocol: UDP
      to:
        - cidr: 10.0.0.0/8
      direction: Out