为什么要使用 Kubernetes 准入控制器

Kubernetes 准入控制器是什么?为什么要使用准入控制器?如何使用?本文对 Kubernetes 准入控制器进行了详细解释。

来源 | K8sMeetup

作者 | Arun Prasad

头图 | 下载于视觉中国

Kubernetes 控制平面由几个组件组成。其中一个组件是 kube-apiserver,简单的 API server。它公开了一个 REST 端点,用户、集群组件以及客户端应用程序可以通过该端点与集群进行通信。总的来说,它会进行以下操作:

  1. 从客户端应用程序(如 kubectl)接收标准 HTTP 请求。

  2. 验证传入请求并应用授权策略。

  3. 在成功的身份验证中,它能根据端点对象(Pod、Deployments、Namespace 等)和 http 动作(Create、Put、Get、Delete 等)执行操作。

  4. 对 etcd 数据存储进行更改以保存数据。

  5. 操作完成,它就向客户端发送响应。

请求流程

现在让我们考虑这样一种情况:在请求经过身份验证后,但在对 etcd 数据存储进行任何更改之前,我们需要拦截该请求。例如:

  1. 拦截客户端发送的请求。

  2. 解析请求并执行操作。

  3. 根据请求的结果,决定对 etcd 进行更改还是拒绝对 etcd 进行更改。

Kubernetes 准入控制器就是用于这种情况的插件。在代码层面,准入控制器逻辑与 API server 逻辑解耦,这样用户就可以开发自定义拦截器(custom interceptor),无论何时对象被创建、更新或从 etcd 中删除,都可以调用该拦截器。

有了准入控制器,从任意来源到 API server 的请求流将如下所示:

准入控制器阶段(来自官方文档)

官方文档地址:https://kubernetes.io/blog/2019/03/21/a-guide-to-kubernetes-admission-controllers/

根据准入控制器执行的操作类型,它可以分为 3 种类型:

  • Mutating(变更)

  • Validating(验证)

  • Both(两者都有)

Mutating:这种控制器可以解析请求,并在请求向下发送之前对请求进行更改(变更请求)。

示例:AlwaysPullImages

Validating:这种控制器可以解析请求并根据特定数据进行验证。

示例:NamespaceExists

Both:这种控制器可以执行变更和验证两种操作。

示例:CertificateSigning

有关这些控制器更多信息,查看官方文档:https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#what-does-each-admission-controller-do

准入控制器过程包括按顺序执行的2个阶段:

  1. Mutating(变更)阶段(先执行)

  2. Validation (验证)阶段(变更阶段后执行)

Kubernetes 集群已经在使用准入控制器来执行许多任务。

Kubernetes 附带的准入控制器列表:https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#what-does-each-admission-controller-do

通过该列表,我们可以发现大多数操作,如 AlwaysPullImages、DefaultStorageClass、PodSecurityPolicy 等,实际上都是由不同的准入控制器执行的。

如何启用或禁用准入控制器?

要启用准入控制器,我们必须在启动 kube-apiserver 时,将以逗号分隔的准入控制器插件名称列表传递给 --enable-ading-plugins。对于默认插件,命令如下所示:

要禁用准入控制器插件,可以将插件名称列表传递给 --disable-admission-plugins。它将覆盖默认启用的插件列表。

默认准入控制器

  • NamespaceLifecycle

  • LimitRanger

  • ServiceAccount

  • TaintNodesByCondition

  • Priority

  • DefaultTolerationSeconds

  • DefaultStorageClass

  • StorageObjectInUseProtection

  • PersistentVolumeClaimResize

  • RuntimeClass

  • CertificateApproval

  • CertificateSigning

  • CertificateSubjectRestriction

  • DefaultIngressClass

  • MutatingAdmissionWebhook

  • ValidatingAdmissionWebhook

  • ResourceQuota

为什么要使用准入控制器?

准入控制器能提供额外的安全和治理层,以帮助 Kubernetes 集群的用户使用。

执行策略:通过使用自定义准入控制器,我们可以验证请求并检查它是否包含特定的所需信息。例如,我们可以检查 Pod 是否设置了正确的标签。如果没有,那可以一起拒绝该请求。某些情况下,如果请求中缺少一些字段,我们也可以更改这些字段。例如,如果 Pod 没有设置资源限制,我们可以为 Pod 添加特定的资源限制。通过这样的方式,除非明确指定,集群中的所有 Pod 都将根据我们的要求设置资源限制。Limit Range 就是这种实现。

安全性:我们可以拒绝不遵循特定规范的请求。例如,没有一个 Pod 请求可以将安全网关设置为以 root 用户身份运行。

统一工作负载:通过更改请求并为用户未设置的规范设置默认值,我们可以确保集群上运行的工作负载是统一的,并遵循集群管理员定义的特定标准。这些就是我们开始使用 Kubernetes 准入控制器需要知道的所有理论。

原文链接:https://medium.com/cloudlego/kubernetes-admission-controllers-request-interceptors-47a9b12c5303


更多阅读推荐

  • 都在说云原生,它的技术图谱你真的了解吗?

  • SRE 是如何保障稳定性的

  • 如何写出让 CPU 跑得更快的代码?

  • Serverless 在 SaaS 领域的最佳实践

  • 云原生人物志|Pulsar翟佳:社区的信任最重要

  • 阿里的 RocketMQ 如何让双十一峰值之下0故障

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP系列学习(笔记二):HTTPS与HTTP的区别在哪?

图文详解: 对称加密 :加密与解密的算法一样 非对称加密:加密与解密的算法不同 加密算法: 明文 -> encode 加密 -> 密文 -> decode 解密 -> 明文 摘要算法: 加密后得到固定长度的摘要,无法解…

程序员晒元宵节福利,网友:看了我想砸键盘......

再过几天就到元宵节了,又到了互联网大厂晒福利、拉仇恨的时候了。小编在脉脉上看到许多不愿透露姓名的网友的爆料,一起来看看吧。有的网友说收到了汤圆,还有员工说收到了四盒草莓,但是还有网友透露自己喜提加班,更有甚…

深度解读OpenYurt:从边缘自治看YurtHub的扩展能力

作者 | 新胜 阿里云技术专家 导读:OpenYurt 开源两周以来,以非侵入式的架构设计融合云原生和边缘计算两大领域,引起了不少行业内同学的关注。阿里云推出开源项目 OpenYurt,一方面是把阿里云在云原生边缘计算领域的经验回馈给开源…

HTTP系列学习(笔记一):一文带你详解HTTP协议

1、什么是协议 计算机中的协议和现实生活中的协议是一样的,一式多份,彼此都遵从共同的一个规范,这个规范就可以称之为协议。 2、HTTP协议的工作流程 3、HTTP请求信息和响应信息的格式 请求: 响应: 常见状态码&…

阿里高级技术专家总结6年来的成长和收获

7月9日 19:00-21:30 阿里云开发者社区首场“Offer 5000”直播开启!15位团队技术大牛在线招人,更有《阿里云技术面试红宝书》助你拿下Offer!点击图片或戳我查看详情和投简历 作者 | 箫逸 阿里文娱高级技术专家 导读:转眼 2020 已…

一目了然的 Docker 环境配置指南

来源 | Datawhale作者 | Tianchi头图 | 下载于视觉中国Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机&#xff0…

阿里本地生活EMonitor根因分析大揭秘

背景 阿里集团针对故障处理提出了“1/5/10”的目标-- 1 分钟发现、5 分钟定位、10 分钟恢复,这对我们的定位能力提出了更高的要求。 EMonitor 是一款集成 Tracing 和 Metrics、服务于饿了么所有技术部门的一站式监控系统,其覆盖了 前端监控、接入层监…

uniapp 打包安卓 Android 抖音app 前端篇~01

文章目录一、配置1. 修改后端服务地址2. 基础配置3. App图标配置4. App启动页面配置5. App模块配置二、发行2.1. 云打包2.2. 云打包配置2.3. 下载app三、安装apk3.1. 下载apk3.2. 安装apk3.3. 打开app3.4. 同意协议3.5. 前端页面效果一、配置 1. 修改后端服务地址 2. 基础配置…

踩着七彩祥云来接你的不一定是意中人,也可能是阿里云

你今天点外卖了吗?你今天剁手了吗? 你每次在饿了么和淘宝上的刷刷刷、点点点 都有阿里云服务器ECS在云端疯狂计算 ——阿里云ECS,支撑了阿里经济体全面上云—— ---- 天猫双11核心系统100%上云 阿里云征服史上最大流量洪峰 饿了么100%迁至阿…

深度思考 Spring Cloud + Alibaba Sentinel 源码原理

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。作者 | 向寒 / 孙玄来源 | 架构之美头图 | 下载于视觉中国关于 Sentinel 1、理论篇以下是经过多年分…

WORDPRESS付费会员插件Paid Memberships Pro v2.12.5 – Plugin + All Addons

WORDPRESS付费会员插件Paid Memberships Pro v2.12.5 – Plugin All Addons 简介: Paid Memberships Pro是一款功能强大的会员订阅和内容限制管理插件,适用于WordPress网站。它提供了丰富的特性和工具,帮助网站所有者轻松地创建和管理付费…

云计算与星辰大海的结合

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 今年在疫情的影响下,各国的经济发展都遇到了一些困难,甚至除中国以外的主要经济体都会进入了负增长的…

uniapp 打包安卓 Android 抖音app 后端篇~02

文章目录1. 中间件配置2. 云短信配置1. 中间件配置 2. 云短信配置

从开源自治到微服务云化,用这剂良药提升微服务幸福感

前言 微服务发展至今,因其高内聚、低耦合等特性,以及诸多开源方案带来的开放性,已成为提升架构效率的最佳实践之一。当一项技术或一个框架成为事实标准之后,我们会把更多的注意力聚焦在运维效率和应用可用性的持续提升上。相信下…

uniapp 打包安卓 Android 抖音app 前后端调试篇~03

文章目录1. 未登录首页浏览短视频2. 发布视频-云短信登录3. 发布选择视频4. 上传短视频到云存储5. 测试发布视频6. 个人中心查看发布视频7. 首页查看刚发布视频8. 个人中心1. 未登录首页浏览短视频 在未登录的情况下,首页可以看短视频 2. 发布视频-云短信登录 点…

俯瞰云原生,这便是供应层

来源 | K8sMeetup社区作者 | Catherine Paganini,Jason Morgan头图 | 下载于视觉中国在都在说云原生,它的技术图谱你真的了解吗?中,我们对 CNCF 的云原生技术生态做了整体的介绍。从本篇开始,将详细介绍云原生全景图的…

进击的Kubernetes调度系统(一):SchedulingFramework

作者:王庆璨 张凯 前言 Kubernetes已经成为目前事实标准上的容器集群管理平台。它为容器化应用提供了自动化部署、运维、资源调度等全生命周期管理功能。经过3年多的快速发展,Kubernetes在稳定性、扩展性和规模化方面都有了长足进步。 尤其是Kubernete…

HTTP系列学习(笔记三):HTTP的发展历程思维导图

HTTP(HyperText Transfer Protocol)是万维网(World Wide Web)的基础协议。 0.9版本: 1.0版本: 1.1版本: 2.0版本: 2.0进化版本: 为了便于浏览记忆,整理了一份…

为什么说Serverless是云的未来?

作者 | 不瞋 阿里云高级技术专家 每隔几年,IT 界就会出现新突破性的进展。回望整个计算机技术发展史,我们会发现“抽象、解耦、集成”的主题贯穿其中。产业每一次的抽象、解耦、集成,都将创新推向新的高度,也催生出庞大的市场和…

(企业级)HBuilder X 安装蓝叠安卓模拟器

文章目录1. 下载蓝叠模拟器2. 设置 adb链接和root3. 设置竖屏4. 设置uni-app adb 环境变量5. 配置 HBuilderX adb5. 运行6.效果图7.常见模拟器1. 下载蓝叠模拟器 https://www.bluestacks.cn/ 2. 设置 adb链接和root 3. 设置竖屏 4. 设置uni-app adb 环境变量 在 HBuilderX…