IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> api-server 源码学习 -> 正文阅读

[系统运维]api-server 源码学习

apiserver实现

server的实现

  1. 在apiserver/pkg/server/handler.go里的direct实现

  2. 使用go-restfule实现路由功能

  3. 所有的都是NewRESTStorage

资源创建,从main函数开始,到db层

  1. kube-apiserver/apiserver.go里的main函数

  2. kube-apiserver/app/server.go里的

    • NewAPIServerCommand函数
    • Run函数
    • CreateServerChain函数
      • createAPIExtensionsServer函数
        • apiextensions-apiserver/pkg/apiserver/apiserver.go的Config里的New函数
          • apiverver/pkg/server.genericapiserver.go里的GenericAPIServer里的InstallAPIGroup
      • CreateKubeAPIServer函数
        • kubernetes/pkg/controlplane/instance.go的completedConfig的New函数
          • kubernetes/pkg/controlplane/instance.go的Instance的InstallLegacyAPI函数
            • GenericAPIServer的InstallLegacyAPIGroup
          • kubernetes/pkg/controlplane/instance.go的Instance的InstallAPIs
            • GenericAPIServer的InstallAPIGroups
      • createAggregatorServer函数
        • kubernetes/pkg/controlplane/instance.go的completedConfig的NewSWithDelegate(Delegate代表)函数
          • GenericAPIServer的InstallAPIGroup
  3. apiverver/pkg/server.genericapiserver.go里的GenericAPIServer里的

    • 注册api的两种方式
      • InstallAPIGroup
        • InstallAPIGroups
      • InstallLegacyAPIGroup
    • installAPIResources函数
  4. apiverver/pkg/endpoints/groupversion里的APIGroupVersion里的InstallRest

  5. apiverver/pkg/endpoints/installer.go里的

    • APIInstaller

      • Install函数
      • registerResourceHandlers函数
    • restfulCreateNamedResource、restfulCreateResource

  6. apiserver/pkg/endpoints/handler的CreateNamedResource和CreateResource函数

  7. apiserver/pkg/endpoints/handlers/create.go里的createHandler

  8. apiserver/pkg/endpoints/handlers/create.go里的namedCreaterAdapter里的Create函数

  9. apiserver/pkg/registry/generic/registry/store.go里的Store的Create函数

  10. apiserver/pkg/registry/rest/create.go的BeforeCreate,函数里面调用各种资源实现的RESTCreateStrategy接口

  11. apiserver/pkg/registry/generic/registry/dryrun.go里的DryRunnableStrorage的Create函数

  12. apiserver/pkg/storage/cache/cacher.go里的Cache里的Create函数

  13. apiserver/pkg/storage/etcd3/store.go的store的Create函数

  14. etcd里

  15. 目录介绍

  16. Kubernetes/pkg/registry里面实现各种资源的实际实现,整体实现为具体资源目录、rest目录,rest用作资源集成,资源目录,一般包含strategy文件和storage目录,strategy实现资源操作的接口,storage实现k8s.io/apiserver/pkg/registry/rest/rest.go的Storage接口的实现,即一个New资源,一个对资源的操作

    • adminssionregistration: 动态准入控制
      • mutatingwebhookconfiguration:对应的资源是ValidatingWebhookConfiguration,介绍,变更钩子
      • validatingwebhookconfiguration:ValidatingWebhookConfiguration验证钩子
      • rest
    • app:应用相关的,包含deployment、replicaset、statefulset、daemonset,具体资源包含strategy和storage两部分,strategy即RESTCreateStrategy、RESTCreateStrategy、RESTDeleteStrategy、ResetFieldsStrategy等接口的具体实现
      • controllerrevision:ControllerRevision实现不变状态数据的snapshot
      • daemonset
      • deployment
      • replicaset
      • statefulset
      • rest:进行apps资源的集成,包含上面的5种,定义了StorageProvider,并实现了RESTStorageProvider
    • apiserverinternal
      • StorageVersion
    • authentication:认证
      • TokenReview验证token
    • authorization: 授权
      • LocalSubjectAccessReview:检查一个用户或者组是否有权限在给定的namespace下
      • SelfSubjectAccessReview:检查当前用户是否有权限
      • subjectaccessreview:Autorizer: 认证结果
      • rest
    • autoscaling: 弹性伸缩
      • horizontalpodautoscaler:水平pod弹性伸缩
      • rest
    • batch
      • cronjob:定期任务
      • job:任务
      • rest
    • certificates
      • certificates证书,CertificateSigningRequest 证书签名请求
      • rest
    • coordination:协作
      • lease:租约
      • rest
    • core:核心资源
      • componentstatus:组件状态,在1.19+被废弃
      • configmap
      • endpoint
      • event
      • LimitRange:资源限制
      • namespace
      • node
      • persistentvolume
      • persistentvolumeclaim
      • pod
      • podtemplate
      • replicationcontroller‘
      • resourcequota
      • secret
      • service
      • serviceaccout
      • rest:调用各个资源下面的rest,集成所有的资源
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 21:08:06  更:2022-02-09 21:10:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:54:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码