1. 程式人生 > >CentOS7環境部署kubenetes1.12版本五部曲之四:安裝dashboard

CentOS7環境部署kubenetes1.12版本五部曲之四:安裝dashboard

本文是《CentOS7環境部署kubenetes1.12版本五部曲》系列的第四篇,前面的實站已經搭建了kubernetes1.12叢集,操作都是在控制檯用kubectl命令來完成的,今天咱們一起將WEB管理頁面部署上去;

前提

本次實戰需要科學上網,才能kubernetes相關的操作用於學習和實踐;

實戰

  1. 在master節點的控制檯上,執行以下命令建立dashboard相關資源:
kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
  1. 執行以下命令,檢視所有服務:
kubectl get services --all-namespaces

控制檯輸出服務相關資訊:

[[email protected] ~]# kubectl get services --all-namespaces
NAMESPACE     NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
default       kubernetes             ClusterIP   10.96.0.1        <
none> 443/TCP 6h25m default tomcat001 NodePort 10.109.30.238 <none> 8080:30006/TCP 80m kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 6h25m kube-system kubernetes-dashboard ClusterIP 10.102.251.175 <
none> 443/TCP 15m

可見dashboard服務的namespace是kube-system,但是該服務的型別是ClusterIP,不便於我們通過瀏覽器訪問,因此需要改成NodePort型的;

  1. 執行以下命令,建立dashboard服務的配置檔案:
cat <<EOF >  ~/dashboard-svc.yaml
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
EOF
  1. 刪除現有的dashboard服務:
kubectl delete service kubernetes-dashboard --namespace=kube-system
  1. 用剛剛建立的yaml檔案建立新的dashboard服務:
kubectl create -f ~/dashboard-svc.yaml
  1. 再次用kubectl get命令檢視服務,可見dashboard服務的型別已經變成了NodePort,對映的埠是32073
[[email protected] ~]# kubectl get services --all-namespaces
NAMESPACE     NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
default       kubernetes             ClusterIP   10.96.0.1        <none>        443/TCP          6h33m
default       tomcat001              NodePort    10.109.30.238    <none>        8080:30006/TCP   88m
kube-system   kube-dns               ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP    6h33m
kube-system   kubernetes-dashboard   NodePort    10.108.210.180   <none>        443:32073/TCP    13s
  1. 想要訪問dashboard服務,就要有訪問許可權,這裡需要先設定一個dashboard服務的許可權和繫結關係,執行以下命令建立對應的資原始檔dashboard-svc-account.yaml:
cat <<EOF >  ~/dashboard-svc-account.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard-admin
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard-admin
  labels:
    k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard-admin
  namespace: kube-system
EOF
  1. 執行命令建立ServiceAccount和ClusterRoleBinding:
kubectl create -f ~/dashboard-svc-account.yaml
  1. 找出secret,這個secret中有token,該token是登入dashboard時用到的:
kubectl -n kube-system get secret | grep kubernetes-dashboard-admin

執行的結果如下圖所示,紅框中的kubernetes-dashboard-admin-token-wc5tf就是dashboard的secret: 在這裡插入圖片描述

  1. 檢視kubernetes-dashboard-admin-token-wc5tf的詳情,裡面有對應的token資訊:
kubectl describe -n kube-system secret/kubernetes-dashboard-admin-token-wc5tf \
|grep token:

如下圖所示,token:右側的"eyJhbGciOiJSU…"這一長串字串就是token,這是個永久生效的token,請儲存下來: 在這裡插入圖片描述

  1. 接下來需要知道dashboard對應的pod是部署在哪個node上的,執行命令:
kubectl get pods -n kube-system \
| grep kubernetes-dashboard-

在控制檯輸出如下:

[[email protected] ~]# kubectl get pods -n kube-system \
> | grep kubernetes-dashboard-
kubernetes-dashboard-77fd78f978-84krd           1/1     Running   0          54m

可見pod的名字是kubernetes-dashboard-77fd78f978-84krd,接下來可以根據名字檢視pod的詳情;

  1. 執行以下命令,用來檢視名為"kubernetes-dashboard-77fd78f978-84krd"的pod的詳情:
kubectl describe -n kube-system pod/kubernetes-dashboard-77fd78f978-84krd

輸出資訊很豐富,如下圖紅框所示,該pod位於node1節點: 在這裡插入圖片描述

  1. node1節點的IP是192.168.119.156,再加上dashboard的service對映的埠32073,因此在瀏覽器上訪問的dashboard地址為:https://192.168.119.156:32073/#!/login

  2. 用Firefox訪問上述地址,得到以下提示: 在這裡插入圖片描述

  3. 點選上圖中的"高階"按鈕,再點選"新增例外",會看到下圖中的彈出視窗: 在這裡插入圖片描述

  4. 在上圖的綠框中,將"/#!/login"這一段刪除,再點選右側的"獲取證書"按鈕,確保左側的"永久儲存此例外"被勾選,再點選下面的"確認安全例外"按鈕,並如下圖所示: 在這裡插入圖片描述

  5. 現在會出現dashboard的登入頁面,如下圖,選擇登入型別為"令牌",輸入前面儲存的token,再點選"登入"按鈕: 在這裡插入圖片描述

  6. 登入成功可以見到如下資訊: 在這裡插入圖片描述

關於Heapster

至此,dashboard安裝已經完成,接下來的章節會在kubernetes叢集之外的一臺普通CentOS7伺服器上安裝kubectl,用來操作當前kubernetes叢集;

五部曲全文連結