Kubernetes-APIServer
[TOC]
深入理解Kube-APIServer
大纲
认证
鉴权
准入
- Mutating(变形)
- Validating (校验)
- Admission
限流
APIServer对象的实现
Shell
解码base64,转换为jwt |
API Server

访问控制预览

访问控制细节

认证

认证插件


基于webhook的认证服务集成
构建符合kubernetes规范的认证服务

开发认证服务
package main |
配置认证服务和apiserver
最佳实践:webhook的认证和鉴权服务,通过sidercar的模式,跑在apiserver服务上

{ |
生产系统中遇到的陷阱

鉴权

RBAC vs ABAC

RBAC图解
老版本

新版本

Role和ClusterRole

binding

账户/组的管理

针对群组授权

规划系统角色

实现方案

与权限相关的其他最佳实践

准入
准入控制



准入控制插件

准入控制插件的开发
准入控制插件


限流
计数器固定窗口算法

计数器滑动窗口算法

漏斗算法

令牌桶算法

ApiServer中的限流

传统限流方法的局限性

API Priority and Fairness


概念
优先级

排队

豁免请求
某些特别重要的请求不受制于此特性施加的任何限制。这些豁免可防止不当的流控配置完全禁用 API 服务器。
默认配置


PriorityLevelConfiguration

FlowSchema

调试

高可用ApiServer
启动ApiServer示例
kube-apiserver |
构建高可用的多副本apiServer
最佳实践还是采用静态pod的方式来部署多副本apiserver,依托于k8s给我们提供了可靠的服务,还可以使用k8s的探活策略等。而不是采用二进制的systemctld。

预留充足的CPU、内存资源

善用速率限制(RateLimit)

设置合适的缓存大小

客户端尽量使用长连接

如何访问APIServer

搭建多租户的Kubernetes集群

认证

注册apiserver

授权
ABAC有期局限性,针对每个account都需要做配置,并且需要重启apiserver RBAC更灵活,更符合我们通常熟知的权限管理
RBAC

规划系统角色

实现方案

与权限相关的其他最佳实践

apimachinery
回顾GKV

如何定义Group

定义对象类型 types.go

代码生成Tags

实现etcd storage

代码生成
https://github.com/kubernetes/code-generator |
