如何解决如何以只读模式访问 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 sudo chown -f -R digital ~/.kube
The new group will be available on the user's next login.
解决方法
在 Unix/Linux 上,我们可以设置适当的文件/目录访问
权限 - 只需 rx
,减少 shell 限制(如最大内存/打开
文件描述符),降低进程优先级(nice -19
)。我们是
为 K8S 寻找类似的解决方案
Kubernetes 中的这种解决方案是通过 RBAC(基于角色的访问控制)处理的。 RBAC 可防止未经授权的用户查看或修改集群状态。由于 API 服务器公开了 REST 接口,因此用户通过向服务器发送 HTTP 请求来执行操作。用户通过在请求中包含凭据(身份验证令牌、用户名和密码或客户端证书)进行身份验证。
对于 REST 客户端,您会获得 GET
、POST
、PUT
、DELETE
等。这些被发送到代表特定 REST API 资源(Pod、服务、部署等)。
RBAC auth 配置了两个组:
- 角色和集群角色 - 指定可以执行哪些动作/动词
- RoleBinding 和 ClusterRoleBindings - 将上述角色绑定到用户、组或服务帐户。
您可能已经发现 ClusterRole 正是您要找的那个。这将允许针对集群限制特定用户或组。
在下面的示例中,我们正在创建只能列出 pod 的 ClusterRole
。命名空间被省略,因为 ClusterRoles 没有命名。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: pod-viewer
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["list"]
此权限必须通过 ClusterRoleBinding
绑定:
apiVersion: rbac.authorization.k8s.io/v1
# This cluster role binding allows anyone in the "manager" group to list pods in any namespace.
kind: ClusterRoleBinding
metadata:
name: list-pods-global
subjects:
- kind: Group
name: manager # Name is case sensitive
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: pod-viewer
apiGroup: rbac.authorization.k8s.io
因为您自己没有足够的权限,所以您必须联系管理这些权限的适当人员为您创建拥有 ClusterRole: View
的用户。视图角色应已在集群 (kubectl get clusterrole view
) 中预定义
如果您想阅读更多内容,Kubernetes docs 很好地解释了它的整个授权概念。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。