k8s羣集的三種Web-UI界面部署

1、部署dashboard的Web-UI界面

一、下載yaml文件

//github搜索dashboard找到該項目node

//下載yaml文件
[root@docker-k8s01 ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
//編輯yaml文件
[root@docker-k8s01 ~]# vim recommended.yaml 
//跳轉到40行左右,修改其對應的service,類型配置爲Nodeport
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort    //添加類型爲NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 31010      //映射到宿主機的端口爲31010
  selector:
    k8s-app: kubernetes-dashboard
//執行yaml文件
[root@docker-k8s01 ~]# kubectl apply -f recommended.yaml 
//查看Pod是否運行
[root@docker-k8s01 ~]# kubectl get pod -n kubernetes-dashboard 
//查看其詳細信息
[root@docker-k8s01 ~]# kubectl describe pod -n kubernetes-dashboard dashboard-metrics-scraper-76679bc5b9-sbcvw 
//確保該yaml文件提供的pod都正常運行
[root@docker-k8s01 ~]# kubectl get svc -n kubernetes-dashboard 
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.103.65.117   <none>        8000/TCP        3m3s
kubernetes-dashboard        NodePort    10.110.154.42   <none>        443:31010/TCP   3m3s

二、訪問測試

//這裏使用的dashboard版本較高,相較於以前的版本訪問必須使用火狐瀏覽器,這裏不須要。git

訪問https://192.168.171.151:31010(訪問集羣內的任意節點IP均可以)
k8s羣集的三種Web-UI界面部署github

k8s羣集的三種Web-UI界面部署

//建立dashboard的管理用戶
[root@docker-k8s01 ~]# kubectl create serviceaccount dashboard-admin -n kube-system
//綁定用戶爲集羣的管理員
[root@docker-k8s01 ~]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
//獲取剛剛建立的用戶Token
[root@docker-k8s01 ~]# kubectl get secrets -n kube-system | grep dashboard-admin
dashboard-admin-token-zbdqm                      kubernetes.io/service-account-token   3      63s
[root@docker-k8s01 ~]# kubectl describe secrets -n kube-system dashboard-admin-token-zbdqm 
//注意:上面的最後一段取決於上面查看到的用戶的secrets名字。
Name:         dashboard-admin-token-zbdqm
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: e9716e34-581a-4c30-b601-0a2a254d4a26

Type:  kubernetes.io/service-account-token

Data
====
namespace:  11 bytes
token:        //將token字段後面的值複製下來,以下圖

k8s羣集的三種Web-UI界面部署

將Token值粘貼到下面
k8s羣集的三種Web-UI界面部署
//至此,就能夠在web界面進行監控羣集節點的信息,及建立資源對象web

注:通常不會在這上面進行建立資源對象docker

k8s羣集的三種Web-UI界面部署
方法二json

//查看剛纔建立的token
[root@master ~]# kubectl get secrets -n kube-system | grep dashboard
dashboard-admin-token-22n2v                      kubernetes.io/service-account-token   3      11m
//查看token的詳細信息,會獲取token
[root@master ~]# kubectl describe secrets -n kube-system dashboard-admin-token-22n2v
//將token的信息生成一個變量
[root@master ~]#  DASH_TOKEN=$(kubectl get secrets -n kube-system dashboard-admin-token-22n2v -o jsonpath={.data.token} | base64 -d)
//將k8s集羣的配置信息寫入到一個文件中,文件可自定義
[root@master ~]# kubectl config set-cluster kubernets --server=192.168.10.52:6443 --kubeconfig=/root/.dashboard-admin.conf
Cluster "kubernets" set.
//將token的信息也寫入到文件中(同一個文件)
[root@master ~]#  kubectl config set-credentials dashboard-admin --token=${DASH_TOKEN} --kubeconfig=/root/.dashboard-admin.conf
User "dashboard-admin" set.
//用戶信息也寫入文件中(同一個文件)
[root@master ~]#  kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/.dashboard-admin.conf
Context "dashboard-admin@kubernetes" created.
//將上下文的配置信息也寫入文件中(同一個文件)
[root@master ~]# kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/root/.dashboard-admin.conf
Switched to context "dashboard-admin@kubernetes".
//最後將配置信息導入到客戶端本地
[root@master ~]# sz /root/.dashboard-admin.conf

//將文件導出後,仍是登陸到剛剛輸入Token的界面,選擇kubeconfig,而後將剛纔導出的文件上傳至此點擊登陸便可。vim

本人較懶,這裏我就不配圖了,見諒。api

2、部署weave-scope監控k8s羣集

一、下載yaml文件

//github上搜索「scope」瀏覽器

k8s羣集的三種Web-UI界面部署
//下拉頁面,點擊kubernetessession

k8s羣集的三種Web-UI界面部署

//進入到新頁面後再次下拉

k8s羣集的三種Web-UI界面部署

//將得到的連接下載
[root@docker-k8s01 ~]# wget https://cloud.weave.works/k8s/scope.yaml
//修改yaml文件
[root@docker-k8s01 ~]# vim scope.yaml 
//跳轉到大概197行左右,修改其service的端口類型
spec:
      type: NodePort    //類型爲NodePort
      ports:
        - name: app
          port: 80
          protocol: TCP
          targetPort: 4040
          nodePort: 30123    //配置映射到宿主機的端口
[root@docker-k8s01 ~]# kubectl apply -f scope.yaml 
//查看容器的運行狀況
[root@docker-k8s01 ~]# kubectl get pod -o wide -n weave 
NAME                                        READY   STATUS    RESTARTS   AGE    IP                NODE           NOMINATED NODE   READINESS GATES
weave-scope-agent-9vj2w                     1/1     Running   0          119s   192.168.171.151   docker-k8s01   <none>           <none>
weave-scope-agent-h4gt6                     1/1     Running   0          119s   192.168.171.152   docker-k8s03   <none>           <none>
weave-scope-agent-lqzbq                     1/1     Running   0          119s   192.168.171.150   docker-k8s02   <none>           <none>
weave-scope-app-b965dccb7-ph6zg             1/1     Running   0          119s   10.244.1.3        docker-k8s02   <none>           <none>
weave-scope-cluster-agent-6598584d8-h8b9q   1/1     Running   0          119s   10.244.2.3        docker-k8s03   <none>           <none>
//DaemonSet資源對象:weave-scope-agent(代理):負責收集節點的信息;
//deployment資源對象:weave-scope-app(應用):從agent獲取數據,經過web UI展現並與用戶交互;
//DaemonSet資源對象的特性和deployment相比,就是DaemonSet資源對象會在每一個節點上都運行且只能運行一個pod。
//因爲每一個節點都須要監控,因此用到了DaemonSet這種資源對象

二、訪問測試

//訪問羣集的映射端口30123

k8s羣集的三種Web-UI界面部署

//scope的web界面中,能夠查看不少的東西,pod、node節點等詳細信息,包括打開容器的終端,查看其日誌信息等等......

3、部署Prometheus服務

Prometheus各組件的做用:

  • MertricServer:是k8s集羣資源使用狀況的聚合器,收集數據給K8s集羣內使用,如:kubectl,hpa,scheduler
  • PrometheusOperator:是一個系統檢測和警報工具箱,用來存儲監控數據;
  • NodeExporter:用於各node的關鍵度量指標狀態數據;
  • kubeStateMetrics:收集k8s集羣內資源對象數據,指定告警規則;
  • Prometheus:採用pull方式收集apiserver,scheduler,controller-manager,kubelet組件數據,經過http協議傳輸;
  • Grafana:是可視化數據統計和監控平臺。

一、下載prometheus所需文件

//github上搜索prometheus,獲取到git下載連接

//安裝git命令
[root@docker-k8s01 ~]# yum -y install git
//建立目錄(可忽略)
[root@docker-k8s01 ~]# mkdir prometheus
[root@docker-k8s01 ~]# cd prometheus/
//克隆github庫
[root@docker-k8s01 prometheus]# git clone https://github.com/imirsh/kube-prometheus.git
//進入到克隆目錄
[root@docker-k8s01 prometheus]# cd kube-prometheus/manifests/

二、修改各個組件Service的yaml文件

//修改grafana的yaml文件
[root@docker-k8s01 manifests]# cat grafana-service.yaml 

apiVersion: v1
kind: Service
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  type: NodePort    //改成NodePort類型
  ports:
  - name: http
    port: 3000
    targetPort: http
    nodePort: 30333    //映射端口爲30333
  selector:
    app: grafana
//修改prometheus的yaml文件
[root@docker-k8s01 manifests]# cat prometheus-service.yaml 

apiVersion: v1
kind: Service
metadata:
  labels:
    prometheus: k8s
  name: prometheus-k8s
  namespace: monitoring
spec:
  type: NodePort    //類型爲NodePort
  ports:
  - name: web
    port: 9090
    targetPort: web
    nodePort: 30444    //映射端口爲30444
  selector:
    app: prometheus
    prometheus: k8s
  sessionAffinity: ClientIP
//修改alertmanager的yaml文件
[root@docker-k8s01 manifests]# cat alertmanager-service.yaml 

apiVersion: v1
kind: Service
metadata:
  labels:
    alertmanager: main
  name: alertmanager-main
  namespace: monitoring
spec:
  type: NodePort       //類型爲NodePort
  ports:
  - name: web
    port: 9093
    targetPort: web
    nodePort: 30555    //映射端口爲30555
  selector:
    alertmanager: main
    app: alertmanager
  sessionAffinity: ClientIP

三、執行yaml文件

//肯定當前路徑
[root@docker-k8s01 manifests]# pwd
/root/prometheus/kube-prometheus/manifests
//執行setup目錄下的全部yaml文件,記住是全部!
[root@docker-k8s01 manifests]# kubectl apply -f setup/
//建議多執行幾回,由於目錄下的yaml文件太多,可能執行的時候可能會落下一兩個沒有執行
[root@docker-k8s01 manifests]# cd ..      //返回上級目錄
[root@docker-k8s01 kube-prometheus]# pwd
/root/prometheus/kube-prometheus
//執行該目錄下的全部yaml
[root@docker-k8s01 kube-prometheus]# kubectl apply -f manifests/
//確保全部pod都正常運行
[root@docker-k8s01 kube-prometheus]# kubectl get pod -n monitoring -w

當執行如下yaml文件時,每一個節點會在互聯網上下載不少鏡像,爲了防止下載鏡像的時間過長,能夠先將鏡像下載到本地,而後導入至各個節點,而後在執行yaml文件,將會省些時間。

四、客戶端訪問羣集中任意節點的IP+30100端口,便可看到如下界面(默認用戶名和密碼都是admin)

k8s羣集的三種Web-UI界面部署

k8s羣集的三種Web-UI界面部署

//添加模板

k8s羣集的三種Web-UI界面部署

k8s羣集的三種Web-UI界面部署

//依次點擊「import」進行導入下面三個模板

k8s羣集的三種Web-UI界面部署
k8s羣集的三種Web-UI界面部署
固然,也能夠到grafana網站尋找合適的模板進行下載,這裏我就不詳細介紹怎麼添加模板了。

相關文章
相關標籤/搜索