Tập tin ClusterRoleBinding Kubernetes-dashboard Không hợp lệ: vai trò: Giá trị không hợp lệ khi triển khai giao diện người dùng web


9

Tôi đang cố gắng triển khai giao diện người dùng web Kubernetes như được mô tả ở đây: https://kubernetes.io/docs/t task / access-application -cluster / web-ui-dashboard /

Cấu hình hệ thống của tôi như sau:

$ 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"}

Sau khi bắt đầu cụm minukube, minikube starttôi đã tạo Tài khoản dịch vụ và ClusterRoleBinding như được mô tả ở đây: 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

Bây giờ tôi thực thi:

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

hoặc là

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

và nhận đầu ra sau:

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

Điều gì đã xảy ra và làm thế nào để khắc phục nó?

Câu trả lời:


1

vấn đề là bạn đã bỏ lỡ ghi chú này:

LƯU Ý: apiVersion của tài nguyên ClusterRoleBinding có thể khác nhau giữa các phiên bản Kubernetes.

Trước Kubernetes v1.8, apiVersion là rbac. Mượtization.k8s.io / v1beta1.

Điều này sẽ giải quyết vấn đề này.

Chỉnh sửa1:

này vấn đề nói về cùng một vấn đề. cụ thể bình luận này . cuộc đàm phán về

Vai trò ràng buộc là bất biến

Nguyên nhân ở đây là

dashboard-adminuser.yaml đặt vai tròRef.

tập tin yaml bạn đang áp dụng sau này có vai trò trong cùng một không gian tên.

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

Phiên bản kubernetes của tôi là 1.16.2, vì vậy tôi có thể sử dụng rbac.authorization.k8s.io/v1. Tôi cũng đã kiểm tra kubectl api-versionscho thấy cả hai rbac.authorization.k8s.io/v1rbac.authorization.k8s.io/v1beta1vì vậy không phải vậy.
Skyblade

Sau khi chỉnh sửa của bạn, tôi tìm thấy readme dự án bảng điều khiển với các hướng dẫn triển khai: github.com/kubernetes/dashboard . Chúng hơi khác với các tài liệu kubernetes.io chính thức. Tôi đã có thể bắt đầu quá trình giao diện người dùng web mà không gặp lỗi, mặc dù tôi có một vấn đề khác ngăn tôi đăng nhập vào nó. Vì vậy, tôi chấp nhận câu trả lời của bạn là chính xác. Cảm ơn bạn!
Skyblade

10

Lỗi "không thể thay đổi vai trò" đã đề cập đến thực tế là ClusterRoleBinding đã tồn tại.

Hãy thử xóa kubernetes-dashboard hiện có của ClusterRoleBinding

Chạy bên dưới để xóa hiện có:

kubectl delete clusterrolebinding kubernetes-dashboard

Sau đó thử cài đặt lại. Hãy cho chúng tôi biết nếu điều đó giải quyết vấn đề.


3
Tôi đã chạy lệnh này kubectl delete clusterrolebinding kubernetes-dashboard, sau đó kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yamlvà vẫn nhận được cùng một lỗi.
Skyblade

1
Đây là giải pháp cho tôi!
Jean-Paul

Tôi vẫn nhận được lỗi này. Tôi sử dụng bảng kê khai này: raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc2/aio/ Kẻ
Mohammad Alavi

1

Tôi cũng đang gặp lỗi này, được giải quyết bằng cách chạy bảng điều khiển thông qua minikube:

minikube dashboard

Đầu ra:

🤔  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...

Vâng, nó hoạt động, nhưng mục tiêu của tôi là thiết lập thủ công bằng cách sử dụng hướng dẫn không dựa vào việc triển khai của minikube.
Skyblade

0

Chỉ cần sao chép.

1) đã tạo không gian tên, ServiceAccount và 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) áp dụng nó

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

3) Cài đặt bảng điều khiển

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

Chạy:

kubectl xóa clusterrolebinding kubernetes-dashboard

... SAU lệnh áp dụng -f, không phải trước đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.