「ClusterRoleBinding” kubernetes-dashboard“ is invalid:roleRef:Invalid value” Web UIをデプロイするとき


9

ここで説明するようにKubernetes Web UIをデプロイしようとしています:https : //kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/

私のシステム構成は次のとおりです。

$ uname -a
Linux debian 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 GNU/Linux

$ /usr/bin/qemu-system-x86_64 --version
QEMU emulator version 3.1.0 (Debian 1:3.1+dfsg-8+deb10u3)
Copyright (c) 2003-2018 Fabrice Bellard and the QEMU Project developers

$ minikube version
minikube version: v1.5.2
commit: 792dbf92a1de583fcee76f8791cff12e0c9440ad-dirty

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.3", GitCommit:"b3cbbae08ec52a7fc73d334838e18d17e8512749", GitTreeState:"clean", BuildDate:"2019-11-13T11:23:11Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.2", GitCommit:"c97fe5036ef3df2967d086711e6c0c405941e14b", GitTreeState:"clean", BuildDate:"2019-10-15T19:09:08Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}

minukubeクラスターminikube startを起動した後、次の説明に従ってサービスアカウントとClusterRoleBindingを作成しました:https : //github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md

$ nano dashboard-adminuser.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
$ kubectl apply -f dashboard-adminuser.yaml
$ nano dashboard-adminuser.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
$ kubectl apply -f dashboard-adminuser.yaml

今私は実行します:

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta6/aio/deploy/recommended.yaml

または

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

次の出力を取得します。

namespace/kubernetes-dashboard configured
serviceaccount/kubernetes-dashboard configured
service/kubernetes-dashboard configured
secret/kubernetes-dashboard-certs configured
secret/kubernetes-dashboard-csrf configured
secret/kubernetes-dashboard-key-holder configured
configmap/kubernetes-dashboard-settings configured
role.rbac.authorization.k8s.io/kubernetes-dashboard configured
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard configured
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard configured
deployment.apps/kubernetes-dashboard configured
service/dashboard-metrics-scraper configured
deployment.apps/dashboard-metrics-scraper configured
The ClusterRoleBinding "kubernetes-dashboard" is invalid: roleRef: Invalid value: rbac.RoleRef{APIGroup:"rbac.authorization.k8s.io", Kind:"ClusterRole", Name:"kubernetes-dashboard"}: cannot change roleRef

何が起こったのか、それを修正する方法は?

回答:


1

問題はあなたがこのメモを見逃したことです:

注:ClusterRoleBindingリソースのapiVersionは、Kubernetesのバージョン間で異なる場合があります。

Kubernetes v1.8より前は、apiVersionはrbac.authorization.k8s.io/v1beta1でした。

これはこの問題を解決するはずです。

Edit1:

この問題は同じ問題について語っています。特にこのコメント。について話す

ロールバインディングは不変です

ここの原因は

dashboard-adminuser.yaml roleRefを設定します。

そして

後で適用するyamlファイルには、同じ名前空間のroleRefがあります。

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: kubernetes-dashboard
subjects:
  - kind: ServiceAccount
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard

私のkubernetesバージョンは1.16.2なので、を使用できますrbac.authorization.k8s.io/v1。私もチェックkubectl api-versions両方の私を示したrbac.authorization.k8s.io/v1し、rbac.authorization.k8s.io/v1beta1それはケースではありませんので、。
Skyblade

編集後、展開手順が記載されたダッシュボードプロジェクトのreadmeを見つけました:github.com/kubernetes/dashboard。公式のkubernetes.ioドキュメントとは少し異なります。エラーなしにWeb UIプロセスを開始できましたが、ログインできない別の問題があります。だから、私はあなたの答えを正しいものとして受け入れます。ありがとうございました!
Skyblade

10

「roleRefを変更できません」というエラーは、ClusterRoleBindingがすでに存在していることを示していました。

既存のClusterRoleBinding kubernetes-dashboardを削除してみてください

以下を実行して、既存のものを削除します。

kubectl delete clusterrolebinding kubernetes-dashboard

その後、再度インストールしてください。それで問題が解決したかどうかをお知らせください。


3
私は、このコマンドを実行しkubectl delete clusterrolebinding kubernetes-dashboardた後、 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yamlまだ同じエラーを取得します。
Skyblade

1
これが私にとっての解決策でした!
Jean-Paul

まだこのエラーが発生します。:私は、このマニフェストを使用raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc2/aio/...
モハマッド・アラビ

1

このエラーも発生しています。minikubeでダッシュボードを実行することで解決します。

minikube dashboard

出力:

🤔  Verifying dashboard health ...
🚀  Launching proxy ...
🤔  Verifying proxy health ...
🎉  Opening http://127.0.0.1:34653/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...

はい、動作しますが、私の目標は、minikubeの実装に依存しないガイドを使用して手動で設定することでした。
スカイブレード

0

そのまま再現。

1)作成された名前空間、ServiceAccount、およびClusterRolebinding

cat dashboard-adminuser.yaml 
---
apiVersion: v1
kind: Namespace
metadata:
  name: kubernetes-dashboard
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

2)それを適用する

kubectl apply -f dashboard-adminuser.yaml 
namespace/kubernetes-dashboard created
serviceaccount/admin-user created
clusterrolebinding.rbac.authorization.k8s.io/admin-user unchanged

3)ダッシュボードをインストールする

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta6/aio/deploy/recommended.yaml
namespace/kubernetes-dashboard unchanged
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created

-1

実行:

kubectl delete clusterrolebinding kubernetes-dashboard

...以前ではなく、apply -fコマンドの後で。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.