<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kubernetes学习笔记 – api 仓库</title>
    <link>https://skyao.net/learning-kubernetes/source/repositories/api/</link>
    <description>Recent content in api 仓库 on Kubernetes学习笔记</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <lastBuildDate>Wed, 14 May 2025 00:00:00 +0000</lastBuildDate>
    
	  <atom:link href="https://skyao.net/learning-kubernetes/source/repositories/api/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Source: 概述</title>
      <link>https://skyao.net/learning-kubernetes/source/repositories/api/overview/</link>
      <pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://skyao.net/learning-kubernetes/source/repositories/api/overview/</guid>
      <description>
        
        
        &lt;h2 id=&#34;api-信息&#34;&gt;api 信息&lt;/h2&gt;
&lt;h3 id=&#34;api-列表&#34;&gt;api 列表&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;admission&lt;/li&gt;
&lt;li&gt;admissionregistration&lt;/li&gt;
&lt;li&gt;apidiscovery&lt;/li&gt;
&lt;li&gt;apiserverinternal&lt;/li&gt;
&lt;li&gt;apps&lt;/li&gt;
&lt;li&gt;authentication&lt;/li&gt;
&lt;li&gt;authorization&lt;/li&gt;
&lt;li&gt;autoscaling&lt;/li&gt;
&lt;li&gt;batch&lt;/li&gt;
&lt;li&gt;certificates&lt;/li&gt;
&lt;li&gt;coordination&lt;/li&gt;
&lt;li&gt;core&lt;/li&gt;
&lt;li&gt;discovery&lt;/li&gt;
&lt;li&gt;doc.go&lt;/li&gt;
&lt;li&gt;events&lt;/li&gt;
&lt;li&gt;extensions&lt;/li&gt;
&lt;li&gt;flowcontrol&lt;/li&gt;
&lt;li&gt;imagepolicy&lt;/li&gt;
&lt;li&gt;networking&lt;/li&gt;
&lt;li&gt;node&lt;/li&gt;
&lt;li&gt;policy&lt;/li&gt;
&lt;li&gt;rbac&lt;/li&gt;
&lt;li&gt;resource&lt;/li&gt;
&lt;li&gt;scheduling&lt;/li&gt;
&lt;li&gt;storage&lt;/li&gt;
&lt;li&gt;storagemigration&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;api-版本&#34;&gt;API 版本&lt;/h3&gt;
&lt;p&gt;大部分 api 都有多个版本，如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;v1&lt;/li&gt;
&lt;li&gt;v1alpha1&lt;/li&gt;
&lt;li&gt;v1beta1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;代码学习中，我们以 v1 版本为主。&lt;/p&gt;
&lt;h2 id=&#34;api-代码结构&#34;&gt;api 代码结构&lt;/h2&gt;
&lt;p&gt;基本上每个 api 文件夹都有如下的文件列表：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;doc.go&lt;/li&gt;
&lt;li&gt;generated.pb.go&lt;/li&gt;
&lt;li&gt;register.go&lt;/li&gt;
&lt;li&gt;types.go&lt;/li&gt;
&lt;li&gt;types_swagger_doc_generated.go&lt;/li&gt;
&lt;li&gt;zz_generated.deepcopy.go&lt;/li&gt;
&lt;li&gt;zz_generated.prerelease-lifecycle.go&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;docgo&#34;&gt;doc.go&lt;/h3&gt;
&lt;p&gt;这是包的文档文件，包含包的用途说明和基本的文档注释&lt;/p&gt;
&lt;p&gt;通常会包含 +k8s:openapi-gen=true 这样的代码生成标记&lt;/p&gt;
&lt;p&gt;定义了包的帮助文档和代码生成器的元数据。&lt;/p&gt;
&lt;p&gt;打开看源码，发现除了 license 之外，只定义了 package 名字和该 package 相关的注解，如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;// +k8s:deepcopy-gen&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;package
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;// +k8s:protobuf-gen&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;package
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;// +k8s:openapi-gen&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;// +k8s:prerelease-lifecycle-gen&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;// +groupName&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;admission.k8s.io
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;package v1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;generatedpbgo&#34;&gt;generated.pb.go&lt;/h3&gt;
&lt;p&gt;generated.pb.go 是 Protocol Buffers 的生成文件（由 generated.proto 生成），包含了 AdmissionReview 等类型的 Protocol Buffers 序列化相关代码，用于 Kubernetes API 的 gRPC 通信和存储序列化。&lt;/p&gt;
&lt;p&gt;代码都是从 generated.proto 文件生成的，没啥好看的，直接看 generated.proto 文件好了。&lt;/p&gt;
&lt;h3 id=&#34;generatedproto&#34;&gt;generated.proto&lt;/h3&gt;
&lt;p&gt;generated.proto 是Protocol Buffers 的定义文件，定义了当前 API 类型的 protobuf 消息格式。&lt;/p&gt;
&lt;p&gt;generated.proto 文件会被 protoc 编译器用来生成 generated.pb.go&lt;/p&gt;
&lt;h3 id=&#34;registergo&#34;&gt;register.go&lt;/h3&gt;
&lt;p&gt;register.go 包含 API 类型的注册逻辑，将 API 中的类型注册到 Kubernetes API 的 Scheme 中。&lt;/p&gt;
&lt;p&gt;register.go 定义了如何将 Go 类型与 API 版本/组进行映射，包含 AddToScheme 函数，其他组件可以调用它来注册这些类型。&lt;/p&gt;
&lt;h3 id=&#34;typesgo&#34;&gt;types.go&lt;/h3&gt;
&lt;p&gt;最重要的文件，包含核心 API 类型的 Go 定义，定义了 API 相关的各种结构体，包含字段定义、标签注释和验证逻辑，有详细的字段注释说明每个字段的用途&lt;/p&gt;
&lt;h3 id=&#34;types_swagger_doc_generatedgo&#34;&gt;types_swagger_doc_generated.go&lt;/h3&gt;
&lt;p&gt;自动生成的 Swagger 文档，包含 API 类型的详细文档，用于生成 Kubernetes API 参考文档。&lt;/p&gt;
&lt;p&gt;这些注释会被 Kubernetes API 文档工具使用。&lt;/p&gt;
&lt;h3 id=&#34;zz_generateddeepcopygo&#34;&gt;zz_generated.deepcopy.go&lt;/h3&gt;
&lt;p&gt;自动生成的 DeepCopy 方法实现，包含 api 类型的深拷贝方法，由 deepcopy-gen 工具根据 types.go 中的标记生成。&lt;/p&gt;
&lt;p&gt;Kubernetes 运行时需要这些方法来安全地复制对象。&lt;/p&gt;
&lt;h3 id=&#34;zz_generatedprerelease-lifecyclego&#34;&gt;zz_generated.prerelease-lifecycle.go&lt;/h3&gt;
&lt;p&gt;自动生成的 API 生命周期相关代码，包含 API 版本的弃用和移除策略，由 prerelease-lifecycle-gen 工具生成。&lt;/p&gt;
&lt;p&gt;用于管理 API 版本的生命周期（alpha/beta/stable 状态转换）。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Source: admission</title>
      <link>https://skyao.net/learning-kubernetes/source/repositories/api/admission/</link>
      <pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://skyao.net/learning-kubernetes/source/repositories/api/admission/</guid>
      <description>
        
        
        
      </description>
    </item>
    
    <item>
      <title>Source: admissionregistration</title>
      <link>https://skyao.net/learning-kubernetes/source/repositories/api/admissionregistration/</link>
      <pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://skyao.net/learning-kubernetes/source/repositories/api/admissionregistration/</guid>
      <description>
        
        
        
      </description>
    </item>
    
    <item>
      <title>Source: apidiscovery</title>
      <link>https://skyao.net/learning-kubernetes/source/repositories/api/apidiscovery/</link>
      <pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://skyao.net/learning-kubernetes/source/repositories/api/apidiscovery/</guid>
      <description>
        
        
        
      </description>
    </item>
    
    <item>
      <title>Source: apiserverinternal</title>
      <link>https://skyao.net/learning-kubernetes/source/repositories/api/apiserverinternal/</link>
      <pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://skyao.net/learning-kubernetes/source/repositories/api/apiserverinternal/</guid>
      <description>
        
        
        
      </description>
    </item>
    
    <item>
      <title>Source: apps</title>
      <link>https://skyao.net/learning-kubernetes/source/repositories/api/apps/</link>
      <pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://skyao.net/learning-kubernetes/source/repositories/api/apps/</guid>
      <description>
        
        
        
      </description>
    </item>
    
    <item>
      <title>Source: authentication</title>
      <link>https://skyao.net/learning-kubernetes/source/repositories/api/authentication/</link>
      <pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://skyao.net/learning-kubernetes/source/repositories/api/authentication/</guid>
      <description>
        
        
        
      </description>
    </item>
    
    <item>
      <title>Source: authorization</title>
      <link>https://skyao.net/learning-kubernetes/source/repositories/api/authorization/</link>
      <pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://skyao.net/learning-kubernetes/source/repositories/api/authorization/</guid>
      <description>
        
        
        
      </description>
    </item>
    
  </channel>
</rss>
