【Kubernetes运维篇】RBAC之准入控制器详解

news2024/12/26 14:25:53

文章目录

    • 一、ResourceQuota准入控制器
      • 1、ResourceQuota是什么?
      • 2、限制CPU、内存、Pod数量、Deployment数量
      • 3、限制存储空间大小
    • 二、LimitRanger准入控制器
      • 1、LimitRanger是什么?
      • 2、LimitRanger限制案例

一、ResourceQuota准入控制器

中文官方参考文档:

1、ResourceQuota是什么?

ResourceQuota准入控制器是K8S中内置的准入控制器,默认该控制器是启用状态,主要功能是限制名称空间下的资源使用,防止在一个名称空间下的Pod占用过多的资源,简单理解就是针对名称空间限制用户资源的使用。

2、限制CPU、内存、Pod数量、Deployment数量

第一步:创建 test 名称空间,针对这个名称空间做限制

kubectl create ns test

第二步:创建resourcequota资源限制CPU、内存、Pod数量、Deployment数量

cat resourcequota.yaml 
---
apiVersion: v1
kind: ResourceQuota
metadata: 
  name: resourcequota-demo
  namespace: test            # 针对test名称空间限制
spec:
  hard:
    pods: "6"                # 限制Pod数量
    requests.cpu: "2"        # 限制CPU请求
    requests.memory: 2Gi     # 限制内存请求
    limits.cpu: "4"          # 限制CPU使用
    limits.memory: 10Gi      # 限制内存使用
    count/deployments.apps: "10"  # 限制deployments数量
    persistentvolumeclaims: "10"  # 限制PVC数量

参数解释:

资源名称描述
limits.cpu所有非终止状态的 Pod,其 CPU 限额总量不能超过该值。
limits.memory所有非终止状态的 Pod,其内存限额总量不能超过该值。
requests.cpu所有非终止状态的 Pod,其 CPU 需求总量不能超过该值。
requests.memory所有非终止状态的 Pod,其内存需求总量不能超过该值。
hugepages-<size>对于所有非终止状态的 Pod,针对指定尺寸的巨页请求总数不能超过此值。
cpurequests.cpu 相同。
memoryrequests.memory 相同。

第三步:查看test名称空间限制信息

kubectl describe quota -n test

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TOPEINXn-1689485141312)(D:\MD归档文档\IMG\image-20230716113435632.png)]

3、限制存储空间大小

第一步:创建resourcequota资源限制存储空间大小

cat resourcequota-2.yaml 
---
apiVersion: v1
kind: ResourceQuota
metadata: 
  name: resourcequota-demo
  namespace: test            # 针对test名称空间限制
spec:
  hard:
    requests.storage: "5Gi"              # 限制存储总容量
    persistentvolumeclaims: "5"          # 限制pvc总数
    requests.ephemeral-storage: "1Gi"    # 限制使用本地临时存储的下限总容量
    limits.ephemeral-storage: "2Gi"      # 限制使用本地临时存储上限总容量 

参数解释:

资源名称描述
requests.storage所有 PVC,存储资源的需求总量不能超过该值。
persistentvolumeclaims在该命名空间中所允许的 PVC 总量。
requests.ephemeral-storage在命名空间的所有 Pod 中,本地临时存储请求的总和不能超过此值
limits.ephemeral-storage在命名空间的所有 Pod 中,本地临时存储限制值的总和不能超过此值。

第二步:验证

kubectl describe quota -n test

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-asiKagsR-1689485141313)(D:\MD归档文档\IMG\image-20230716115334720.png)]

二、LimitRanger准入控制器

1、LimitRanger是什么?

LimitRanger准入控制器是Kubernetes的一种资源配额管理机制,用于限制Pod的资源使用情况。它主要用于以下几个方面:

  • 设置容器的资源限制:LimitRanger可以强制要求每个Pod或容器设置资源限制,例如CPU使用量和内存使用量。这有助于避免某个Pod或容器过度消耗集群资源,导致其他应用程序受影响。

  • 强制执行资源限制:LimitRanger可以确保Pod或容器只使用指定的资源限制,通过对Pod的准入控制来强制执行这些限制。如果没有设置资源限制,在高负载情况下,一个应用程序可能消耗过多的资源,从而影响其他应用程序的稳定性。

  • 配额管理:LimitRanger可以与Kubernetes的配额管理机制一起使用,实现更精细的资源管理。通过设置配额限制,可以控制每个命名空间可用的资源总量,以及每个命名空间中每种资源的使用情况。

总的来说,LimitRanger准入控制器有助于确保资源的合理使用和分配,提高集群的可靠性和稳定性。

如果我们在创建Pod定义了资源上下限,但不满足LimitRanger规则中定义的资源上下限,此时LimitRanger会拒绝创建Pod资源,如果创建Pod时没有指定资源上下限,默认会使用LimitRanger规则中的资源上下限制

2、LimitRanger限制案例

第一步:创建limit 名称空间,针对limit名称空间做演示

kubectl create ns limit

第二步:配置LimitRanger规则

cat limitrange.yaml 
---
apiVersion: v1
kind: LimitRange
metadata:
  name: limitrange-demo
  namespace: limit
spec:
  limits:
  - default:               # 默认容器上限值
      cpu: 1000m
      memory: 1000Mi
    defaultRequest:        # 默认容器下限值
      cpu: 500m
      memory: 500Mi
    min:                   # 创建Pod或Containerd中,requests字段值不得小于此值
      cpu: 500m
      memory: 500Mi
    max:                   # 创建Pod或Containerd中,requests字段值不得大于此值
      cpu: 2000m
      memory: 2000Mi
    maxLimitRequestRatio:  # 指定资源的上限和下限的比值,即上限是下限的多少倍
      cpu: 4
      memory: 4
    type: Container        # 针对Container做限制,也可以是Pods
kubectl apply -f limitrange.yaml

第三步:查看规则信息

kubectl describe limitrange -n limit

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8h2ws11W-1689485141314)(D:\MD归档文档\IMG\image-20230716131050591.png)]

第四步:测试默认上下限,创建Pod不指定限制,看是否使用LimitRanger规则中默认配置的值

cat limitrange-pod.yaml 
---
apiVersion: v1
kind: Pod
metadata:
  name: limit-pod-demo
  namespace: limit
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: nginx
kubectl apply -f limitrange-pod.yaml

查看限制信息:

kubectl describe pod limit-pod-demo -n limit

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DsO8QRYx-1689485141314)(D:\MD归档文档\IMG\image-20230716131903333.png)]

第五步:测试CPU下限,创建Pod指定不合规的下限,看是否可以成功创建。

cat limitrange-pod-2.yaml 
---
apiVersion: v1
kind: Pod
metadata:
  name: limit-pod-demo-2
  namespace: limit
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: nginx
    resources:
      requests:
        cpu: 100m   # 下限100m
kubectl apply -f limitrange-pod-2.yaml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YBmyTFXC-1689485141314)(D:\MD归档文档\IMG\image-20230716132249261.png)]

可以看到不能成功创建Pod,因为我们指定的下限不合规,我们在定义LimitRanger规则是下限不得小于500m,我创建Pod是指定下限是100m 所有无法创建。

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

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

相关文章

前端Vue仿美团右侧侧边栏弹框筛选框popup alert

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。 通过组件化开发&#xff0c;可以有效实现…

Linux dpkg和dpkg-deb常用参数使用说明

名词解释 “dpkg ”是“ Debian Packager ”的简写。为“Debian” 专门开发的套件管理系统&#xff0c;方便软件的安装、更新及移除。所有源自“Debian”的“Linux ”发行版都会使用 “dpkg”&#xff0c;例如 “ Ubuntu ”、“Knoppix ”等。 dpkg-deb和dpkg的区别 dpkg-de…

golang使用bcrypt包对密码进行加密

bcrypt bcrypt是一个由美国计算机科学家尼尔斯普罗沃斯&#xff08;Niels Provos&#xff09;以及大卫马齐耶&#xff08;David Mazires&#xff09;根据Blowfish加密算法所设计的密码散列函数&#xff0c;于1999年在USENIX中展示。实现中bcrypt会使用一个加盐的流程以防御彩虹…

深入理解Windows操作系统机制(四)

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天我们来重新审视一下Windows这个我们熟悉的不能再熟悉的系统。 我们每天都在用Windows操作系统&#xff0c;但是其实我们每天直接在打交道的并不是Windows操作系统的内核&#xff0c;而是Windows操作系统…

H3C-Cloud Lab实验-PPPoE实验

实验拓扑图&#xff1a; 实验需求&#xff1a; 1. 如图&#xff0c;私网内部配置为 192.168.1.0/24 网段&#xff0c;R2 上配置 Loopback0 口模拟互联网地址 2. 配置 R2 为 PPPoE Server&#xff0c;为 R1 提供 PPPoE 拨号服务&#xff0c;并为 R1 自动分配公网 IP 地址 3. …

【unity之IMGUI实践】抽象父类继承实现【三】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

Bypass!Burp分块传输绕WAF插件

插件简介 本插件主要用于分块传输绕WAF&#xff0c;不了解分块传输绕WAF的可阅读作者这篇文章&#xff1a;【第8周】编写Burp分块传输插件绕WAF 。 关注【Hack分享吧】公众号&#xff0c;回复关键字【230605】获取下载链接 插件使用 延时分块传输

CentOS7.8离线安装Docker24.0.2,离线安装gcc与g++环境

背景 有时候运维时要求在内网环境下操作&#xff0c;即服务器无法连接互联网&#xff0c;那么就无法通过 yum 源在线安装。。这时&#xff0c;一般通过以下3种方式来安装需要的软件&#xff1a; 下载源码包编译安装&#xff1b;下载对应平台编译好的安装包&#xff0c;解压即…

了解JVM

PS&#xff1a;本文以下部分&#xff0c;默认都是使用HotSpot,也就是Oracle Java 默认的虚拟机为前提来进行介绍的。 1.JVM执行流程 程序在执行之前先要把Java代码转换成字节码&#xff08;.class文件&#xff09;&#xff0c;JVM首先需要把字节码通过一定的方式类加载器(Clas…

python调用oepnai API

目录 apiAI官网介绍&#xff08;[Introduction](https://platform.openai.com/docs/api-reference/introduction)&#xff09;安装官方SDK认证&#xff08;Authentication&#xff09;申请API KEY请求组织&#xff08;Requesting organization&#xff09; 发送请求关于chat to…

CAJ文献如何转成PDF?分享两个免费的方法!

CAJ格式是中国知网&#xff08;CNKI&#xff09;常见的电子文献格式&#xff0c;但有时我们可能更倾向于将其转换为PDF格式以便于查阅、存储和共享。为了帮助大家完成这个任务&#xff0c;下面将分享两种免费的方法来将CAJ文献转换为PDF格式。无论您是研究学者、学生还是对特定…

学校招生报名小程序开发笔记(一)

背景 这是一个以报名为核心的职业学校招生小程序&#xff0c;目的是方便想要系统学习技能&#xff0c;入门某项技能或者领域的初高中毕业生&#xff0c;了解该学校的基本情况及各个专业&#xff0c;并提供报名路径&#xff0c;致力于技能型人才培养 功能规划 主要功能包括专…

使用 Pytest 运行 yaml 文件来驱动 Appium 自动化测试

目录 前言&#xff1a; 获取 yaml 文件 YamlTest 测试类 Appium 初始化 Pytest 测试类 自定义 runtest demo&#xff1a; 自定义错误输出 Yaml 使用方式规则 前言&#xff1a; 使用Pytest来运行yaml文件来驱动Appium自动化测试是一种方便且灵活的方法。通过将测试数据…

【异常解决】postman请求提示Full authentication is required to access this resource

Full authentication is required to access this resource解决办法 报错问题&#xff1a;在使用 postman 测试接口时&#xff0c;该接口需要在 Header 中传入 access_token&#xff0c;实际上也在请求的 Header 中添加上了 access_token 参数&#xff0c;但是服务端还是返回4…

【STM32零基础入门教程01】STM32入门基础知识

本篇内容为STM32零基础入门教程的第一篇&#xff0c;网上STM32的教程很多&#xff0c;有些初学者还是望而却步。其实STM32并不难&#xff0c;只是一个新的事物出现在我们面前一时间不适应&#xff0c;思来想去我打算写点东西一方面自己有点知识的积累&#xff0c;另一方面希望可…

Python教程(4)——Python开发工具PyCharm的下载与安装

PyCharm是一种专业的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;由JetBrains公司开发和维护。它提供了丰富的功能和工具&#xff0c;帮助开发人员更高效地编写、调试和测试Python代码。如果是一些大型Python项目强烈推荐用这个来开发。今天我们来介绍一下PyCha…

【实战】 七、Hook,路由,与 URL 状态管理(中) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(十二)

文章目录 一、项目起航&#xff1a;项目初始化与配置二、React 与 Hook 应用&#xff1a;实现项目列表三、TS 应用&#xff1a;JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…

Docker基础(二)

1、Docker工作原理 Docker是一个Clinet-Server结构的系统&#xff0c;Docker守护进程运行在主机上&#xff0c;然后通过Socket连接从客户端访问&#xff0c;守护进程从客户端接受命令并管理运行在主机上的容器。 容器&#xff0c;是一个运行时环境&#xff0c;就是我们前面说的…

论文笔记:Deep Spatio-Temporal Residual Networks for Citywide Crowd FlowsPrediction

2017 AAAI 使用时空残差网络ST-ResNet 进行 城市区域流入流出客流量预测 1 研究对象 城市客流流入流出 根据经纬度将城市划分为网格 IJ 1.1 难点 空间依赖性 时间依赖性 外部影响 2 模型 3 实验 北京出租车数据纽约自行车数据 评价指标&#xff1a;RMSE

Java List中通过对象属性排序,可实现多条件排序

直接上代码&#xff1a; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; import lombok.Data;import java.util.Comparator; import java.util.List; import java.util.stream.Collectors;/*** List 对象属性排序*/Data AllArgsConstructor clas…