【问题标题】:How to make Kubernetes read-only如何使 Kubernetes 只读
【发布时间】:2019-12-22 03:54:29
【问题描述】:

有没有办法让 Kubernetes 成为只读的?我想暂时禁止对我的 K8s 集群进行更改,但继续允许所有 get 操作。然后重新打开。

【问题讨论】:

  • 您需要为整个集群还是只为部分用户这样做?
  • 我想为整个集群做这个。
  • 如果副本集的 pod 崩溃或节点宕机,集群是否仍应做出反应?
  • pod 崩溃和重新安排应该仍然通过。我的目的是捕获所有 K8s 对象,并防止任何人在我获取对象时对其进行更新。

标签: docker kubernetes yaml microservices readonly


【解决方案1】:

据我所知,要做到这一点并不容易。

据我了解,您使用的是多租户 Kubernetes 集群 - 多个用户正在使用它并且可以执行操作。在这种情况下,我假设只有一个人是集群管理员。作为管理员,您希望阻止其他人进行任何写入操作(但不是您自己),并在一段时间后重新打开写入访问权限。

所以,我能想到的最好方法是,假设您在集群中启用了 RBAC,您可以找出哪些 Role/RoleBinding/ClusterRole/ClusterRoleBindings 正在为您的用户授予权限修改集群上的资源。然后,您可以编写一个脚本来导出这些资源,将它们从集群中删除,然后创建仅提供查看访问权限的新资源。

当您想重新打开写访问权限时,您可以删除您创建的仅供查看的资源,然后重新应用以前的资源 - 将所有内容放回原处。

编写此脚本并非易事。您需要通过 RBAC docs 很好地了解它的工作原理。

【讨论】:

    猜你喜欢
    • 2019-12-05
    • 1970-01-01
    • 2018-08-07
    • 2019-09-01
    • 2017-12-19
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多