当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud库伯内特斯:什么是集群读取器权限?

邵兴怀
2023-03-14

根据Spring Cloud Kubernetes文档,为了在RBAC发现服务/pods,启用了Kubernetes发行版:

您需要确保运行spring-cloud-kubernetes的pod能够访问Kubernetes API。对于您分配给部署/pod的任何服务帐户,您需要确保它具有正确的角色。例如,根据您所在的项目,您可以将< code >群集阅读器权限添加到您的默认服务帐户。

为了发现服务/pod,什么是< code >集群阅读器权限?

我收到的错误是:

io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: https://x.x.x.x/api/v1/namespaces/jx-staging/services. 
Message: Forbidden!Configured service account doesn't have access. 
Service account may have been revoked. services is forbidden: 
User "system:serviceaccount:jx-staging:default" cannot list services in the namespace "jx-staging"

共有2个答案

东郭俊楠
2023-03-14

库伯内特斯通常将角色分为两种类型:

  • 角色:这特定于授予它们的名称空间。
  • ClusterRole:适用于整个集群,这意味着它适用于所有名称空间

因此,Spring Cloud Kubernetes文档的意思是,为了能够在所有名称空间中正确地读取发现服务/pod,将与应用程序关联的ServiceAccount应该有一个<code>ClusterRole,<code>服务

Kubernetes文档的这一部分(也包含了很好的例子)是全面了解Kubernetes RBAC的必读书。

桑宇
2023-03-14

读取< code >endpoint和< code >服务似乎是Spring Cloud Kubernetes发现pod和服务的最低要求。

示例将权限添加到default命名空间中的default服务号。

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cluster-read-role
rules:
- apiGroups:
  - ""
  resources:
  - endpoints
  - pods
  - services
  - configmaps
  verbs:
  - get
  - list
  - watch

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: cluster-read-rolebinding
subjects:
- kind: ServiceAccount
  name: default
  namespace: default
roleRef:
  kind: ClusterRole
  name: cluster-read-role
  apiGroup: rbac.authorization.k8s.io
 类似资料:
  • 我假设没有愚蠢的问题,所以这里有一个我找不到直接答案的问题。 现在的情况 我目前有一个运行1.15的Kubernetes集群。AKS上的x,通过Terraform部署和管理。AKS最近宣布Azure将在AKS上停用Kubernetes的1.15版本,我需要将集群升级到1.16或更高版本。现在,据我所知,直接在Azure中升级集群不会对集群的内容产生任何影响,即节点、豆荚、秘密和当前在那里的所有其他

  • 我是Kubernetes的新手,开始阅读文档。通常使用“endpoint”一词,但文档中缺乏明确的定义。 Kubernetes的“终点”是什么?它位于哪里? 我可以想象“endpoint”是单个“节点”的某种接入点,但这只是猜测。

  • 我正在尝试让cadence在kubernetes集群上运行。然而,我注意到Cadence服务器初始化中有一个bug,它阻止Cassandra脚本正确初始化模式。https://github.com/uber/cadence/issues/1713:所以我想我会手动完成这一步。我执行了以下步骤- < li >在docker compose上从https://raw . githubuserconte

  • 我一直在努力让DNS插件在CentOS 7.2集群上工作。我使用以下说明安装了群集:http://severalnines.com/blog/installing-kubernetes-cluster-minions-centos7-manage-pods-services 在此配置中,主服务器正在运行:etcd、库贝-调度器、库贝-apiserver和库贝-控制器-管理器。这些节点正在运行:do

  • 我正在尝试配置一个2节点库伯内特斯集群。首先,我试图在CentOS虚拟机上配置集群的主节点。我已经使用“kubeadm init--apiserver-广告地址=172.16.100.6--pod-network-cidr=10.244.0.0/16”初始化了集群,并将法兰绒网络部署到集群中。但是当我执行“kubectl获取节点”时,我得到以下输出---- 下面是“kubectl get pods