意義
在Kubernetes Dashboard 中可以查看集羣中應用的運行狀態,也能夠創建和修改各種 Kubernetes 資源,比如 Deployment、Job、DaemonSet 等。用戶可以 Scale Up/Down Deployment、執行 Rolling Update、重啓某個 Pod 或者通過嚮導部署新的應用。Dashboard 能顯示集羣中各種資源的狀態以及日誌信息。
可以說,Kubernetes Dashboard 提供了 kubectl 的絕大部分功能,大家可以根據情況進行選擇。
但對於我們來說,我們可以通過配置dashboard瞭解一些K8S基本命令,熟悉K8S基本操作。所以這一節的重點便是通過配置dashboard熟悉某些K8S命令。(以下操作均在k8s-master中執行)
一、安裝dashboard
1.1、下載yaml文件到本地
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
ps:dashboard版本有很多,您可以在github搜索dashboard自己選擇適合自己的版本,在此我選擇的是V1.10.1
1.2、修改yaml文件
由於國內無法從谷歌倉庫k8s.gcr.io下載鏡像,這裏需要使用其他鏡像倉庫拉取。我們只需在kubernetes-dashboard.yaml中修改鏡像地址:
vim kubernetes-dashboard.yaml
1、將k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 修改爲 mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
2、修改Dashboard Service 爲NodePort類型:
拖到文件最底部,添加type: NodePort nodePort: 30001 在添加時請注意空格。如下:
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30001
selector:
k8s-app: kubernetes-dashboard
1.3、部署
執行以下命令:
kubectl create -f kubernetes-dashboard.yaml
(此命令是加載部署該yaml文件 其中的create參數也可以替換爲apply)
部署完成後輸入 :
kubectl get pods --all-namespaces
此命令查看節點是否正常運行,如果是RUNNING則代表部署成功
輸入:
kubectl get svc --all-namespaces
此命令可查看dashboard外部端口,其中30001就是我們dashboard綁定的端口。
若出現了其他狀況,則可以輸入delete命令重新部署:
kubectl delete -f kubernetes-dashboard.yaml
1.4、添加ssl證書(可略,但不添加證書只能通過火狐等瀏覽器訪問,谷歌不行)
以下命令請一行一行復制執行
mkdir key && cd key
openssl genrsa -out dashboard.key 2048
openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=192.168.238.10'
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
kubectl delete secret kubernetes-dashboard-certs -n kube-system
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kube-system #新的證書
kubectl delete pod kubernetes-dashboard-746dfd476-b2r5f -n kube-system #重啓服務
其中192.168.238.10爲master節點IP ,您需要替換成您自己的masterIP,當然由於dashboard一般是裝在node節點上,所以您也可以將IP換爲裝有dashboard儀表盤的node節點上。
查看dashboard被k8s分配到了哪一臺機器上:
kubectl get pods --all-namespaces -o wide
1.5、訪問
1.請在瀏覽器中輸入https://192.168.238.10
ps(在輸入網址時需要手動添加https://,不然會報錯,其中192.168.238.10爲masterIP,可替換成裝有dashboard的nodeIP)
2.若出現安全限制則點擊高級---接受風險繼續
3.若出現儀表板如下圖片則代表成功:
二、創建管理員進行令牌認證
若不創建管理員即使在用令牌進入的情況下,依然會有警告提醒錯誤,所以爲了眼角舒服,我們首先創建管理員進行認證。
1. vim k8s-admin.yaml 寫入
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: kubernetes-dashboard
name: admin
namespace: kube-system
---
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: kube-system
2. 輸入:
kubectl create -f k8s-admin.yaml
3.查看mountable secrets
輸入:
kubectl describe serviceaccount admin -n kube-system
保存mountable secrets對應的字符串
4.利用mountable secrets查看token
輸入:
kubectl describe secret <mountable secrets> -n kube-system
例如:
kubectl describe secret admin-token-pm94h -n kube-system
其中admin-token-pm94h爲<mountable secrets>的值。
執行上述命令後,將返回token的值,我們可以將此token點擊web上的令牌登錄儀表板,如圖:
5..登錄儀表板
複製此token點擊web上的令牌登錄儀表板,如圖則代表部署成功:
三、基礎命令
kubectl是Kubernetes集羣的命令行工具,通過kubectl能夠對集羣本身進行管理,並能夠在集羣上進行容器化應用的安裝部署。運行kubectl命令的語法如下所示:
kubectl [command] [TYPE] [NAME] [flags]
comand:指定要對資源執行的操作,例如create、get、describe和delete
TYPE:指定資源類型,資源類型是大小學敏感的,開發者能夠以單數、複數和縮略的形式。例如:
$ kubectl get pod pod1 -n kube-system
$ kubectl get pods pod1 -n kube-system
$ kubectl get po pod1 -n kube-system
NAME:指定資源的名稱,名稱也大小寫敏感的。如果省略名稱,則會顯示所有的資源,例如:
$ kubectl get pods --all -namespaces
flags:指定可選的參cccc數。例如,可以使用-s或者–server參數指定Kubernetes API server的地址和端口。
另外,可以通過kubectl help命令獲取更多的信息。
ps:我們可以看見kubectl在執行命令時,[command] [TYPE] [NAME] [flags]都是必填參數,
如果獲取所有則需加上參數,比如: kubectl get [TYPE] --all -namespaces
若單獨獲取則也需加上參數,比如::kubectl get [TYPE] [name ] -n kube-system
四、常用命令
1.查看pods
kubectl get pods --all-namespaces
2.查看svc
kubectl get svc --all-namespaces
3.創建/刪除
kubectl delete/create pod -f xxx.yaml
4.查看dashboard被k8s分配到了哪一臺機器上
kubectl get pods --all-namespaces -o wide
5.查看管理員密鑰
kubectl describe serviceaccount admin -n kube-system
6.查看管理員token
kubectl describe secret admin-token-pm94h -n kube-system
7.查看集羣狀態
kubectl cluster-info
8.查看組件狀態
kubectl get cs
~~~~未完待續
到此爲止dashboard配置完成,我們通過配置熟悉了K8S的一些基本操作命令,也搭建好了今後會經常使用的儀表板。下一節,我們將學習通過yaml創建pod對象,並啓動nginx服務感興趣的朋友,可以繼續更進,在此小編祝大家生活愉快。有技術交流的朋友請加微信:laughing_jk。
~~您身邊喜歡綠色的朋友
帥吉帥哥(Spring)