Kubernetes(二十)准入控制器

一   官网

(1)什么是准入控制器? -->'重要'

(2)为什么需要准入控制器? -->'重要'

(3)如何启用一个准入控制器? -->'重要'

(4)怎么关闭准入控制器? 

(5)哪些插件是默认启用的? -->'知道'

(6)每个'准入控制器的作用'是什么? -->'了解核心'

二   进入主题

(1)准入控制器的概念

准入控制器的种类

准入控制器是'一段代码',它会在'请求'通过'认证和授权'之后、'对象被持久化之前'-->'拦截'到达 API 服务器的'请求'

详细:经过'token认证'(身份认证)和'rbac'(权限校验),对象持久化之前'没有存入etcd之前',进行拦截做一些事情

(2)准入控制器的特点

如果任'何一个阶段-->api请求到对象持久化的过程中'的任何'准入控制器'拒绝'deny'了该请求,则'整个请求'将立即'被拒绝',并向终端'client'用户返回一个'错误(error)'

例如:etcd集群如何是偶数个'默认只能是奇数个',就会'提示'不让'etcd集群'应用创建成功

(3)特殊的准入控制器

限制: '准入控制器'被'编译'进 kube-apiserver '二进制文件',只能在api-server'启动时启动',并且只能由'集群管理员配置'

++++ 有两个'特殊的'准入控制器:MutatingAdmissionWebhook 和 ValidatingAdmissionWebhook  ++++

特殊的地方:'MutatingAdmissionWebhook' 和 'ValidatingAdmissionWebhook'不是和api-server耦合在一起,而是通过Admission webhooks的方式实现'动态配置'

+++ '二者的特点' +++

变更(mutating)控制器可以'修改'被其'接受的对象',验证(validating)控制器则不行,主要是'校验'

它们根据 API 中的配置,'分别执行'变更和验证准入控制 webhook

(4)adminssion webhook是什么?

备注: webhook需要'开发人员'来完成,编写的化需要具备'GoLang'的基础知识

k8s api request lifecycle

k8s api特殊的请求'生命周期'解释

(1)根据请求中的资源的版本、group等信息路由到一个'具体的api上的endpoints'上面去

(2)在'请求的过程中'会做一些"认证和授权"

(3)经过mutating准入控制器、会转发到对应的'准入控制器的webhooks'-->'开发者自己实现的'

(4)经过校验,校验scheme信息-->'原因:开发者写的不一定符合标准'

(5)进入'validting adminssion comntroller' --> 对应准入控制器的web hook (也是开发者实现)--> 例如:校验副本数、如果副本数是偶数,则拒绝,则返回请求,client就会看到相应的报错信息

(6)所有的'准入控制器都走完了',才会'存入etcd'当中去

备注:准入控制过程分为'两个阶段';第一阶段,运行'变更准入'控制器,第二阶段运行'验证准入'控制器

补充: 某些控制器'既是'变更准入控制器'又是'验证准入控制器

(5)创建配置一个 Admission Webhook

1.16.2之后和1.19.x版本之后'默认开启的'

说明: 如果'默认开启'又进行'显示声明'也'不会报错'

测试: 1.18.4和1.19.3'默认开启'

检查集群中是否启用了准入注册 API

自己写一个 web hook

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值