K8S cni开发
Posted 南昌拌粉的成长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S cni开发相关的知识,希望对你有一定的参考价值。
一、前题准备
网络通信前有个路由转发的功能,需要开启:
1、允许防火墙,路由转发
iptables -A FORWARD -j accept
2、内核允许路由转发,修改值为1
sudo bash -c \'echo 1\' >/proc/sys/net/ipv4/ip_forward
二、基础概念
1、bridge:bridge 是个 linux 下支持创建的虚拟网络设备,作用就和物理设备的网桥差不多,或者说它更像交换机,同时具备二层转发和三层路由的能力
1)、查看bridge:
brctl show
2)、添加bridge:
brctl addbr br-vx
2、vxlan:linux系统上的一个虚拟的网络设备,它能够对主机上要发出去的包进行udp的封装
1)、添加vxlan:
ip link add vxlan10 type vxlan id 100 remote 192.168.153.120 dstport 4789
3、网关:网关的本质是作为ip通信的中转站,网络包在传输过程中,目的ip是不会变的,一直在变化的是mac地址,每到一台主机,那么目的mac地址就会发生变化,变成下一个网关的mac地址。数据包需要到达的下一台主机被称作"下一跳"
三、同一主机上pod通信原理
想实现同一台节点上,互相隔离的两个 pod 之间通信,一般采用的办法就是 veth pair + bridge。
1、首先 linux 支持创建 veth pair 设备,这是一对儿虚拟设备,大家可以简单地想象成它就是一根儿网线,网线两头各自有个插头,这个插头可以自由插入 linux 下 net ns 或者其他虚拟网络设备,然后从某一头发送的消息可以送达到另外一头儿
2、bridge 也是个 linux 下支持创建的虚拟网络设备,作用就和物理设备的网桥差不多,或者说它更像交换机,同时具备二层转发和三层路由的能力
3、我们将要创建一个 bridge,然后再创建一对儿 veth pair,将 veth 的一头儿插入到 bridge 上,将另一头儿插入到 pod 所在的 netns 中(其实 pod 所谓的网络资源隔离就是单纯地通过 netns 做的,因此只需要将 veth 插到这个 netns 中就 ok 了。而这个 netns 是在 CRI 调用插件时就传过来了)
4、利用 ipam 从 etcd 中获取当前节点上的 pod 所在网段,比如是 10.244.0.0,然后我们默认使用这个 网段+ 1 的 IP 作为 bridge 的 ip 地址,比如 master 节点的网段是 10.244.0.0,则让网桥地址是 10.244.0.1,其他节点也是如此,分别塞上 10.244.1.1/10.244.2.1/10.244.3.1/......,将这个 10.244.0.1 塞给网桥后,当将 ip 塞给网桥的瞬间,网桥就具备的三层的路由能力,然后它就可以作为所有连在它身上的网络设备的网关了
5、给 pod 内的 netns 设置默认路由,网关为 bridge,让 pod 内部可以 ping 通 10.244.0.0 之外的网段
6、当有新的 pod 被创建时,重复上述 5 、6、7、9 的动作
7、vxlan之间传输的包:用arp协议封装的一个mac包
四、实现不同节点的 pod 互通
要实现让不同节点的设备互通方法有很多,不过总的归类来讲,大致有三种:
- 走主机的静态路由,这种方式相对简单,我们就采用这种方式
- overlay 网络,也叫隧道网络
- 动态路由网络
像类似第二种方式,在 flannel 里叫 gw-host,第三种方式可以使用 vxlan 或者其他隧道网络技术,第四种是 calico 主要采用的方式,使用 BGP 协议在多台主机上做动态路由设置
评分模型的检验方法和标准通常有:K-S指标交换曲线AR值Gini数等。例如,K-S指标是用来衡量验证结果是否优于期望值,具体标准为:如果K-S大于40%,模型具有较好的预测功能,发展的模型具有成
评分模型的检验方法和标准通常有:K-S指标、交换曲线、AR值、Gini数等。例如,K-S指标是用来衡量验证结果是否优于期望值,具体标准为:如果K-S大于40%,模型具有较好的预测功能,发展的模型具有成功的应用价值。K-S值越大,表示评分模型能够将“好客户”、“坏客户”区分开来的程度越大。
例如,K-S指标是用来衡量验证结果是否优于期望值,具体标准为:如果K-S大于40%,模型具有较好的预测功能,发展的模型具有成功的应用价值。K-S值越大,表示评分模型能够将“好客户”、“坏客户”区分开来的程度越大。
信用评分模型介绍(一)
引言:对于信用评分模型,很多朋友或多或少有所了解,这里做一般性的介绍,并分享自己的多年从业经验。这边短文主要包括:信用评分模型,自变量的生成、筛选、分档和转换,及常用有监督学习模型。
信用评分模型
信用评分模型是一种有监督的学习模型(Supervised Learning),数据由一群自变量X和对应的因变量y构成。传统零售信用模型中,X大致分为客户的基本信息(年龄、性别、职业、学位等),财务信息(收入,每月生活消费,每月信贷还款额等),产品信息(LTV,信用卡类别,个人贷款用途等),征信信息(前6个月被查询次数,前6个信用卡最大利用率,未结清贷款数等);而一般取值0-1因变量y可以定义为在未来12个月是否出现欠款90天等.
经验备注:在大数据下,很多互联网公司对个人的评估不再局限于以上几种信息,而是根据更为广泛的数据源对个人进行更全面的刻画,故有称之为客户画像。数据维度会考虑个人在社会上留下的任何数据,如手机使用行为,理财行为,社交圈,网购行为,旅游行为等等等等。大家的各方面数据其实都在被不同的公司和不同的APP收集。。。
自变量的生成
自变量是信用风险的来源,除了考虑直接收集的变量,信用评分建模过程中往往需要建模人员产生更多的衍生变量。这部分工作要分析人员的直觉、长期经验的积累和数据挖掘技术的应用。大家可以通过京东和支付宝的评分一窥其自变量的维度:芝麻信用分为5个维度:身份特质,履约能力,信用历史,人脉关系,行为偏好;小白信用分也分为5个维度:身份,资产,关系,履约,偏好。
经验备注:现在越来越多的模型技术被应用于信用模型,但是个人觉得无论高级模型还是初级模型,最为重要的是更广泛的数据和产生更多更具有预测能力的自变量。
自变量的筛选
自变量一旦丰富了起来,就涉及到有效变量的筛选,大致可根据一下几个原则或方法:变量的直观意义(是否跟y有关),变量的单调性或合理性,未来是否可以获取以便模型可实施,变量的区分能力(IV),变量间相关性(变量聚类),变量缺失率,分档之后的稳定性等等。
经验备注:对于区分能力太强的变量,或缺失率很大的变量,不建议直接放入模型,可以考虑做成规则或者做成最后模型的调整。在大数据下,人们经常强调自变量与因变量的相关关系,应用于精准性要求不高的营销模型问题不大。而对于精准度要求极高的信用评分模型,相关关系的应用值得推敲。
自变量分档和转换
为了保持模型的稳定性,信用模型一般对自变量进行分档,比如根据风险不同把年龄分成几档。这样每档需要一个值来代表这段的自变量输入,这就是变量的转换,常见的有WOE和Logit转换。通过转换后不仅实现了稳定性要求,也克服不同变量间刻度不统一的问题,还克服回归中缺失值的填充问题。
经验备注:如果分档过粗糙,不但会降低单个变量的预测能力,也会造成最终评分集中度过高的问题。解决方法:可以考虑每档用线性插值来代替常数,也可以寻找更多能区分分数集中样本的自变量放入模型。
有监督学习模型介绍
目前比较流行的模型主要有以下几种(以后分享会逐一介绍):
-
Logistic 回归(Logistic Regression)
-
决策树(Decision Tree)
-
支持向量机(Support Vector Machine)
-
人工神经网络(Artificial Neural Network)
-
生存分析模型(Survival Analysis Model)
经验备注:除此上述之外,还有些高级方法或算法:集成方法(Ensemble Method)(例如随机森林(Random Forrest),Boosting,AdaBoost),深度学习方法(Deep Learning),随机梯度下降算法(Stochastic Gradient Descent)等。
以上是关于K8S cni开发的主要内容,如果未能解决你的问题,请参考以下文章
k8s 各种网络方案 - 每天5分钟玩转 Docker 容器技术(170)