KubeAPIServer create resource的Decode流程

kubernetes在create resource时,首先通过kube-apiserver的authenticate和authorization等chain进行过滤,通过所有filter后,再由kube-apiserver dispatch到Handler进行处理。这里我们举例create namespace scoped resource进行分析。在create resource时,需要先进行Decode操作,Decode包括coversion,defaulter以及decoder操作,这些操作都由Codec接入到scheme进行操作。即

对于create namespace scoped resource的代码流程图如下。

1. decoder对象追溯

概括来讲,decoder对象时通过handlers.RequestScope.Serializer构造而来,handlers.RequestScope是从APIInstaller对象的group数据进行构造,APIInstaller的goup即为APIGroupVersion,且APIGroupVersion是使用APIGroupInfo对象中的数据进行构造。

对于APIGroupInfo,APIGroupVersion和APIInstaller对象构造流程如下。

对于handlers.RequestScope对象相关信息构造如下。

RequestScope.Serializer.DecoderToVersion.Decode调用即为decoder.Decode调用,从RequestScope.Serializer.DecoderToVersion.Decode调用的流程了解到主要用到了codec.decoder,codec.defaulter和codec.convertor,那么这3个对象是什么呢,如何构造的呢?流程如下:

2. decoder.Decode调用

这里我们看看decoder.Decode中的codec.convertor的流程。

3. 总结

这一部分的工作便是Decode流程,在Decode流程处理完成后,KubeAPIServer将进行Admission准入控制。最后再将resource写入etcd进行保存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值