写点什么

K8S 准入控制器有哪些是默认的?

作者:baiyutang
  • 2022 年 5 月 14 日
  • 本文字数:1453 字

    阅读完需:约 5 分钟

K8S 准入控制器有哪些是默认的?

什么是准入控制插件?

准入控制器是一段代码,它会在请求通过认证和授权之后、对象被持久化之前拦截到达 API 服务器的请求。

准入控制器可以执行 “验证(Validating)” 和/或 “变更(Mutating)” 操作。 变更(mutating)控制器可以根据被其接受的请求修改相关对象;验证(validating)控制器则不行。

准入控制器限制创建、删除、修改对象或连接到代理的请求,不限制读取对象的请求。


为什么需要准入控制器?

Kubernetes 的许多高级功能都要求启用一个准入控制器,以便正确地支持该特性。 因此,没有正确配置准入控制器的 Kubernetes API 服务器是不完整的,它无法支持你期望的所有特性。


准入控制器的启用和关闭

Kubernetes API 服务器的 --enable-admission-plugins 和 --disable-admission-plugins 选项来分别启动和关闭相关。

各个准入控制器的作用可以参考这里


K8S 默认开启的准入控制器

  • NamespaceLifecycle:该准入控制器禁止在一个正在被终止的 Namespace 中创建新对象,并确保 使用不存在的 Namespace 的请求被拒绝。 该准入控制器还会禁止删除三个系统保留的名字空间,即 default、 kube-system 和 kube-public。

  • LimitRanger:该准入控制器会观察传入的请求,并确保它不会违反 Namespace 中 LimitRange 对象枚举的任何约束。 如果你在 Kubernetes 部署中使用了 LimitRange 对象,则必须使用此准入控制器来 执行这些约束。 LimitRanger 还可以用于将默认资源请求应用到没有指定任何内容的 Pod; 当前,默认的 LimitRanger 对 default 名字空间中的所有 Pod 都应用了 0.1 CPU 的需求。

  • ServiceAccount:此准入控制器实现了 ServiceAccount 的自动化。 如果你打算使用 Kubernetes 的 ServiceAccount 对象,我们强烈建议你使用这个准入控制器。

  • TaintNodesByCondition:该准入控制器为新创建的节点添加 NotReady 和 NoSchedule 污点。 这些污点能够避免一些竞态条件的发生,这类静态条件可能导致 Pod 在更新节点污点以准确 反映其所报告状况之前,就被调度到新节点上。

  • PodSecurity:此准入控制器负责在创建和修改 Pod 时根据请求的安全上下文和 Pod 安全标准 来确定是否可以执行请求。

  • Priority:优先级准入控制器使用 priorityClassName 字段并用整型值填充优先级。 如果找不到优先级,则拒绝 Pod。更多细节可以参考《Pod 优先级和抢占

  • DefaultTolerationSeconds:该准入控制器基于 k8s-apiserver 输入参数 default-not-ready-toleration-seconds 和 default-unreachable-toleration-seconds 为 Pod 设置默认的容忍度,以容忍 notready:NoExecute 和 unreachable:NoExecute 污点。

  • DefaultStorageClass:该准入控制器监测没有请求任何特定存储类的 PersistentVolumeClaim 对象的创建, 并自动向其添加默认存储类。 这样,没有任何特殊存储类需求的用户根本不需要关心它们,它们将获得默认存储类。

  • StorageObjectInUseProtection:将 kubernetes.io/pvc-protection 或 kubernetes.io/pv-protection finalizers 添加到新创建的持久化卷声明(PVC) 或持久化卷(PV)中。 如果用户尝试删除 PVC/PV,除非 PVC/PV 的保护控制器移除 finalizers,否则 PVC/PV 不会被删除。 有关更多详细信息,请参考 保护使用中的存储对象

  • PersistentVolumeClaimResize:该准入控制器检查传入的 PersistentVolumeClaim 调整大小请求,对其执行额外的验证操作。

  • RuntimeClass

  • CertificateApproval

  • CertificateSigning

  • CertificateSubjectRestriction

  • DefaultIngressClass

  • MutatingAdmissionWebhook

  • ValidatingAdmissionWebhook

  • ResourceQuota

发布于: 刚刚阅读数: 5
用户头像

baiyutang

关注

广州 2017.12.13 加入

Microservices | Golang | Cloud Nitive | “Smart work,Not hard”

评论

发布
暂无评论
K8S 准入控制器有哪些是默认的?_Docker_baiyutang_InfoQ写作社区