Kubernetes 如何在GKE群集上启用DefaultStorageClass许可控制器?

Kubernetes 如何在GKE群集上启用DefaultStorageClass许可控制器?,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,有一些很好的方法,例如StorageObjectInUseProtection、PersistentVolumeClaimResize,它们将一些k8s最佳实践应用到您的应用程序中 集群 为了启用准入控制器,您必须具有对k8s api服务器的管理员访问权限,但在GKE上您没有 那么我们如何在GKE中启用这些准入控制器呢 注意:我看到过去提出的一些相关问题,但没有像和这样的答案。不可能修改已启用的准入控制器,因为这需要修改--启用准入插件API服务器配置选项,而这在GKE上是不可能的,目前也没有任

有一些很好的方法,例如StorageObjectInUseProtection、PersistentVolumeClaimResize,它们将一些k8s最佳实践应用到您的应用程序中 集群

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

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


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

不可能修改已启用的准入控制器,因为这需要修改
--启用准入插件
API服务器配置选项,而这在GKE上是不可能的,目前也没有任何替代方法来设定这一选项

现在,看一下提到的每个控制器:

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

  • StorageObjectInUseProtection-此准入控制器在GKE中启用,您可以观察到
    kubernetes.io/pv保护
    kubernetes.io/pvc保护终结器
    分别添加到PVs。PVC正在使用中,防止其删除

  • PersistentVolumeClaimResize-此准入控制器也在GKE中启用。您可以通过创建带有
    allowVolumeExpansion:false
    注释的存储类(注意标准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的ValidatingWebhookConfiguration或MutatingWebhookConfiguration通过webhook将K8s API连接到您的服务。除了从头开始实现这个功能外,还有许多项目可以提供帮助,OPA Gatekeeper和Metacontroller列出了一些示例