![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
kubernetes CNI 网络
文章平均质量分 91
CNI
张忠琳
我就是我 不用在怀疑
展开
-
【kubernetes/k8s概念】kube-ovn-controller 源码分析之三
本文分析 vlan 控制器的源码实现原创 2021-08-10 17:20:57 · 7705 阅读 · 0 评论 -
【kubernetes/k8s概念】kube-ovn-controller 源码分析之二
kube-ovn-controller 逻辑职责是翻译 kubernetes 网络概念到 OVN,可以理解为 kube-ovn 的控制面功能,通过 kube-apiserver watch 所有网络相关事件,包括 Pod creation/deletion, Service/Endpoint modification, Networkpolicy changes 等等。然后翻译转为 OVN 逻辑网络的修改。也 watch kube-ovn 添加的 CRD,比如 VPC Subnet Vlan IP ...原创 2021-08-10 16:13:03 · 7759 阅读 · 1 评论 -
【kubernetes/k8s概念】kube-ovn文档基本概念解析
1. Vpc 从 v1.6.0 开始,用户可以创建自定义 VPC。 每个VPC都有独立的地址空间,用户可以设置重叠的CIDR、Subnet和Routes。 默认情况下,所有没有 VPC 选项的子网都属于默认 VPC。 对于不打算使用自定义 VPC 的用户,所有功能和用法保持不变。kind: Vpcmetadata: name: test-vpc-1spec: namespaces: - ns1---kind: Vpcmetadata: name: test...原创 2021-08-10 08:57:23 · 9131 阅读 · 0 评论 -
【kubernetes/k8s概念】OVN SouthBound DB 及 ovn-sbctl 命令
OVN 南向数据库(OVN Southbound DB),南向数据库是系统的中心,客户端是上层的 ovn-northd 和下层运行在每一个传输节点的 ovn-controller。南向数据库包括三类数据,物理网络表 PN 指定了怎么到达 hepervisor 和其他节点, 逻辑网络表 LN,表述了涉及逻辑数据流的逻辑网络,Binding 表连接逻辑网络组件到物理网络,hypervisor 填充 PN 和 Port_Binding 表,而 ovn-northd 填充 LN 表。参考:...原创 2021-07-28 11:31:23 · 8479 阅读 · 0 评论 -
【kubernetes/k8s概念】OVN NorthBound DB 及 ovn-nbctl 命令
Northbound DB 是 OVN 和 CMS 之间的接口,Northbound DB 的数据几乎都是由 CMS 产生的,ovn-northd 监听这个数据库的内容,然后翻译并保存到 Southbound DB 里面。 Northbound DB 主要有如下表:Table Purpose NB_Global Northbound configuration for an OVN system. This table must haveexactly...原创 2021-07-28 10:15:58 · 9042 阅读 · 0 评论 -
【kubernetes/k8s概念】kube-ovn-controller 源码分析之一
kube-ovn-controller 逻辑职责是翻译 kubernetes 网络概念到 OVN,可以理解为 kube-ovn 的控制面功能,通过 kube-apiserver watch 所有网络相关事件,包括 Pod creation/deletion, Service/Endpoint modification, Networkpolicy changes 等等。然后翻译转为 OVN 逻辑网络的修改。也 watch kube-ovn 添加的 CRD,比如 VPC Subnet Vlan IP ...原创 2021-07-27 09:44:20 · 8272 阅读 · 0 评论 -
【kubernetes/k8s概念】ovn架构
OVN, the Open Virtual Network,是一个在虚拟机和容器环境中支持逻辑网络抽象的系统。OVN 补充了 OVS 的现有功能,以添加对逻辑网络抽象的本机支持,例如逻辑 L2 和 L3 覆盖和安全组。就像 OVS 一样,OVN 的设计目标是拥有可以大规模运行的生产质量实现。参考:https://www.mankier.com/7/ovn-architecture...原创 2021-07-26 16:35:38 · 8210 阅读 · 1 评论 -
【kubernetes/k8s概念】kube-ovn架构和部署安装
Kube-OVN是一款由灵雀云自主研发的开源企业级云原生Kubernetes容器网络编排系统,它通过将OpenStack领域成熟的网络功能平移到Kubernetes,极大增强了Kubernetes容器网络的安全性、可运维性、管理性和性能,为Kubernetes生态的落地带来了独特的价值。Kube-OVN可提供跨云网络管理、传统网络架构与基础设施的互联互通、边缘集群落地等复杂应用场景的能力支持,解除Kubernetes网络面临的性能和安全监控的掣肘,为基于Kubern...原创 2021-07-26 15:19:23 · 10489 阅读 · 0 评论 -
【kubernetes/k8s概念】Cilium架构与概念
Cilium着重强调了其在网络安全上的优势,可以透明的对Kubernetes等容器管理平台上的应用程序服务之间的网络连接进行安全防护。Cilium在设计和实现上,基于Linux的一种新的内核技术eBPF,可以在Linux内部动态插入强大的安全性、可见性和网络控制逻辑,相应的安全策略可以在不修改应用程序代码或容器配置的情况下进行应用和更新。1. Cilium 架构...原创 2021-07-14 09:11:46 · 9333 阅读 · 0 评论 -
【kubernetes/k8s源码分析】calico typha源码分析
描述 Typha:在节点数比较多的情况下,Felix 可通过 Typha 直接和 Etcd 进行数据交互,不通过 kube-apiserver,既降低其压力。(有待验证) 引入网上他人图片,恩画的非常好BGPClient(BIRD):把 Felix写入 kernel的路由信息...原创 2019-11-27 10:26:49 · 5767 阅读 · 0 评论 -
【kubernetes/k8s源码分析】CNI bandwidth源码分析
github:https://github.com/containernetworking/plugins 对 K8S 集群中 Pod 的出入带宽进行限制,使用Token Bucket Filter(TBF)来限流的插件1. cmdAdd 函数 得到 conf 配置从标准输入输出内容为:CNIVersion:\"0.3.0\" Name:\"k8s-po...原创 2019-08-01 14:11:43 · 3714 阅读 · 0 评论 -
【kubernetes/k8s概念】flannel源码分析
https://github.com/coreos/flannel源码编译:make dist/flanneld-amd64Flannel支持多种Backend协议,官方推荐使用以下Backend:VXLAN,性能损耗大概在20~30% host-gw, 性能损耗大概10%,要求Host之间二层直连,因此只适用于小集群Flannel的工作原理 Flannel实质上是一种...原创 2018-09-20 11:08:10 · 3941 阅读 · 0 评论 -
【kubernetes/k8s源码分析】CNI calico ipam源码分析
https://github.com/projectcalico/cni-plugin本文基于v1.11.0,v3 主要差别是etcdv3以及设置的key路径calico解决不同物理机上容器之间的通信,而calico-plugin是在k8s创建Pod时为Pod设置虚拟网卡(容器中的eth0和lo网卡),calico-plugin是由两个静态的二进制文件组成,由kubelet以命令行的形式调...原创 2018-09-27 15:30:35 · 5550 阅读 · 1 评论 -
【kubernetes/k8s源码分析】CNI macvlan源码分析
macvlan原理 在linux命令行执行lsmod | grep macvlan查看当前内核是否加载了该driver;如果没有查看到,可以通过modprobe macvlan来载入 macvlan:使用 macvlan 技术,从某个物理网卡虚拟出多个虚拟网卡有独立的 ip 和 mac 地址工作模式(后面中提到的mode)Bridge:属于同一个paren...原创 2018-11-01 14:34:55 · 4929 阅读 · 0 评论 -
【kubernetes/k8s源码分析】ingress-nginx 源码解析
github地址: https://github.com/kubernetes/ingress-nginxusr/bin/dumb-init /nginx-ingress-controller --default-backend-service=kube-system/default-http-backend --configmap=kube-system/nginx-configura...原创 2018-07-12 14:20:16 · 5263 阅读 · 1 评论 -
【kubernetes/k8s源码分析】coredns 源码分析之二启动流程
CoreDns 采用插件机制,所有功能都是插件形式编写,用户可以扩展自己的插件1. init 函数 路径: core/dnsserver/register.go 调用 caddy.RegisterServerType 注册了 dns 类型的服务,context,这里有两个参数Directives,插件名称的 string 列表,也代表了代码中的...原创 2019-08-18 09:13:43 · 3478 阅读 · 0 评论 -
【kubernetes/k8s源码分析】coredns 源码分析之三 kubernetes 插件
插件描述:https://coredns.io/plugins/1. kubernetes 插件kubernetes [ZONES...] { endpoint URL tls CERT KEY CACERT kubeconfig KUBECONFIG CONTEXT namespaces NAMESPACE... ...原创 2019-08-18 12:22:14 · 4111 阅读 · 0 评论 -
【kubernetes/k8s源码分析】coredns 源码分析之四 cache 插件
Description Withcacheenabled, all records except zone transfers and metadata records will be cached for up to 3600s. Caching is mostly useful in a scenario when fetching data from the backen...原创 2019-08-27 19:25:20 · 5265 阅读 · 0 评论 -
【kubernetes/k8s源码分析】pod dns 源码分析
Description 在 kubernetes 中有 4 种 DNS 策略,分别是ClusterFirstWithHostNet、ClusterFirst、Default、和None,这些策略可以通过dnsPolicy来定义,如果Pod、Deployment 或者 RC 等资源时没有定义 dnsPolicy,默认使用ClusterFirst策略 a. ...原创 2019-09-06 15:10:07 · 4925 阅读 · 0 评论 -
【kubernetes/k8s概念】CNI plugin calico源码分析
https://github.com/projectcalico/cni-plugin,release-v3.8 calico 解决不同物理机上容器之间的通信,而 calico-plugin 是在 k8s 创建 Pod 时为 Pod 设置虚拟网卡(容器中的eth0和lo网卡),calico-plugin 是由两个静态的二进制文件组成,由 kubelet 以命令行的形式调用,这...原创 2018-09-18 14:24:30 · 7227 阅读 · 0 评论 -
【kubernetes/k8s概念】CNI plugin bridge源码分析
什么是bridge bridge是一个虚拟网络设备,可以配置IP、MAC地址等;其次,bridge是一个虚拟交换机,和物理交换机有类似的功能。 普通的网络设备只有两端,从一端进来的数据会从另一端出去,如物理网卡从外面网络中收到的数据会转发给内核协议栈,而从协议栈过来的数据会转发到外面的物理网络中。 Bridge(桥)是 Linux 上用来做 TC...原创 2018-09-17 10:15:51 · 4502 阅读 · 0 评论 -
【kubernetes/k8s概念】CNI源码分析
https://github.com/containernetworking/cni1、main函数配置文件目录netdir,如果未指定,则默认为/etc/cni/net.d 调用libcni.LoadConfList(netdir, os.Args[2]),参数os.Args[2]为用户指定的的network的名字 func main() { netdir :=...原创 2018-09-14 14:25:08 · 4090 阅读 · 0 评论 -
【kubernetes/k8s源码分析】calico node confd源码分析
github:https://github.com/kelseyhightower/confdfork:https://github.com/projectcalico/confdWHAT confd confd:根据etcd上状态信息,与本地模板,生成并更新BIRD配置 通过lsdir获取当前目录下的所有子目录。第一层子目录为域名,根据域名即可生成acl规则、...原创 2019-07-28 15:08:42 · 3140 阅读 · 0 评论 -
【kubernetes/k8s概念】calico iptables 规则分析
本文为 calico 3.7 版本名词解释endpoint: 接入到calico网络中的网卡称为endpointAS: 网络自治系统,通过BGP协议与其它AS网络交换路由信息ibgp: AS内部的BGP Speaker,与同一个AS内部的ibgp、ebgp交换路由信息。ebgp: AS边界的BGP Speaker,与同一个...原创 2019-07-31 11:56:20 · 8884 阅读 · 2 评论 -
【kubernetes/k8s源码分析】calico node felix源码分析之一
github:https://github.com/projectcalico/felix 本文分析数据平面內容 Felix是一个守护程序,在每个 endpoints 的节点上运行。Felix 负责编制路由和 ACL 规则等,以便为该主机上的 endpoints 资源正常运行提供所需的网络连接。 Felix负责以下任务:管理网络接口,Feli...原创 2019-07-29 11:25:02 · 6642 阅读 · 0 评论 -
【kubernetes/k8s源码分析】calico node felix源码分析之二
// Now create the calculation graph, which receives updates from the// datastore and outputs dataplane updates for the dataplane driver.//// The Syncer has its own thread and we use an extra thre...原创 2019-07-29 17:54:55 · 3879 阅读 · 0 评论 -
【kubernetes/k8s源码分析】calico node felix ipset 源码分析
IPSet 描述 IPSet技术可以将策略中的五元组(协议,源地址,源端口,目的地址,目的端口)合并到有限的集合中,可以大大减少IPTables策略条目从而提高效率。 -m set 指定加载的模块:set 对应 IPSet 模块IPSet类型hash:ip 单独指定(si=源地址)或(di=目标地址) hash:ip,port 指定(sis...原创 2019-08-02 09:55:51 · 3654 阅读 · 0 评论 -
【kubernetes/k8s源码分析】calico node felix routetable 源码分析
源码路径:github.com/projectcalico/felix/routetable/route_table.goRouteTable 结构体定义如下:type RouteTable struct { logCxt *log.Entry ipVersion uint8 netlinkFamily int netlinkTimeout...原创 2019-08-02 11:39:00 · 3428 阅读 · 0 评论 -
【kubernetes/k8s源码分析】calico node felix endpoint manager源码分析
源码路径: github.com/projectcalico/felix/dataplane/linux/endpoint_mgr.go结构体 endpointManagerwlIfaceRegexp:calico iface 正则表达式,^cali.*kubeIPVSSupportEnabled:根据网卡为// endpointManager manages the d...原创 2019-08-04 17:05:32 · 3179 阅读 · 0 评论 -
【kubernetes/k8s源码分析】calico node felix policy manager源码分析
Network Policy提供了基于策略的网络控制,用于隔离应用并减少攻击面。使用标签选择器模拟传统的分段网络,并通过策略控制流量以及外部流量。Network Policy 需要网络插件来监测策略和 Pod 的变更,并为 Pod 配置流量控制 policy 和 profile 都是做策略管理的,但是policy 更加细致,优先级也更高(相对于profile)。...原创 2019-08-05 09:57:42 · 3263 阅读 · 0 评论 -
【kubernetes/k8s概念】calico 介绍与与原理
WHAT Calico Calico是一个纯三层的协议,使用虚拟路由代替虚拟交换,每一台虚拟路由通过BGP协议可达信息(路由)到剩余数据中心。与 Flannel 不同的是 Calico 不使用隧道或 NAT 来实现转发,而是巧妙的把所有二三层流量转换成三层流量,并通过 host 上路由配置完成跨 Host 转发 把 Host 当作 Internet 中的路由器,同样...原创 2019-07-28 13:45:34 · 8590 阅读 · 0 评论 -
【kubernetes/k8s概念】calico node bird原理分析
github:https://github.com/projectcalico/birdBIRD是什么 BIRD是布拉格查理大学数学与物理学院的一个学校项目,项目名是BIRD Internet Routing Daemon的缩写。 目前,它由CZ.NIC实验室开发和支持。 BIRD项目旨在开发一个功能齐全的动态 IP 路由守护进程,主要针对(但不限于)Linu...原创 2019-07-29 10:40:07 · 6417 阅读 · 0 评论 -
【kubernetes/k8s概念】CNI详解
1、为什么CNI CNI是Container Network Interface的是一个标准的,通用的接口。现在容器平台:docker,kubernetes,mesos,容器网络解决方案:flannel,calico,weave。只要提供一个标准的接口,就能为同样满足该协议的所有容器平台提供网络功能,而CNI正是这样的一个标准接口协议。2、什么CNI CN...原创 2018-09-14 09:52:51 · 30693 阅读 · 1 评论 -
【kubernetes/k8s源码分析】kube-dns 源码解析之sidecar
github地址:https://github.com/kubernetes/dnssidecar● 定期检查kubedns和dnsmasq的健康状态(nslookup)● 为k8s活性检测提供HTTP API/sidecar--v=2--logtostderr--probe=kubedns,127.0.0.1:10053,kubernetes.defaul...原创 2018-07-10 15:54:40 · 3690 阅读 · 0 评论 -
【kubernetes/k8s源码分析】kube-dns 源码解析之dnsmasq-nanny
github地址:https://github.com/kubernetes/dnsdnsmasq简介Dnsmasq是一款小巧的DNS配置工具● 通过kubedns容器获取DNS规则,在集群中提供DNS查询服务● 提供DNS缓存,提高查询性能● dnsmasq通过参数—server=127.0.0.1#10053指定upstream为kubedns。/dnsmasq-na...原创 2018-07-10 15:25:52 · 4022 阅读 · 0 评论 -
【kubernetes/k8s源码分析】kube-dns 源码解析之kubedns
https://github.com/kubernetes/dns结构和kubernetes的代码结构类似:首先看cmd/kube-dns/dns.go启动参数例子: /kube-dns --domain=cluster.local. --dns-port=10053 --config-dir=/kube-dns-config --v=2kubedns进程的功能:接入SkyDNS,...原创 2018-07-09 16:58:50 · 3904 阅读 · 0 评论 -
【kubernetes/k8s源码分析】CNI flannel源码分析
源码路径:https://github.com/containernetworking/plugins版本: v.0.10.0flannel cni路径: plugins/plugins/meta/flannel/flannel.gosubnet.env文件# cat /run/flannel/subnet.env FLANNEL_NETWORK=172.30.0.0/...原创 2018-11-29 18:02:12 · 3360 阅读 · 0 评论 -
【kubernetes/k8s源码分析】CNI host-local源码分析
接着上章节假设host-local成功分配IP,这章节讲解host-local源码地址:https://github.com/containernetworking/plugins参数{ "name": "macvlannet", "cniVersion": "0.1.0", "type": "macvlan", "master": "eth0",...原创 2018-11-01 20:29:28 · 4705 阅读 · 1 评论 -
【kubernetes/k8s源码分析】coredns 源码分析之一解读源码
CoreDns 是高性能,高扩展性的 DNS 服务。解决 Kube-dns 一些问题,CoreDns 采用插件机制,所有功能都是插件形式编写,用户可以扩展自己的插件 CoreDNS 基于 Caddy 框架实现,整个项目大量使用了 Caddy 的插件功能1. 读取 plugin.cfg生成文件 1.1 directives_gener...原创 2019-08-16 15:36:44 · 4189 阅读 · 0 评论 -
【kubernetes/k8s源码分析】calico node源码分析
calico node 工作内容镜像命令 start_runit#!/bin/sh# From https://github.com/faisyl/alpine-runitenv > /etc/envvars/etc/rc.localretval=$?if [ $retval -ne 0 ];then echo >&2 "Calico node ...原创 2019-07-28 13:46:05 · 5355 阅读 · 0 评论