1. 程式人生 > 其它 >K8S--視覺化介面Kubernetes Dashboard(API Server方式)

K8S--視覺化介面Kubernetes Dashboard(API Server方式)

一、安裝Kubernetes Dashboard

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

      

2、訪問:https://192.168.124.17:6443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy

  這裡可能會出現以下訪問結果:

{
  "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來說,它是使用證書進行認證的,我們需要先建立一個證書:

    (1)首先找到kubectl命令的配置檔案,預設情況下為/etc/kubernetes/admin.conf,我這裡已經複製到了$HOME/.kube/config中。

    (2)然後我們使用client-certificate-dataclient-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,這位博主寫的非常的清楚。

------------------------------------------------------------------
-----------------------------------------------------------
---------------------------------------------
朦朧的夜 留筆~~