Kubernetes 源码分析之 Apiserver

1. 概述

本文以Kubernetes 1.9 进行分析。

Kubernetes 集群中,API Server 扮演着交互入口的位置。API Server 不仅负责和 etcd 交互(其他组件不会直接操作 etcd,只有 API Server 这么做),并切对外提供统一的API调用入口, 所有的交互都是以 API Server 为核心的。API Server 提供了一下的功能:

  • 整个集群管理的 API 接口:所有对集群进行的查询和管理都要通过 API 来进行。集群内部的组件(如kubelet)也是通过Apiserver更新和同步数据。
  • 集群内部各个模块之间通信的枢纽:所有模块之前并不会之间互相调用,而是通过和 API Server 打交道来完成自己那部分的工作。
  • 集群安全控制:API Server 提供的验证和授权保证了整个集群的安全。
  • 数据中心枢纽: API Server 负责和 Etcd 交互存放集群用到的运行数据。

在这里插入图片描述

2. 结构分析

如下图, 从结构上来分析 API Server。

  • Resetful 是对外提供http(https)的接口,用来对外提供与集群统一的交互手段。
  • Cacher 是针对查询到的数据的缓存中心。
  • Watcher 模块 是负责从Etcd获取数据,其中可注册多个Watcher,即关注多个不同的数据。
  • Translate 模块 是负责将从Etcd获取到的数据转化为本地统一数据的接口,当Watcher获取到数据后就将其发送给Translate模块,Translate根据数据类型使用注册的对应的翻译接口进行翻译。

在这里插入图片描述

3. 流程分析

如图所示,Apiserver可以左右氛围两部分,作部分是Apiserver使用观察者模式获取更新需要的数据,右半部分则是Apiserver接受外部调用并注册观察者Watcher,并从Watcher中最终获取到需要的数据。

  • 外部调用会先通过Apiserver使用registerResourceHandlers注册的Api接口
  • 该接口会调用ListResource解析收到的用户请求,调用watch接口向Apiserver注册观察者Watcher,并调用serverWatch等待返回的数据。
  • Watcher会由Apiserver 启动的携程调用dispatchEvents从通道中获取并注册到watcher集合中
  • Apiserver 启动时会携程调用startCaching,其主要协程启动了etcdWatch, translate,
    process三个协程, 并在主流程中调用watchHandler
  • etchWatch根据注册的观察者watcher向etcd注册关注相关的数据,当获取到数据时则通过通道发送给translate。
  • translate负责解析从etcd获取到的数据, 并通过通道发送给watchHandler。
  • WatchHander 调用store.(add|delete|update)对本地缓存数据做更新。
  • translate解析完成数据时,发现有被watcher的数据会被filter并通过通道给process协程进行处
  • process协程调用sendWatchCacheEvent将获取到的数据通过通道发送给serveWatch。
  • serveWatch将数据返回给关注该资源的用户。
    在这里插入图片描述
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes集群中,API Server是控制平面中最重要的组件之一,它是所有组件的入口点,用于管理整个集群。API Server对外提供RESTful API接口,供客户端和其他组件访问和操作集群中的资源。因此,正确地配置API Server对于集群的稳定性和安全性至关重要。 下面是设置Kubernetes集群中API Server的一些步骤: 1. 选择API Server的认证方式:Kubernetes支持多种认证方式,包括基于Token的认证、基于证书的认证等。在设置API Server之前,需要确定所使用的认证方式,并进行相应的配置。 2. 配置API Server的访问控制:使用Kubernetes中的RBAC(Role-Based Access Control)机制来配置API Server的访问控制。可以通过RBAC配置不同用户或组的权限,确保只有授权的用户才能访问API Server。 3. 配置API Server的TLS证书:为API Server配置TLS证书,确保通信过程中的安全性。 4. 配置API Server的访问地址和端口:API Server的默认监听地址和端口为127.0.0.1:6443,如果需要改变API Server的监听地址和端口,可以通过命令行参数或配置文件进行配置。 5. 配置API Server的HA模式:当需要保证API Server的高可用性时,可以使用Kubernetes提供的HA模式,通过使用多个API Server来实现。 以上是设置Kubernetes集群中API Server的一些基本步骤,具体配置可以根据实际情况进行调整。建议使用Kubernetes提供的工具和文档进行配置,以确保正确性和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值