K8S源码分析: API Server

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介:

基于kubernetes 1.9版本源码

启动

入口地址在\cmd\kube-apiserver\apiserver.go\main()

函数很短,里面只有三句重要的代码

s := options.NewServerRunOptions()  //新生成一个ServerRunOptions对象
s.AddFlags(pflag.CommandLine)       //ServerRunOptions填值
......
if err := app.Run(s, stopCh); err != nil {  //生成一个API Server实例

NewServerRunOptions() 调用了\cmd\kube-apiserver\app\options\options.go\NewServerRunOptions()函数, 里面做的事件很简单, 就是初始化一个ServerRunOptions结构体, 这个是API Server中的关键结构体

type ServerRunOptions struct {
   GenericServerRunOptions *genericoptions.ServerRunOptions   // 服务器通用的运行参数
   Etcd                    *genericoptions.EtcdOptions
   SecureServing           *genericoptions.SecureServingOptions
   InsecureServing         *kubeoptions.InsecureServingOptions
   Audit                   *genericoptions.AuditOptions
   Features                *genericoptions.FeatureOptions
   Admission               *genericoptions.AdmissionOptions
   Authentication          *kubeoptions.BuiltInAuthenticationOptions
   Authorization           *kubeoptions.BuiltInAuthorizationOptions
   CloudProvider           *kubeoptions.CloudProviderOptions
   StorageSerialization    *kubeoptions.StorageSerializationOptions
   APIEnablement           *kubeoptions.APIEnablementOptions
   AllowPrivileged           bool  // 是否配置超级权限,即允许Pod中运行的容器拥有系统特权
   EnableLogsHandler         bool  
   EventTTL                  time.Duration // 事件留存事件, 默认1h
   KubeletConfig             kubeletclient.KubeletClientConfig // K8S kubelet配置
   KubernetesServiceNodePort int
   MaxConnectionBytesPerSec  int64
   ServiceClusterIPRange     net.IPNet // TODO: make this a list
   ServiceNodePortRange      utilnet.PortRange
   SSHKeyfile                string    // 指定的话,可以通过SSH指定的秘钥文件和用户名对Node进行访问
   SSHUser                   string    ProxyClientCertFile string
   ProxyClientKeyFile  string    EnableAggregatorRouting bool    MasterCount            int
   EndpointReconcilerType string }

上面的genericoptions定义在\staging\src\k8s.io\apiserver\pkg\server\options里面

初始化完成之后,最重要的任务就是启动实例了。所有的操作都是在run函数中执行,app.run()接口实现在cmd/kube-apiserver/app/server.go

func Run(runOptions *options.ServerRunOptions, stopCh <-chan struct{}) error {
   // To help debugging, immediately log version
  glog.Infof("Version: %+v", version.Get())

   server, err := CreateServerChain(runOptions, stopCh)
   if err != nil {
      return err
   }

   return server.PrepareRun().Run(stopCh)
}
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
Kubernetes 安全 Cloud Native
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
本文介绍了云原生环境下Kubernetes集群的安全问题及攻击方法。首先概述了云环境下的新型攻击路径,如通过虚拟机攻击云管理平台、容器逃逸控制宿主机等。接着详细解释了Kubernetes集群架构,并列举了常见组件的默认端口及其安全隐患。文章通过具体案例演示了API Server 8080和6443端口未授权访问的攻击过程,以及Kubelet 10250端口未授权访问的利用方法,展示了如何通过这些漏洞实现权限提升和横向渗透。
152 0
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
|
3月前
|
API 开发者
【API管理 APIM】APIM集成内部VNet后,自我访问出现(Unable to connect to the remote server)问题,而Remote Server正是APIM它自己
【API管理 APIM】APIM集成内部VNet后,自我访问出现(Unable to connect to the remote server)问题,而Remote Server正是APIM它自己
|
3月前
|
资源调度 Kubernetes API
在K8S中,能否实现不通过api-Server创建Pod?
在K8S中,能否实现不通过api-Server创建Pod?
|
3月前
|
Kubernetes 负载均衡 API
在K8S中,api-service 和 kube-schedule 高可用原理是什么?
在K8S中,api-service 和 kube-schedule 高可用原理是什么?
|
3月前
|
Kubernetes 监控 API
在k8S中,各模块如何与API Server进行通信的?
在k8S中,各模块如何与API Server进行通信的?
|
7天前
|
JSON API 数据格式
淘宝 / 天猫官方商品 / 订单订单 API 接口丨商品上传接口对接步骤
要对接淘宝/天猫官方商品或订单API,需先注册淘宝开放平台账号,创建应用获取App Key和App Secret。之后,详细阅读API文档,了解接口功能及权限要求,编写认证、构建请求、发送请求和处理响应的代码。最后,在沙箱环境中测试与调试,确保API调用的正确性和稳定性。
|
19天前
|
供应链 数据挖掘 API
电商API接口介绍——sku接口概述
商品SKU(Stock Keeping Unit)接口是电商API接口中的一种,专门用于获取商品的SKU信息。SKU是库存量单位,用于区分同一商品的不同规格、颜色、尺寸等属性。通过商品SKU接口,开发者可以获取商品的SKU列表、SKU属性、库存数量等详细信息。
|
20天前
|
JSON API 数据格式
店铺所有商品列表接口json数据格式示例(API接口)
当然,以下是一个示例的JSON数据格式,用于表示一个店铺所有商品列表的API接口响应
|
30天前
|
编解码 监控 API
直播源怎么调用api接口
调用直播源的API接口涉及开通服务、添加域名、获取API密钥、调用API接口、生成推流和拉流地址、配置直播源、开始直播、监控管理及停止直播等步骤。不同云服务平台的具体操作略有差异,但整体流程简单易懂。
|
10天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释