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

文章目录

    • 一、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-demonamespace: 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-demonamespace: 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-demonamespace: limit
spec:limits:- default:               # 默认容器上限值cpu: 1000mmemory: 1000MidefaultRequest:        # 默认容器下限值cpu: 500mmemory: 500Mimin:                   # 创建Pod或Containerd中,requests字段值不得小于此值cpu: 500mmemory: 500Mimax:                   # 创建Pod或Containerd中,requests字段值不得大于此值cpu: 2000mmemory: 2000MimaxLimitRequestRatio:  # 指定资源的上限和下限的比值,即上限是下限的多少倍cpu: 4memory: 4type: 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-demonamespace: limit
spec:containers:- image: nginximagePullPolicy: IfNotPresentname: 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-2namespace: limit
spec:containers:- image: nginximagePullPolicy: IfNotPresentname: nginxresources: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.mzph.cn/news/3132.shtml

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

相关文章

flutter开发实战-文件上传及上传队列

flutter开发实战-文件上传及上传队列 之前开发中遇到了发帖子图片上传&#xff0c;上传到七牛。 一、实现Dio上传 上传使用到Dio上传功能&#xff0c;具体代码 // 上传文件&#xff08;图片&#xff09;doUploadFile(String url, UploadFileInfo fileInfo,{Map<String, …

scrapy

scrapy介绍安装--架构 Scrapy 是一个爬虫框架&#xff08;底层代码封装好了&#xff0c;只需要在固定位置写固定代码即可&#xff09;&#xff0c;应用领域比较广泛---》爬虫界的django# 安装 #Windows平台1、pip3 install wheel #安装后&#xff0c;便支持通过wheel文件安装软…

c#调用cpp库,debug时不进入cpp函数

选中c#的项目&#xff0c;右击属性&#xff0c;进入属性页&#xff0c;点击调试&#xff0c;点击打开调试启动配置文件UI&#xff0c;打开启用本机代码调试。

相机标定学习笔记

Kalibr 是标定工具中&#xff0c;唯一一个可以标定camToImu的&#xff0c;是vio必不可少的工具&#xff0c;其他的都有替代品。所以学习多种开源算法进行相机标定&#xff0c;并记录学习相机标定的过程。 一、相机标定 1、在场景中放置一个已知的物体 &#xff08;1&#xff…

初探 Seaborn:Python 数据可视化入门

Seaborn 是一个基于 Matplotlib 的 Python 数据可视化库&#xff0c;它提供了更高级别的接口&#xff0c;使得创建美观的统计图形变得非常简单。在这篇文章中&#xff0c;我们将讨论 Seaborn 的基础使用方法&#xff0c;包括如何创建各种常见的统计图形。 一、安装和导入 Seab…

MySQL的四种主要存储引擎

目录 &#xff08;一&#xff09;MyISAM &#xff08;二&#xff09;InnoDB 1)自动增长列&#xff1a; 2)外键约束&#xff1a; &#xff08;三&#xff09;MEMORY &#xff08;四&#xff09;MERGE 什么是存储引擎&#xff1f; 对MySQL来说&#xff0c;它提供了存储不…

【wifi模块选型指导】数据传输WiFi模块的选型参考_USB/UART接口WiFi模块

数据传输WiFi模块有USB接口和UART接口两大类&#xff0c;为满足行业客户的不同应用需求&#xff0c;SKYLAB研发推出了多款2.4GHz单频&#xff0c;2.4/5GHz双频的USB接口WiFi模块和UART接口WiFi模块&#xff0c;数据传输能力&#xff0c;传输距离各有不同。怎么选才是最适合的呢…

基于ResNet50算法实现图像分类识别

概要 在本文中将介绍使用Python语言&#xff0c;基于TensorFlow搭建ResNet50卷积神经网络对四种动物图像数据集进行训练&#xff0c;观察其模型训练效果。 一、目录 ResNet50介绍 图片模型训练预测 项目扩展 二、ResNet50介绍 ResNet50是一种基于深度卷积神经网络&#xff…

性能测试需求分析怎么做?(中)

本系列文章我们为大家系统地介绍一下性能测试需求分析&#xff0c;让大家全面掌握性能测试的第一个环节。本系列文章将会从性能测试需求分析整体概述、性能测试需求分析内容、性能测试需求分析方法这三个方面进行展开。在&#xff08;上&#xff09;部分中&#xff0c;我们为大…

238. 除自身以外数组的乘积

题目描述&#xff1a; 主要思路&#xff1a; 正逆各扫一遍&#xff0c;利用数组存储当前数左边和右边的乘积。 class Solution { public:vector<int> productExceptSelf(vector<int>& nums) {int nnums.size();vector<int> ans;int l[n1],r[n1];l[0]1,…

打家劫舍问题

你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个房屋存放金额的…

python将dataframe数据导入MongoDB非关系型数据库

文章目录 pymongo连接新建数据库和集合pandas导入数据插入数据数据查看 pymongo连接 import pymongo client pymongo.MongoClient("mongodb://localhost:27017/") dblist client.list_database_names() for db in dblist:print(db) #查看已有数据库admin bilibil…

算法设计方法之贪心算法

贪心算法 介绍 贪心算法是算法设计的一种方法。期盼通过每个阶段的局部最优选择&#xff0c;从而达到全局的最优。但结果不一定是最优的。 基础案例 场景一 零钱兑换 现有硬币 1 元、2 元、5 元&#xff0c;需要用最少的硬币数量凑够 11 元。 利用贪心算法实现&#xff…

【微信小程序】实现点击+号弹出一个附着旁边的弹窗进行多个方式的选择

在微信小程序中&#xff0c;你可以使用小程序的组件和事件来实现点击号弹出一个附着在号旁边的弹窗&#xff0c;以进行多个方式的选择。以下是一个示例代码&#xff1a; 在wxml文件中&#xff0c;创建一个按钮&#xff0c;并为按钮绑定一个点击事件&#xff1a; <view cla…

【kubernetes系列】kubernetes之计算资源管理

资源类型 在 Kubernetes 中&#xff0c;Node 提供资源&#xff0c;而 Pod 使用资源。其中资源分为计算&#xff08;CPU、Memory、GPU&#xff09;、存储&#xff08;Disk、SSD&#xff09;、网络&#xff08;Network Bandwidth、IP、Ports&#xff09;。这些资源提供了应用运行…

开启了代理,但是git仍然连接拒绝的解决方法

开启了代理&#xff0c;但是git仍然连接拒绝的原因&#xff1a; windows 中 git 默认不会使用系统代理&#xff0c;所以即使连接代理或者打开代理软件&#xff0c;浏览器仍然可以访问 GitHub 或 Gitee&#xff1b;但是使用 git 命令行连接 GitHub 或 Gitee 远程仓库可能会出现…

【LLM】Langchain使用[二](模型链)

文章目录 1. SimpleSequentialChain2. SequentialChain3. 路由链 Router Chain Reference 1. SimpleSequentialChain 场景&#xff1a;一个输入和一个输出 from langchain.chat_models import ChatOpenAI #导入OpenAI模型 from langchain.prompts import ChatPromptTempla…

自动化测试之数据驱动与关键字驱动

目录 1.录制/回放的神话 2.数据驱动的自动化测试框架 3.关键字驱动的自动化测试 初次接触自动化测试时&#xff0c;对数据驱动和关键字驱动不甚理解&#xff0c;觉得有点故弄玄须&#xff0c;不就是参数和函数其嘛&#xff01;其实其也体现了测试所不同与开发的一些特点&…

目标检测——R-CNN网络基础

目录 Overfeat模型RCNN模型算法流程候选区域生成CNN网络提取特征目标分类&#xff08;SVM&#xff09;目标定位预测过程 算法总结 Fast RCNN模型算法流程ROI Pooling目标分类和回归 模型训练模型总结 Overfeat模型 RCNN模型 算法流程 候选区域生成 CNN网络提取特征 目标分类&am…

机器学习1

核心梯度下降算法&#xff1a; import numpy as np from utils.features import prepare_for_trainingclass LinearRegression:def __init__(self,data,labels,polynomial_degree 0,sinusoid_degree 0,normalize_dataTrue):"""1.对数据进行预处理操作2.先得到…