參考文章:
https://www.jianshu.com/p/60a1d6db9f12
https://www.jianshu.com/p/c6d560d12d50
一、前言
Dashboard 是基於網頁的 Kubernetes 用戶界面。您可以使用 Dashboard 將容器應用部署到 Kubernetes 集群中,也可以對容器應用排錯,還能管理集群資源。您可以使用 Dashboard 獲取運行在集群中的應用的概覽信息,也可以創建或者修改 Kubernetes 資源(如 Deployment,Job,DaemonSet 等等)。例如,您可以對 Deployment 實現彈性伸縮、發起滾動升級、重啟 Pod 或者使用向導創建新的應用。
在部署完kubernetes v1.17后,讓我們來部署一下dashboard,然后通過圖形化界面來對資源進行查看與管理。
二、安裝
環境信息
操作系統:CentOS Linux release 7.6.1810 (Core)
docker:19.03.5
kubernetes:v1.17.0
主機名和ip:
hostname | ip |
master01 |
192.168.1.230 |
node01 |
192.168.1.241 |
node02 |
192.168.1.242 |
部署GitHub上目前最新版本的dashboard v2.0.0-beta8
https://github.com/kubernetes/dashboard/releases
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
修改service通過NodePort方式訪問k8s dashboard:
由於默認的service類型是ClusterIP,我們是自建的kubernetes,無法自動分配ip給service,所以這里我們需要修改一下dashboard的service類型,指定為NodePort以方便我們訪問。
--- kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: type: NodePort #新加此行 ports: - port: 443 nodePort: 30001 #新加此行
targetPort: 8443 selector: k8s-app: kubernetes-dashboard
應用配置文件
kubectl apply -f recommended.yaml
之后指定namespace查看pod和service
通過節點ip以及service的端口30001訪問dashboard頁面
注意:在沒有設置證書的情況下,通過Chrome和ie內核是無法訪問這個頁面的,我們這里就先使用火狐來繼續實驗,后面補充通過更新證書來解決此問題。
火狐瀏覽器:
我們還需要創建一個dashboard用戶來登錄
創建一個yaml文件,內容如下
[root@master01 ~]# cat create-admin.yaml 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
應用配置文件創建用戶
獲取到用戶的token以用作登錄
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
登錄dashboard
成功登錄后的界面
三、使用dashboard
在學習完kubernetes的基礎后,再來看dashboard,就會對整體架構有更清晰的認識。
在Dashboard中,我們通過kubectl所做的操作大部分都可以可視化操作,比如我們可以對deployment做伸縮:
執行命令以及日志追蹤
還可以編輯資源的yaml文件,以及導入yaml文件創建 更新資源
補充:
1、解決Chrome、ie無法正常訪問dashboard問題
問題:通過Chrome和ie無法正常訪問dashboard
原因是默認證書是0001年1月簽發的已經過期
解決思路:生成有效證書替換之前的證書
生成證書
下面是生成 k8s dashboard 域名證書方法,任何一種都可以
- 通過
https://freessl.cn
網站,在線生成免費1年
的證書 - 通過
Let’s Encrypt
生成90天
免費證書 - 通過
Cert-Manager
服務來生成和管理證書
#我是在家目錄創建的目錄
mkdir certs
cd certs
#生成私鑰
openssl genrsa -out dashboard.key 2048
#生成csr證書簽名請求
openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=192.168.1.241'
#生成自簽名的ssl證書
openssl x509 -req -days 365 -in dashboard.csr -signkey dashboard.key -out dashboard.crt
重新創建dashboard
kubectl delete -f create-admin.yaml
kubectl delete -f recommended.yaml
手工創建namespace
kubectl create namespace kubernetes-dashboard
創建證書存放目錄
mkdir $HOME/certs
手工生成secret;后面會將recommend配置中關於certs部分注釋掉
kubectl create secret generic kubernetes-dashboard-certs --from-file=$HOME/certs -n kubernetes-dashboard
修改 deployment 配置,具體修改見下面配置
$ vim recommended.yaml # 把創建 kubernetes-dashboard-certs Secret 注釋掉,前面已通過命令創建 #apiVersion: v1 #kind: Secret #metadata: # labels: # k8s-app: kubernetes-dashboard # name: kubernetes-dashboard-certs # namespace: kubernetes-dashboard #type: Opaque # 添加ssl證書路徑,關閉自動更新證書,添加多長時間登出 containers: - args: #- --auto-generate-certificates - --tls-cert-file=/tls.crt - --tls-key-file=/tls.key - --token-ttl=3600
部署 k8s dashboard
kubectl apply -f recommended.yaml
再次通過Chrome或ie訪問,即可正常。
記得還需要重新創建用戶