云计算_K8s网络CNI_Kube-OVN

K8s概念

VPC 专有网络VPC(Virtual Private Cloud
CRI (container runtime interface) :CRI Client,CRI Server,OCI Runtime。
      :CRI Client 端有个实现就是 kubelet,CRI Server 端有个实现叫 Containerd,OCI Runtime 有好多实现其中有个叫 runc
CRD 全称是 Custom Resource Definition
CDI (containerized-data-importer) 是kubernetes的持久存储管理插件
CNI (ContainerNetwork Interface
CSI ,Container Storage Interface
PV全称叫做 PersistentVolume  PVC StorageClass
kubernetes的节点需要对os、docker、etcd、k8s、cni和网络插件的安装和配置

标准化建设:  主要包括设备、系统、软件等三类对象资源 
    资源标准化  流程标准化   数据标准化

k8s网络模式

让集群中的各种 pod 之间能自由通信  IP-per-Pod模型
 1. pod ip 地址的管理
 2. 同一节点上的 pod 之间互相通信
 3. 不同节点上的 pod 之间互相通信
插件
  flannel,这个是利用的静态路由表配置或者 vxlan 实现的网络通信。
  calico,是通过 BGP 协议实现了动态路由。
  Weave,以及 OVN 之类的各种各样的网络插件
概念
 Net Namespace 	
 Veth 设备对  veth1 veth2     veth-pair 连接不同的命名空间  以太网设备
 iptables  Netfilter  网络栈处理数据包过程对数据包的操作
 routed 路由	 

Docker 支持的网络模式

 --net=bridge
 --net=host
 --net=container:
 --net=none
   未考虑多主机互联解决方案

OpenStack

 VM 创建时指定 IP,VM 生命周期内地址保持固定
 VM 创建时随机地址分配,VM 生命周期内地址保持固定
 VM 热迁移过程中业务网卡保持地址固定
OpenStack社区,虚拟网络已经有了长足的发展,方案成熟,OVS 基本已经成为网络虚拟化的标准
   OVS 以及 OVS 的控制器OVN
   OVN 和 OVS 的关系就好比 Kubernetes 和 Docker 的关系
   在OpenStack领域内成熟的网络功能往 Kubernetes 平移,也就诞生了灵雀云的开源项目 Kube-OVN    
 VM 创建时指定 IP
    对于由管理员主动给 VM 分配地址,并在启动前确定地址的情况,
     只需要在 KubeVirt 的VirtualMachine 的template中的
 	    annotations增加 ovn.kubernetes.io/ip_address 来指定需要分配的地址
 metadata:
   annotations:
     ovn.kubernetes.io/ip_address: 10.16.0.15

kubevirt

用于创建虚拟机	
 kubevirt是Red Hat开源的以容器方式运行虚拟机的项目,是基于kubernetes运行,
 利用k8s CRD为增加资源类型VirtualMachineInstance(VMI)
 
 kubevirt以CRD的形式将VM管理接口接入到kubernetes中,通过一个pod去使用libvirtd管理VM的方式,实现pod与VM的一一对应
 
 KubeVirt 社区的用户在 Kube-OVN 中贡献了大量针对云原生虚拟化进行强化的功能,
 包括固定地址,多租户网络和 SR-IOV 以及 OVS-DPDK 等功能
  KubeVirt 上的虚拟化管理可以通过控制网络所属的 VPC 和 Subnet 来实现不同的 VM 落在不同的租户网络,从而实现整个虚拟化方案的多租户
  kubevirt可以使用容器的image registry去创建虚拟机并提供VM生命周期管理。
  结构:virtctl virt-api virt-controller virt-handler  virt-launcher
  虚拟机镜像  虚拟机生命周期管理  容器和虚拟机互通

Kube-OVN

安装:需要两个 yaml 就可以部署一个完整的 Kube-OVN
使用:annotation 即可对网络进行配置
 Kube-OVN提供了大量目前Kubernetes不具备的网络功能
 Kube-OVN 支持两种网关:分布式网关和集中式网关	
 Kube-OVN The Most Advanced Kubernetes Network Fabric
 在Kube-OVN的网络拓扑里,不同 Namespace 对应着不同的子网。子网是其中最为重要的概念,
   之后的内置负载均衡器,防火墙,路由策略以及DNS的网络功能都是和子网绑定的

网络

 CNI 负责基础容器网络,它本身只是个接口标准
  kube-proxy 集群内的服务发现网络需要依赖 kube-proxy,而 kube-proxy 又有 iptables 和 ipvs 两种实现
  集群内的 DNS 需要依赖额外组件kube-dns 或coredns
  网络策略的 NetworkPolicy 本身只是一个标准接口
   ingress 只是一个标准接口	    
 网络策略:子网划分、vlan 绑定、nat、qos、固定 IP
posted @ 2022-06-15 10:40  辰令  阅读(696)  评论(0编辑  收藏  举报