前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kube-OVN源码解析(一) | kube-ovn-controller

Kube-OVN源码解析(一) | kube-ovn-controller

作者头像
灵雀云
发布2022-08-11 11:14:50
5720
发布2022-08-11 11:14:50
举报

导读

Kube-OVN是一款基于OVS/OVN的K8s网络项目,它通过将 OpenStack 领域成熟的网络功能平移到 K8s,极大增强了 K8s 容器网络的安全性、可运维性、管理性和性能,为 K8s 生态的落地带来了独特的价值。

本系列文章,我们将分享kube-ovn-controller、Pod IP地址管理、Pod 网卡管理-CNI插件、Pod 安全组功能、vagrant统一编译和测试环境,深度分析Kube-OVN,帮助您快速上手。

作者:Kube-OVN社区贡献者 Mr.Li

作者说

kube-ovn-controller是kube-ovn项目主要资源的CRD控制器,主要功能包含vlan、provider、vpc、subnet等CRD资源的处理,也包括pod的IP分配、ovn port创建删除等操作。注:当前版本:v1.8.0

容器编排

kube-ovn-controller是以deployment的形式部署到k8s集群中的,其编排在install.sh脚本中根据不同配置生成,然后apply到集群中。详见下图install.sh

kube-ovn-controller的镜像也是kubeovn/kube-ovn:v1.8.0,是通过软连接kube-ovn二进制文件为kube-ovn-controller,然后使用kube-ovn-controller命令启动来区分走controller流程的,详见下图

Controller主流程

main函数

Controller初始化

Controller运行

Controller的worker

我们这里先介绍controller的关键工作worker,这样后续介绍如VPC资源的处理时,大家才能更容易找到入口。controller作为资源控制器,会创建很多的worker(go routine)来处理对应资源如VPC资源的创建、更新、删除事件。每个worker其实都有自己的工作队列,当资源出现新的事件时,就将事件放入队列中,后续worker从队列中取出处理。

比如VPC资源的事件入队注册:

以add事件为例:

worker创建:

VPC资源的runAddVpcWorker:

其他资源如subnet、pod等基本模式都和上述VPC基本一致。

Controller的关键初始化

默认VPC:

创建:

InitDefaultVpc()

kube-ovn在部署完成之后会默认为用户创建默认VPC(custom vpc是后续版本引入的功能,早期版本应该是只有这个默认VPC)。用户创建的其它资源如subnet、pod默认都是处于该默认VPC下的,除非进行了特殊指定。

VPC在kube-ovn项目中其实和VPC在Openstack项目中的含义接近,都是为了描述一组用户隔离的网络资源。比如VPC之间是相互隔离的,VPC下的子网也是相互隔离的,不同用户VPC可以使用相同的子网网段等。VPC资源至少包含一个对应ovn项目的逻辑路由器,即我们用ovn-nbctl lr-add创建出来的lr资源。

这里的InitDefaultVpc()就是为了保证K8s集群中有一个默认名为ovn-cluster的VPC:

VPC资源处理:

从上文我们知道controller会有worker专门来处理vpc资源的add/update事件(当然也有worker处理vpc的delete事件,这里暂不介绍了),接下来我们就来看看这个worker实际上做了哪些内容。

从上述代码可知,默认VPC的关键操作就是创建ovn的逻辑路由器,custom VPC则还多了一个静态路由的处理。我们看下逻辑路由器的创建:

Kube-OVN源码解析系列由社区成员倾情奉献

手把手教你征服Kube-OVN

下期:我们讲Pod IP地址管理

敬请期待!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生技术社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导读
    • 作者说
    • 容器编排
    • Controller主流程
      • main函数
        • Controller运行
          • Controller的worker
          • Controller的关键初始化
            • 默认VPC:
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档