1 前言
管理kubernentes集群時,總是需要登陸機器命令行查看,難免有時候顯得繁瑣。那么有沒有一種可視化的更方便管理kubernente的工具呢,這樣更方便的全局查看整個集群的各種資源。
目前用的比較多的是Kubernetes DashBoard和Rancher,其中Kubernentes-DashBoard是kubernentes官方提供的Web UI,Rancher是第三方開發的。當然也有很多公司會根據自己的實際需求,通過kubernentes提供的api接口開發適合自己的可視化管理界面。
用戶可以通過可視化界面對Kubernetes集群中部署的應用進行問題處理和管理,查看集群中應用的運行情況,同時創建或修改部署、任務、服務等Kubernetes的資源。能夠對部署的應用進行擴縮容,進行滾動更新、重啟Pod和部署新應用。本文來講一講Kubernentes DashBoard,當然web 管理界面雖然方便,但是命令行的使用技能任何時候都不能丟。
2 DashBoard部署
2.1 環境准備
查看kubernentes集群的版本
根據自己的機器選擇相應的版本,到官方的github倉庫上面可以看到每個版本都有對應的kubernentes集群對應能適配的版本.因為我的集群是1.18.10版本,所以dashboard選擇2.0.3版。
2.2 部署過程
2.2.1 下載dashboard的yaml文件
[root@master ~]# wget wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
2.2.2 修改dashboard的yaml文件
修改service部分,默認service是ClusterIP類型,這里改稱NodePort類型,是集群外部能否訪問。
kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: type: NodePort ports: - port: 443 targetPort: 8443 nodePort: 30002 selector: k8s-app: kubernetes-dashboard
應用yaml並查看創建的資源
[root@master ~]# kubectl apply -f recommended.yaml
此時web界面就可以打開了
創建登陸用戶
[root@master ~]# vim admin.yaml
--- apiVersion: v1 kind: ServiceAccount metadata: name: admin namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin namespace: kubernetes-dashboard
[root@master ~]# kubectl apply -f admin.yaml
查看登陸token
[root@master ~]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin | awk '{print $1}')|grep '^token'|awk '{print $2}'
此處查看到的token就是web頁面登陸的token。登陸進去以后就可以全局的觀察集群狀態
查看整個集群
查看node節點
查看pod資源
2.3 安裝資源監控Metrics Server
上面的頁面可以看到cpu和內存的使用率都沒有值,是因為沒有安裝metrics server
2.3.1 下載metric server的yaml文件
[root@master ~]# wget wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.1/components.yaml```
2.3.2 下載metric server鏡像
因為機器無法訪問google的鏡像倉庫,所以需要從dockerhub第三方倉庫下載
需要到所有的node節點執行
[root@node1 ~]# docker pull phperall/metrics-server:v0.4.1 [root@node1 ~]# docker tag phperall/metrics-server:v0.4.1 k8s.gcr.io/metrics-server/metrics-server:v0.4.1
2.3.3 修改yaml文件
修改metrics api啟動參數,防止證書錯誤
在啟動參數args處增加
- --kubelet-insecure-tls
[root@master ~]# kubectl apply -f components.yaml
可以使用kubectl top查看資源使用
2.3.4 集群資源狀態
此時再來查看集群,可以看到cpu和內存都有監控值了
查看node節點
查看pod資源
2.4 配置登陸config
將上文的token寫入到.kube/config文件中,格式token: $TOKEN
再次登陸web的時候,就不用每次輸入一長串的token了,可以選擇Kubeconfig登陸。采用.kube/config文件,類似ssh的密鑰一樣。
2.5 配置用戶名密碼登陸
有時候使用token登陸,很麻煩,這時我們可以開啟用戶名密碼登陸
2.5.1 開啟kube-apiserver密碼認證
創建用戶名密碼文件
[root@master ~]# echo 'admin,dev,10001,"system:authentication"' > /etc/kubernetes/pki/auth.csv
修改kube-apiserver的yaml文件
[root@master ~]# vim /etc/kubernetes/manifests/kube-apiserver.yaml 啟動參數添加 - --basic-auth-file=/etc/kubernetes/pki/auth.csv
2.5.2 配置用戶權限
上面已經創建了用戶dev,但是該用戶沒有查看集群資源的權限,我們需要給用戶配置權限。
此處我們給用戶配置只有查看namespace的權限
[root@master ~]# vim dev.yaml --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: annotations: rbac.authorization.kubernetes.io/autoupdate: "true" labels: kubernetes.io/bootstrapping: rbac-defaults rbac.authorization.k8s.io/aggregate-to-edit: "true" name: dev-readonly rules: - apiGroups: - "" resources: - namespaces verbs: - get - list - watch - apiGroups: - metrics.k8s.io resources: - pods verbs: - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: dev-readonly roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: dev-readonly subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: system:authentication [root@master ~]# kubectl apply -f dev.yaml
2.5.3 開啟dashboard密碼認證
修改dashboard密碼文件
[root@master ~]# vim recommended.yaml 啟動參數添加 - --authentication-mode=basic,token [root@master ~]# kubectl apply -f recommended.yaml
2.5.4 登陸dashboard
此時登陸web節目,可以發現多了一種認證方式。
2.5.5 注意事項
kubernetes從1.19版本開始已經棄用了basic-auth-file的方式:https://kubernetes.io/docs/setup/release/notes/
至此大功告成
# 參考文檔
https://github.com/kubernetes/dashboard