版權聲明:歡迎轉載,請注明出處,謝謝。 https://blog.csdn.net/boling_cavalry/article/details/83715479
本文是《CentOS7環境部署kubenetes1.12版本五部曲》系列的第四篇,前面的實站已經搭建了kubernetes1.12叢集,操作都是在控制台用kubectl指令來完成的,今天咱們一起将WEB管理頁面部署上去;
前提
本次實戰需要通路外國網站,才能kubernetes相關的操作用于學習和實踐;
實戰
- 在master節點的控制台上,執行以下指令建立dashboard相關資源:
kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
複制
- 執行以下指令,檢視所有服務:
kubectl get services --all-namespaces
複制
控制台輸出服務相關資訊:
[root@localhost ~]# 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型的;
- 執行以下指令,建立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
複制
- 删除現有的dashboard服務:
kubectl delete service kubernetes-dashboard --namespace=kube-system
複制
- 用剛剛建立的yaml檔案建立新的dashboard服務:
kubectl create -f ~/dashboard-svc.yaml
複制
- 再次用kubectl get指令檢視服務,可見dashboard服務的類型已經變成了NodePort,映射的端口是32073:
[root@localhost ~]# 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
複制
- 想要通路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
複制
- 執行指令建立ServiceAccount和ClusterRoleBinding:
kubectl create -f ~/dashboard-svc-account.yaml
複制
- 找出secret,這個secret中有token,該token是登入dashboard時用到的:
kubectl -n kube-system get secret | grep kubernetes-dashboard-admin
複制
執行的結果如下圖所示,紅框中的kubernetes-dashboard-admin-token-wc5tf就是dashboard的secret:

- 檢視kubernetes-dashboard-admin-token-wc5tf的詳情,裡面有對應的token資訊:
kubectl describe -n kube-system secret/kubernetes-dashboard-admin-token-wc5tf \
|grep token:
複制
如下圖所示,token:右側的"eyJhbGciOiJSU…"這一長串字元串就是token,這是個永久生效的token,請儲存下來:
- 接下來需要知道dashboard對應的pod是部署在哪個node上的,執行指令:
kubectl get pods -n kube-system \
| grep kubernetes-dashboard-
複制
在控制台輸出如下:
[root@localhost ~]# kubectl get pods -n kube-system \
> | grep kubernetes-dashboard-
kubernetes-dashboard-77fd78f978-84krd 1/1 Running 0 54m
複制
可見pod的名字是kubernetes-dashboard-77fd78f978-84krd,接下來可以根據名字檢視pod的詳情;
- 執行以下指令,用來檢視名為"kubernetes-dashboard-77fd78f978-84krd"的pod的詳情:
kubectl describe -n kube-system pod/kubernetes-dashboard-77fd78f978-84krd
複制
輸出資訊很豐富,如下圖紅框所示,該pod位于node1節點:
- node1節點的IP是192.168.119.156,再加上dashboard的service映射的端口32073,是以在浏覽器上通路的dashboard位址為:
- 用Firefox通路上述位址,得到以下提示:
- 點選上圖中的"進階"按鈕,再點選"添加例外",會看到下圖中的彈出視窗:
- 在上圖的綠框中,将"/#!/login"這一段删除,再點選右側的"獲驗證書"按鈕,確定左側的"永久儲存此例外"被勾選,再點選下面的"确認安全例外"按鈕,并如下圖所示:
- 現在會出現dashboard的登入頁面,如下圖,選擇登入類型為"令牌",輸入前面儲存的token,再點選"登入"按鈕:
- 登入成功可以見到如下資訊:
關于Heapster
由于官方文檔中提到Heapster即将廢棄,是以本次實戰并未安裝Heapster,文檔位址:https://github.com/kubernetes/heapster/blob/master/docs/deprecation.md
至此,dashboard安裝已經完成,接下來的章節會在kubernetes叢集之外的一台普通CentOS7伺服器上安裝kubectl,用來操作目前kubernetes叢集;
五部曲全文連結
- 《CentOS7環境部署kubenetes1.12版本五部曲之一:标準化機器》;
- 《CentOS7環境部署kubenetes1.12版本五部曲之二:建立master節點》;
- 《CentOS7環境部署kubenetes1.12版本五部曲之三:node節點加入》;
- 《CentOS7環境部署kubenetes1.12版本五部曲之四:安裝dashboard》;
- 《CentOS7環境部署kubenetes1.12版本五部曲之五:安裝kubectl》;