如何使用kubectl

时间:2018-07-09 05:56:17

标签: kubernetes kubectl rbac

我正在尝试在据称已禁用RBAC的kubernetes集群上安装helm软件包。 我收到一个提到clusterroles.rbac.authorization.k8s.io的权限错误,如果RBAC已启用,这是我期望的。

是否可以通过kubectl检查RBAC是否真的被禁用?

我尝试过的事情:

  • kubectl describe nodes --all-namespaces | grep -i rbac:什么都没发生
  • kubectl describe rbac --all-namespaces | grep -i rbac:什么都没发生
  • kubectl config get-contexts | grep -i rbac:什么都没发生
  • k get clusterroles上显示“找不到资源”,而不是错误消息。那是否意味着启用了RBAC
  • kuebctl describe cluster不是问题

我知道,也许这是x-y problem,因为我正在安装的头盔包可能期望启用RBAC。但是,我仍然想知道如何检查它是否已启用。

5 个答案:

答案 0 :(得分:34)

您可以通过执行命令kubectl api-versions进行检查;如果启用了RBAC,则应该看到API版本.rbac.authorization.k8s.io/v1

在AKS中,最好的方法是在resources.azure.com处检查群集的资源详细信息。 如果可以发现"enableRBAC": true,则说明您的群集已启用RBAC。 请注意,现有的未启用RBAC的AKS群集当前无法更新以供RBAC使用。 (感谢@DennisAmeling的澄清)

答案 1 :(得分:9)

我希望有更好的方法,但是我使用的是:

$ kubectl cluster-info dump | grep authorization-mode

如果可以执行它,则应该在此处列出RBAC,或者如果没有执行此权限,那么很可能启用了RBAC。

答案 2 :(得分:6)

对于Azure(AKS),这有点棘手。尽管kubectl api-versions命令确实返回了rbac.authorization.k8s.io/v1,但kubectl get clusterroles命令没有返回默认的system:前缀角色。

检查AKS的最佳方法是检查群集的资源详细信息,例如在resources.azure.com。如果为"enableRBAC": true,则您的群集已启用RBAC。现有的未启用RBAC的AKS群集cannot currently be updated供RBAC使用。因此,如果要在AKS上启用RBAC,则必须创建一个新集群。

答案 3 :(得分:3)

选项1: 如果您有权访问主节点,请登录并检查以下内容

ps -aef | grep -i apiserver
The options should have --authorization-mode=RBAC otherwise RBAC not enabled.

选项2:

kubectl get clusterroles | grep -i rbac

希望这会有所帮助

Rgds 苏达喀尔

答案 4 :(得分:0)

对于Azure(AKS),我认为Azure CLI可以很好地工作。

az resource show -g <resource group name> -n <cluster name> --resource-type Microsoft.ContainerService/ManagedClusters --query properties.enableRBAC

与使用resources.azure.com基本相同,但是我发现使用Azure CLI更快