新用户注册入口 老用户登录入口

[转载]18.准入控制器

文章作者:转载 更新时间:2023-12-25 10:44:03 阅读数量:335
文章标签:集群管理安全验证
本文摘要:准入控制器是Kubernetes API Server中保障集群安全与资源合规使用的核心组件,通过MutatingAdmissionWebhook和ValidatingAdmissionWebhook对请求对象进行变更或验证。在实际运维中,启用如AlwaysPullImages、LimitRanger、ResourceQuota及PodSecurityPolicy等准入控制器,可有效防止镜像篡改、实施资源限额与配额管理,并确保Pod创建的安全策略符合预期。集群管理者可通过kube-apiserver命令配置准入控制器的启用与禁用,以实现精细的集群资源管控与安全保障措施。
转载文章

本篇文章为转载内容。原文链接:https://blog.csdn.net/flq18210105507/article/details/120845744。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

18.准入控制器

Admission Controller准入控制器作为把手kubernetes系统安全的最后一道关卡,对已知且有权限用户的操作合规性验证是缺一不可的!

1.什么是准入控制器?

准入控制器(Admission Controller)位于API Server中,在对象被持久化之前,准入控制器拦截对API Server的请求,一般用来做身份验证和授权。

其中包含两个特殊的控制器钩子:

MutatingAdmissionWebhook和ValidatingAdmissionWebhook

1.变更(Mutating)准入控制

工作逻辑为修改请求的对象
2.验证(Validating)准入控制

工作逻辑为验证请求的对象

以上两类控制器可以分而治之,也能合作运行

2.为什么我们需要它?

就像我在上一章节提到的那样,准入控制器的引入可以很好的帮助我们运维人员,站在一个集群管理者的角度,去“限定”和规划集群资源的合理利用策略和期望状态。

同时,很多kubernetes的高级功能,也是基于准入控制器之上进行建设的。

3.常用的准入控制器

1.AlwaysPullImages

总是拉取远端镜像;

好处:可以避免本地系统处于非安全状态时,被别人恶意篡改了本地的容器镜像

2.LimitRanger

此准入控制器将确保所有资源请求不会超过namespace级别的LimitRange(定义Pod级别的资源限额,如cpu、mem)

3.ResourceQuota

此准入控制器负责集群的计算资源配额,并确保用户不违反命名空间的ResourceQuota对象中列举的任何约束
(定义名称空间级别的配额,如pod数量)

4.PodSecurityPolicy

此准入控制器用于创建和修改pod,
并根据请求的安全上下文和可用的Pod安全策略确定是否应该允许它。

4.如何开启准入控制器

在kubernetes环境中,你可以使用kube-apiserver命令结合enable-admission-plugins的flag,后面需要跟上以逗号分割的准入控制器清单,如下所示:

kube-apiserver --enable-admission-plugins=NamespaceLifecycle,LimitRanger …

5.如何关闭准入控制器

同理,你可以使用flag:disable-admission-plugins,来关闭不想要的准入控制器,如下所示:

kube-apiserver --disable-admission-plugins=PodNodeSelector,AlwaysDeny …

6.实战:控制器的使用

1.LimitRanger

1)首先,编辑limitrange-demo.yaml文件,我们定义了一个cpu的准入控制器。
其中定义了默认值、最小值和最大值等。

apiVersion: v1
kind: LimitRange
metadata:name: cpu-limit-rangenamespace: myns
spec:limits:- default:            #默认上限cpu: 1000mdefaultRequest:cpu: 1000mmin:cpu: 500mmax:cpu: 2000mmaxLimitRequestRatio:       #定义最大值是最小值的几倍,当前为4倍cpu: 4type: Container

2)apply -f之后,我们可以通过get命令来查看LimitRange的配置详情

[root@centos-1 dingqishi]# kubectl get LimitRange cpu-limit-range -n myns
NAME              CREATED AT
cpu-limit-range   2021-10-10T07:38:29Z[root@centos-1 dingqishi]# kubectl describe LimitRange cpu-limit-range -n myns
Name:       cpu-limit-range
Namespace:  myns
Type        Resource  Min   Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---   ---  ---------------  -------------  -----------------------
Container   cpu       500m  2    1                1              4

2.ResourceQuota

1)同理,编辑配置文件resoucequota-demo.yaml,并apply;
其中,我们定义了myns名称空间下的资源配额。

apiVersion: v1
kind: ResourceQuota
metadata:name: quota-examplenamespace: myns
spec:hard:pods: "5"requests.cpu: "1"requests.memory: 1Gilimits.cpu: "2"limits.memory: 2Gicount/deployments.apps: "2"count/deployments.extensions: "2"persistentvolumeclaims: "2"

2)此时,也可以查看到ResourceQuota的相关配置,是否生效

[root@centos-1 dingqishi]# kubectl get ResourceQuota -n myns
NAME            CREATED AT
quota-example   2021-10-10T08:23:54Z[root@centos-1 dingqishi]# kubectl describe ResourceQuota quota-example -n myns
Name:                         quota-example
Namespace:                    myns
Resource                      Used  Hard
--------                      ----  ----
count/deployments.apps        0     2
count/deployments.extensions  0     2
limits.cpu                    0     2
limits.memory                 0     2Gi
persistentvolumeclaims        0     2
pods                          0     5
requests.cpu                  0     1
requests.memory               0     1Gi

大家可以将生效后的控制器,结合相关pod自行测试资源配额的申请、限制和使用的情况

本篇文章为转载内容。原文链接:https://blog.csdn.net/flq18210105507/article/details/120845744。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

相关阅读
文章标题:[转载][洛谷P1082]同余方程

更新时间:2023-02-18
[转载][洛谷P1082]同余方程
文章标题:[转载]webpack优化之HappyPack实战

更新时间:2023-08-07
[转载]webpack优化之HappyPack实战
文章标题:[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法

更新时间:2023-09-10
[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法
文章标题:[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo

更新时间:2024-03-11
[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo
文章标题:[转载]程序员也分三六九等?等级差异,一个看不起一个!

更新时间:2024-05-10
[转载]程序员也分三六九等?等级差异,一个看不起一个!
文章标题:[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集

更新时间:2024-01-12
[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集
名词解释
作为当前文章的名词解释,仅对当前文章有效。
准入控制器(Admission Controller)准入控制器是Kubernetes系统中的一个核心组件,它位于API Server层级,在接收到用户的请求并对对象进行持久化存储之前对这些请求进行拦截和处理。其主要作用是对集群资源的创建、更新等操作执行验证、修改或拒绝等策略,确保集群资源的安全性和合规性。例如,它可以限制用户对Pod资源的创建请求,确保Pod的配置符合预设的安全策略或者资源使用限额。
MutatingAdmissionWebhookMutatingAdmissionWebhook是Kubernetes准入控制器的一种特殊类型,它的功能是在API Server将请求写入数据库前,能够实时地修改请求中的对象数据。比如,它可以自动为Pod添加默认的环境变量、注解或者调整容器的资源请求值,从而实现集群级别的标准化配置和资源优化管理。
ResourceQuotaResourceQuota是Kubernetes中用于控制Namespace级别资源使用的机制,它是一种准入控制器,可以设置命名空间内各种资源类型的配额上限,如CPU、内存以及Pod数量等。当Namespace内的资源用量达到设定的quota时,kube-apiserver会阻止超出配额的资源创建请求,以此来保证集群资源的合理分配和避免资源滥用情况的发生。在实际应用中,管理员通过定义ResourceQuota对象并将其关联到特定Namespace,就能够实现对整个Namespace资源总量的有效管理和限制。
延伸阅读
作为当前文章的延伸阅读,仅对当前文章有效。
准入控制器在Kubernetes生态系统中的角色日益凸显,尤其在保障云原生应用安全与资源优化配置方面起到了关键作用。近期,随着社区对安全性和稳定性需求的不断提升,新的准入控制器策略也在不断涌现和迭代。
例如,2022年3月,Kubernetes官方宣布了PodPresets Admission Controller的回归,并将其更名为SidecarSet。这一改进使得运维人员能够更方便地为多个Pod定义共享配置和容器,强化了多容器应用部署的一致性与可维护性。同时,社区还在积极讨论ServiceAccountTokenVolumeProjection Admission Controller的功能增强,以实现对服务账户令牌自动挂载的安全策略控制。
另一方面,针对集群资源滥用和无序扩张的问题,有开发者提出了一种新型的动态资源配额管理方案,通过自定义准入控制器来实时监控并调整Namespace级别的资源限额,确保了集群资源的高效利用和公平分配。这种精细化管理方式不仅提升了集群的整体性能表现,还降低了由于资源争抢引发的故障风险。
此外,Kubernetes生态中一些第三方项目也围绕准入控制器展开了深入探索,如Open Policy Agent(OPA)集成到Webhook中,提供了强大的、声明式的策略引擎,让集群管理者能更加灵活地定义和执行复杂的准入规则,从而进一步提升集群安全性及合规性。
总之,准入控制器作为Kubernetes平台的核心组件,其发展动态与创新实践值得持续关注。未来,随着云原生技术的快速发展,准入控制器将承载更多的功能与责任,成为驱动Kubernetes集群迈向更高稳定性和安全性的基石。
知识学习
实践的时候请根据实际情况谨慎操作。
随机学习一条linux命令:
cp file1 file2 - 复制文件。
随便看看
拉到页底了吧,随便看看还有哪些文章你可能感兴趣。
纯js实用T恤衫花纹图案预览特效 01-26 基于Bootstrap仿Github样式下拉列表框插件 08-08 jQuery电子邮件地址填写自动完成插件 04-30 Superset 数据源连接配置:精细化自定义SQLAlchemy URI实现数据分析与可视化,含SSL加密连接实例 03-19 jquery可任意拖动排序的导航图片效果 02-23 侧边栏个人图文简历HTML模板 12-09 Beego框架升级中的Bee工具版本兼容性问题与迁移策略:结构变更、功能接口变动及社区解决方案 12-07 Kibana无法启动:针对服务器内部错误的Elasticsearch连接、配置文件、端口冲突与资源排查解决(注:由于字数限制,未能完全包含所有关键词,但包含了核心问题描述及几个关键排查点) 11-01 ClickHouse外部表使用中文件权限与不存在问题的解决方案:错误提示、查询操作与文件路径管理实务 09-29 本次刷新还10个文章未展示,点击 更多查看。
Apache Atlas UI无法正常加载与样式丢失问题排查及解决方案:关注网络连接、浏览器缓存与开发者工具应用 09-25 Greenplum数据库中数据插入操作详解:单行多行插入与gpfdist实现大批量导入 08-02 [转载]html5 footer header,html-5 --html5教程article、footer、header、nav、section使用 07-16 [转载][GCC for C]编译选项---IDE掩盖下的天空 06-29 简洁大方珠宝钻石收藏网站模板下载 06-20 黑色高端精致汽车4s店美容html5模板下载 06-01 蓝色互联网项目融资管理平台网站模板 05-16 响应式游戏开发类企业前端cms模板下载 05-02 Beego框架动态路由实现:重定向与命令行参数驱动的路由设计实践 04-05 .NET 中字典操作避免 KeyNotFoundException:TryGetValue、ContainsKey 与 GetOrAdd 实践详解 04-04 [转载]2021/4/23爬虫第五次课(爬虫网络请求模块下下) 03-01
时光飞逝
"流光容易把人抛,红了樱桃,绿了芭蕉。"