【问题标题】:How to enable DefaultStorageClass admission controllers on a GKE cluster?如何在 GKE 集群上启用 DefaultStorageClass 准入控制器?
【发布时间】:2020-08-19 08:50:26
【问题描述】:

有一些很棒的admission controllers,例如DefaultStorageClass、StorageObjectInUseProtection、PersistentVolumeClaimResize,它们可以为您提供一些 k8s 最佳实践 集群。

为了启用准入控制器,您必须拥有对 k8s api-server 的管理员访问权限,但在 GKE 上您没有。

那么我们如何在 GKE 中启用这些准入控制器呢?

注意:我看到过去提出的相关问题很少,但没有像 question3question4 这样的答案。

【问题讨论】:

    标签: kubernetes google-kubernetes-engine


    【解决方案1】:

    无法修改已启用的准入控制器,因为这需要修改 --enable-admission-plugins API 服务器配置选项,而这在 GKE 上是不可能的,目前也没有其他方法可以设置此选项。

    现在,看看提到的每个单独的控制器:

    • DefaultStorageClass - 此准入控制器已在 GKE 中启用。您可以检查标准预先创建的存储类是否具有storageclass.kubernetes.io/is-default-class: "true" 注释。为了默认使用不同的 SC,请从标准存储类中删除此注释,并将其添加到您选择的 SC。

    • StorageObjectInUseProtection - 此准入控制器在 GKE 中启用,您可以观察到 kubernetes.io/pv-protectionkubernetes.io/pvc-protectionfinalizers 分别添加到 PV 中。 PVC 正在使用中,防止它们被删除。

    • PersistentVolumeClaimResize - 此准入控制器也在 GKE 中启用。您可以通过使用allowVolumeExpansion: false 注释1 创建一个存储类来验证这一点(注意标准SC 确实允许扩展),创建一个PVC 并尝试增加它的大小。您将收到如下错误:

      error: persistentvolumeclaims "my-pvc" could not be patched: persistentvolumeclaims "my-pvc" is forbidden: only dynamically provisioned pvc can be resized and the storageclass that provisions the pvc must support resize
      

    最后,如果您想要启用 GKE 上实际上未启用的控制器,您需要重新实现并将其作为独立服务部署到您的集群中,并使用 K8s 的 ValidatingWebhookConfigurationMutatingWebhookConfiguration 通过 webhook 2 连接 K8s API 你的服务。除了从头开始实施之外,还有许多项目可以提供帮助,OPA Gatekeeper 3 和 Metacontroller 4 列出了一些示例。

    【讨论】:

      猜你喜欢
      • 2020-03-24
      • 2023-01-11
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 2021-04-13
      • 2022-01-04
      • 1970-01-01
      • 2023-01-26
      相关资源
      最近更新 更多