開頭說幾句
- 上一篇文章我們說了官方提供的最簡便的安裝方式Kubeadm,相信小夥伴們也利用這一方式搭建起了自己的第一個K8s叢集。
- 今天我們來說一說如何搭建官方的Dashboard來管理我們的K8s叢集。
- 那後面我們還會有很多關于K8s使用方面的小知識小技巧,感興趣的小夥伴可以關注我,文章末尾我會列出我們将要談到的話題哦,記得看完!
- 先來個上篇文章的連結吧!!!有些軟體包在上篇文章中有說到
為什麼要使用 Kubernetes Dashboard?
- 看到這裡有小夥伴就要問了,我們為什麼要用Dashboard?哈哈哈,無他,唯好用爾!
- linux實在是有太多太多的指令了,小編的腦子根本記不住,每次都要查太費勁了,有官方提供的管理平台當然要快快用起來了。
Kubernetes Dashboard 可以做什麼
K8s叢集管理
K8s Deployments管理
基本上一目了然了吧,那我就不說了,說起來挺費勁的!
正式開始
Kubernetes Dashboard 安裝
- 首先呢我們先擷取一下官方提供的recommended.yaml配置檔案,不過咱這網絡一般是下載下傳不下來,回複我關鍵字k8s會提供相關所有的軟體包給大家哦!!
- 我們先打開recommended.yaml,找到下面這一段(紅色框内)
recommended.yaml
- 我們需要在這一段内呢添加兩對鍵值,修改後這段應該是這樣的:
kind: ServiceapiVersion: v1metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboardspec: type: NodePort ports: - port: 443 targetPort: 8443 nodePort: 30443 selector: k8s-app: kubernetes-dashboard
- 我簡單的解釋一下,我們這裡添加了type: NodePort,這個呢意思是service對外開放端口,使用者可以通過node、master節點的IP來通路該服務。那後面nodePort: 30443大家應該也就明白了是對外開放的端口号。
- 修改好之後我們就可以開始安裝了,上一篇文章中我們同樣為大家提供的Kubernetes Dashboard相關的鏡像,不然我們這邊還不太好下載下傳。
$ kubectl create -f recommended.yaml
- 指令執行完畢後我們就可以檢視一下對應的service、pod的狀态了
$ kubectl get pod,svc -n kubernetes-dashboard
建立 Kubernetes Dashboard 超級管理使用者
- 預設Dashboard為最小RBAC權限,我們需要添加叢集管理者的權限以友善我們從Dashboard頁面操作叢集資源。
- 首先我們需要建立adminuser.yaml
apiVersion: v1kind: ServiceAccountmetadata: name: admin-user namespace: kubernetes-dashboard---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: admin-userroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-adminsubjects:- kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard
- 然後就是執行如下指令在叢集中建立使用者:
$ kubectl create -f adminuser.yaml
- 接下來我們就可以通路了頁面了,通路位址是:https://{YourNodeIp}:30443
- 你會發現他會提示我們證書不對,這是因為我們上面的recommended.yaml中為我們建立了一個空的證書。有的浏覽器甚至無法強行跳轉,這就涉及到我們下面的證書配置了!
- 頁面需要我們提供一個token進行登入,最長的那一段就是:
$ kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
為 Kubernetes Dashboard 配置正确的域名證書
K8s token 登入
- 這裡我們要配置的是正确的域名證書哦,就像我的截圖一樣。那沒有域名的小夥伴可以使用自簽名證書哦,或者使用hosts配置也可以!
- 首先我們需要準備好我們的證書以及key檔案,這裡要注意了,我們的證書命名一定是dashboard.crt,我們的key命名一定是dashboard.key。通過我的實踐這是真理,具體為什麼咱也不知道,咱也不敢問(可能官方文檔裡有寫咱沒看見)。
- 接下來我們要檢視一下目前是否存在證書(這裡算是多此一舉)
$ kubectl get secret -n kubernetes-dashboard|grep kubernetes-dashboard-certs
- 那我們需要先删除這個證書配置,這樣我們才能添加自己的證書
$ kubectl delete secret kubernetes-dashboard-certs -n kubernetes-dashboard
- 删除之後呢我們,我們就要建立自己的證書了,千萬注意步驟2中的命名問題!!!這是個巨坑
$ kubectl create secret generic kubernetes-dashboard-certs --from-file="dashboard.crt" --from-file="dashboard.key" -n kubernetes-dashboard
- 證書建立好了,我們還需要重新開機pod才能生效,這裡我們直接删除pod,deployment監測到pod被删除後會自動建立一個新的
# 先檢視kubernetes-dashboard的pod名稱$ kubectl get pod -n kubernetes-dashboard# 删除該pod$ kubectl delete pod kubernetes-dashboard-7f99b75bf4-sbmdp -n kubernetes-dashboard
結束了!!!
- 至此我們的證書也搞定了,不過需要重新擷取一下token,清理一下頁面緩存。
- 這樣就可以正常的使用和登入了。
最後說兩句
- 這章節就到這裡啦,希望大家有所收獲。
- 後面我們還有一些關于K8s應用方面的小知識、小技巧:
- K8s 簡單應用(pod,deployment)
- 應用互相通路、對外開放通路(service,nodePort)
- (nfs)磁盤挂載
- 配置檔案(config-map)
- 使用K8s搭建自己的docker鏡像倉庫并且配備web-ui
- 有興趣的小夥伴可以關注我哦!!!
- 謝謝大家!!!