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

这篇具有很好参考价值的文章主要介绍了【Kubernetes运维篇】RBAC之准入控制器详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、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,针对指定尺寸的巨页请求总数不能超过此值。
cpu requests.cpu 相同。
memory requests.memory 相同。

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

kubectl describe quota -n test

【Kubernetes运维篇】RBAC之准入控制器详解,# 3-Kubernetes容器编排,kubernetes,运维,容器,RBAC授权,准入控制

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

【Kubernetes运维篇】RBAC之准入控制器详解,# 3-Kubernetes容器编排,kubernetes,运维,容器,RBAC授权,准入控制

二、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

【Kubernetes运维篇】RBAC之准入控制器详解,# 3-Kubernetes容器编排,kubernetes,运维,容器,RBAC授权,准入控制

第四步:测试默认上下限,创建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

【Kubernetes运维篇】RBAC之准入控制器详解,# 3-Kubernetes容器编排,kubernetes,运维,容器,RBAC授权,准入控制

第五步:测试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

【Kubernetes运维篇】RBAC之准入控制器详解,# 3-Kubernetes容器编排,kubernetes,运维,容器,RBAC授权,准入控制

可以看到不能成功创建Pod,因为我们指定的下限不合规,我们在定义LimitRanger规则是下限不得小于500m,我创建Pod是指定下限是100m 所有无法创建。文章来源地址https://www.toymoban.com/news/detail-574184.html

到了这里,关于【Kubernetes运维篇】RBAC之准入控制器详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kubernetes-控制器

    目录 一、replicaset 二、deployment 1、版本迭代 2、回滚 3、滚动更新策略 4、暂停与恢复 三、daemonset 四、statefulset 五、job 六、cronjob ReplicaSet用于保证指定数量的 Pod 副本一直运行 replicaset是通过标签匹配pod replicaset自动控制副本数量,pod可以自愈 回收资源 Deployment 的主要作用是实

    2024年02月06日
    浏览(35)
  • Kubernetes Pod控制器

    Pod控制器及其功用 Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资源 Deployment 部署无状态应用 负责创建和管理 ReplicaSet , 维护 Pod 副本数

    2024年02月12日
    浏览(27)
  • 【kubernetes系列】Kubernetes之job和cronjob控制器

    本章节将分享kubernetes中的job控制器和cronjob控制器,这是用于另外两种场景的pod控制器。 对于Deployment、ReplicaSet、ReplicationController等类型的控制器而言,它希望pod保持预期数目、持久运行下去,除非用户明确删除,否则这些对象一直存在,它们针对的是耐久性任务,如web服务

    2024年02月11日
    浏览(38)
  • 【云原生】kubernetes控制器deployment的使用

        目录 ​编辑 1 Controller 控制器 1.1 什么是 Controller 1.2 常见的 Controller 控制器 1.3 Controller 如何管理 Pod 2 Deployment 2.1 创建 deployment 2.2 查看 deployment 2.3 扩缩 deployment 2.4 回滚 deployment 2.5 删除 deployment 1 Controller 控制器 官网: 控制器 | Kubernetes 1.1 什么是 Controller Kubernetes 通常不会

    2024年02月13日
    浏览(25)
  • 5、Kubernetes核心技术 - Controller控制器工作负载

    目录 一、Deployments - 控制器应用 二、Deployment升级回滚和弹性收缩 2.1、创建一个 1.14 版本的 pod 2.2、应用升级 2.3、查看升级状态 2.4、查看历史版本 2.5、应用回滚 2.6、弹性伸缩  三、StatefulSet - 有状态应用 四、DaemonSet - 守护进程 五、Job - 单次任务 六、Cronjob - 定时任务 Deplo

    2024年02月15日
    浏览(28)
  • 【云原生|Kubernetes】14-DaemonSet资源控制器详解

    ​ 在 Kubernetes 中,DaemonSet 是一种用于在节点上运行指定的 Pod 的控制器(Controller)。与 ReplicaSet 或 Deployment 不同,DaemonSet 不是为了扩展 Pod 数量而创建的,而是为了在每个节点上运行一个实例或多个实例的 Pod。 ​ DaemonSet 通常用于在 Kubernetes 集群中运行一些系统级别的服务

    2024年02月13日
    浏览(27)
  • 【Kubernetes资源篇】DaemonSet控制器入门实战详解

    中文官方文档参考: 1、DaemonSet控制器是什么? Kubernetes中的DaemonSet(简写ds)控制器是一种 用来运行守护进程应用程序的控制器,它确保每个Node节点都运行具有指定配置的 Pod副本,当Node节点的加入或删除DaemonSet控制器会自动创建或删除相应的 Pod副本。 特点: 每个节点只运行

    2024年02月10日
    浏览(60)
  • 【Kubernetes资源篇】Replicaset控制器入门实战详解

    官方中文参考文档: ReplicaSet是k8s中一种资源对象,简写 rs , 用于管理Pod副本数量和健康状态,在 spec.replicas 字段中可以定义Pod副本数量,ReplicaSet会始终保持Pod在指定数量 ,当发现Pod数量大于副本数量时,会移除多出的Pod,当发现Pod小于副本数量会自动创建Pod,使其始终维

    2024年02月09日
    浏览(31)
  • 【云原生|Kubernetes】13-Deployment资源控制器详解

    kubernetes中有很多资源控制器,这些资源控制器我们只说一些重要且常用的。在介绍Deploymen之前,我们会逐个介绍这些控制器。 Pod控制器介绍 ​ Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无效

    2024年02月16日
    浏览(31)
  • Linux6.39 Kubernetes Pod控制器

    第三章 LINUX Kubernetes Pod控制器 一、Pod控制器及其功用 Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资源 二.pod控制器有多种类型 1.Replic

    2024年02月12日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包