Kubernetes 如何在只读模式下访问MicroK8?

Kubernetes 如何在只读模式下访问MicroK8?,kubernetes,microk8s,Kubernetes,Microk8s,我想使用µK8s读取K8s的状态,但我不想拥有修改任何内容的权限。如何做到这一点 以下内容将为我提供完全访问权限: microk8s.kubectl Insufficient permissions to access MicroK8s. You can either try again with sudo or add the user digital to the 'microk8s' group: sudo usermod -a -G microk8s digital su

我想使用µK8s读取K8s的状态,但我不想拥有修改任何内容的权限。如何做到这一点

以下内容将为我提供完全访问权限:

microk8s.kubectl  Insufficient permissions to access MicroK8s. You can either try again with sudo or add the user digital to the 'microk8s' group:

   sudo usermod -a -G microk8s digital    sudo chown -f -R digital ~/.kube

The new group will be available on the user's next login.
在Unix/Linux上,我们只需设置适当的文件/目录访问权限 权限-只需
rx
,减少外壳限制(如最大内存/打开 文件描述符),降低进程优先级(
nice-19
)。我们是 为K8S寻找类似的解决方案

Kubernetes中的此类解决方案通过(基于角色的访问控制)进行处理。RBAC防止未经授权的用户查看或修改群集状态。因为API服务器公开了一个REST接口,所以用户通过向服务器发送HTTP请求来执行操作。用户通过在请求中包含凭据(身份验证令牌、用户名和密码或客户端证书)来对自己进行身份验证

对于REST客户机,您可以获得
get
POST
PUT
DELETE
等。这些被发送到表示特定REST API资源(POD、服务、部署等)的特定URL路径

RBAC auth配置为两个组:

  • 角色和集群角色-指定可以执行哪些操作/谓词
  • RoleBinding和ClusterRoleBinding-将上述角色绑定到用户、组或服务帐户
因为你可能已经发现这就是你可能要寻找的。这将允许针对集群限制特定用户或组。 在下面的示例中,我们正在创建只能列出POD的
ClusterRole
。由于没有命名ClusterRoles,因此省略了名称空间

apiVersion:rbac.authorization.k8s.io/v1 种类:ClusterRole 元数据: 名称:pod查看器 规则: -apiGroups:[“”] 资源:[“豆荚”] 动词:[“列表”] 然后必须通过
ClusterRoleBinding
绑定此权限:

apiVersion:rbac.authorization.k8s.io/v1 #此群集角色绑定允许“管理器”组中的任何人在任何命名空间中列出POD。 种类:簇状卷边 元数据: 名称:列出pods global 学科: -种类:团体 name:manager#name区分大小写 apiGroup:rbac.authorization.k8s.io roleRef: 种类:ClusterRole 名称:pod查看器 apiGroup:rbac.authorization.k8s.io 由于您自己没有足够的权限,您必须联系管理这些权限的适当人员,以便为您创建具有
ClusterRole:View
权限的用户。视图角色应该已经在集群中预定义(
kubectl get clusterrole View


如果您希望阅读更多内容,可以很好地解释它的整个授权概念。

在限制集群角色/权限方面,更改配置文件的所有权不会给您带来太多好处。正如您在步骤2中所看到的,做您在问题中描述的事情是完全正常的。对于集群权限微调,您需要更改/config RBAC规则。最后,明确描述目标肯定会有助于为您提供一些解决方案。在我的公司,有一项政策规定程序员不能修改生产中的任何内容(IMHO sane)。当我们迁移到K8S时,我们希望为程序员启用只读访问,如检查状态/部署等,但所有更改都必须通过DEV-OPS团队进行。只有DEV-OPS团队拥有
sudo
和修改任何内容的权限。。。在Unix/Linux上,我们只需设置适当的文件/目录访问权限—只需
rx
,减少外壳限制(如最大内存/打开的文件描述符),降低进程优先级(
nice-19
)。我们正在为K8S寻找类似的解决方案。当然,有一种方式不允许终端访问生产系统,也不允许终端使用K8S的所有Gui/Web工具,但通过终端访问是团队领导开发人员检查一切是否正确的额外检查。特别是我们在低延迟(或延迟敏感)系统上工作,我们必须注意寻找K8S的节点。