標簽:forbidden 下載到本地 creat 綁定 gre ada 訪問 meta board
1、下載yaml文件
查看K8S版本:kubectl version,我的版本是1.15,那么就可以使用v2.0.0-beta4版本的Kubernetes-dashboard。版本的對應關系:https://github.com/kubernetes/dashboard/releases
以下命令在Master節點執行
#如果需要進行修改,需要先下載到本地 wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml #如果不需要修改的話直接使用,我這里就不需要修改 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
查看pod:kubectl get pod --all-namespaces
這里可能會出現以下訪問結果:
{ "kind": "Status", "apiVersion": "v1", "metadata": { }, "status": "Failure", "message": "services \"https:kubernetes-dashboard:\" is forbidden: User \"system:anonymous\" cannot get services/proxy in the namespace \"kube-system\"", "reason": "Forbidden", "details": { "name": "https:kubernetes-dashboard:", "kind": "services" }, "code": 403 }
這是因為最新版的k8s默認啟用了RBAC,并為未認證用戶賦予了一個默認的身份:anonymous
。對于API Server來說,它是使用證書進行認證的,我們需要先創建一個證書:
?。?)首先找到kubectl
命令的配置文件,默認情況下為/etc/kubernetes/admin.conf
,我這里已經復制到了$HOME/.kube/config
中。
?。?)然后我們使用client-certificate-data
和client-key-data
生成一個p12文件,可使用下列命令:
# 生成client-certificate-data grep ‘client-certificate-data‘ ~/.kube/config | head -n 1 | awk ‘{print $2}‘ | base64 -d >> kubecfg.crt # 生成client-key-data grep ‘client-key-data‘ ~/.kube/config | head -n 1 | awk ‘{print $2}‘ | base64 -d >> kubecfg.key # 生成p12 openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client"
3、然后將生成的p12文件添加到瀏覽器,然后重新打開瀏覽器,再次訪問。
1、創建admin-user賬號,并放在kube-system
名稱空間下
apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kube-system
執行創建賬號命令
kubectl create -f admin-user.yaml
2、綁定角色
默認情況下,kubeadm創建集群時已經創建了admin角色,我們直接綁定即可:
# admin-user-role-binding.yaml apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kube-system
執行綁定命令:
kubectl create -f admin-user-role-binding.yaml
3、獲取Token:
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk ‘{print $1}‘)
4、使用token登錄Kubernetes Dashboard
說明:
目前訪問Dashboard有四種方式:NodePort、API Server、kubectl proxy、Ingress,這里只演示了API Server一種,其他的可以參照https://www.cnblogs.com/RainingNight/p/deploying-k8s-dashboard-ui.html,這位博主寫的非常的清楚。
K8S--可視化界面Kubernetes Dashboard(API Server方式)
標簽:forbidden 下載到本地 creat 綁定 gre ada 訪問 meta board
原文地址:https://www.cnblogs.com/liconglong/p/15057820.html