KubeAPIServer create resource的Decode流程

Posted gj4990

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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进行保存。

以上是关于KubeAPIServer create resource的Decode流程的主要内容,如果未能解决你的问题,请参考以下文章

kube-apiserver报错

oracle创建用户授权权限

c_cpp Run13 TOF reso export

AAPT: error: reso 1. mavenCentral():2. jcenter():3. mavenLocal():

Using platform encoding GBK actually to copy filtered reso

android程序连接网络错误 java net unknownhostexception unable to reso