在dashboard中,雖然能夠作到建立、刪除、修改資源等操做,但一般狀況下,咱們會把它當作健康k8s集羣的軟件。node
做爲Kubernetes的Web用戶界面,用戶能夠經過Dashboard在Kubernetes集羣中部署容器化的應用,對應用進行問題處理和管理,並對集羣自己進行管理。經過Dashboard,用戶能夠查看集羣中應用的運行狀況,同時也可以基於Dashboard建立或修改部署、任務、服務等Kubernetes的資源。經過部署嚮導,用戶可以對部署進行擴縮容,進行滾動更新、重啓Pod和部署新應用。固然,經過Dashboard也可以查看Kubernetes資源的狀態。git
在默認狀況下,Dashboard顯示默認(default)命名空間下的對象,也能夠經過命名空間選擇器選擇其餘的命名空間。在Dashboard用戶界面中可以顯示集羣大部分的對象類型。github
集羣管理視圖用於對節點、命名空間、持久化存儲卷、角色和存儲類進行管理。 節點視圖顯示CPU和內存的使用狀況,以及此節點的建立時間和運行狀態。 命名空間視圖會顯示集羣中存在哪些命名空間,以及這些命名空間的運行狀態。角色視圖以列表形式展現集羣中存在哪些角色,這些角色的類型和所在的命名空間。 持久化存儲卷以列表的方式進行展現,能夠看到每個持久化存儲卷的存儲總量、訪問模式、使用狀態等信息;管理員也可以刪除和編輯持久化存儲卷的YAML文件。web
工做負載視圖顯示部署、副本集、有狀態副本集等全部的工做負載類型。在此視圖中,各類工做負載會按照各自的類型進行組織。 工做負載的詳細信息視圖可以顯示應用的詳細信息和狀態信息,以及對象之間的關係。docker
服務發現視圖可以將集羣內容的服務暴露給集羣外的應用,集羣內外的應用能夠經過暴露的服務調用應用,外部的應用使用外部的端點,內部的應用使用內部端點。json
存儲視圖顯示被應用用來存儲數據的持久化存儲卷申明資源。vim
配置視圖顯示集羣中應用運行時所使用配置信息,Kubernetes提供了配置字典(ConfigMaps)和祕密字典(Secrets),經過配置視圖,可以編輯和管理配置對象,以及查看隱藏的敏感信息。api
Pod列表和詳細信息頁面提供了查看日誌視圖的連接,經過日誌視圖不但可以查看Pod的日誌信息,也可以查看Pod容器的日誌信息。經過Dashboard可以根據嚮導建立和部署一個容器化的應用,固然也能夠經過手工的方式輸入指定應用信息,或者經過上傳YAML和JSON文件來建立和不受應用。瀏覽器
[root@master https]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc5/aio/deploy/recommended.yaml [root@master https]# docker pull kubernetesui/dashboard:v2.0.0-rc5
[root@master https]#vim recommended.yaml --- kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: type: NodePort #添加40 ports: - port: 443 targetPort: 8443 selector: k8s-app: kubernetes-dashboard
[root@master https]# kubectl apply -f recommended.yaml
[root@master https]# kubectl get svc -n kubernetes-dashboard
PS:若是是使用的舊版本的dashboard, 使用Google瀏覽器登陸,多是不成功的,須要換成其餘的瀏覽器,好比:火狐。安全
[root@master https]# kubectl create serviceaccount dashboard-admin -n kube-system
[root@master https]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
[root@master https]# kubectl get secrets -n kube-system | grep dashboard-admin //先獲得Token的名稱
[root@master https]# kubectl describe secrets -n kube-system dashboard-admin-token-62bh9 //查看上述獲得的secret資源的詳細信息,會獲得token
建立一個資源
查看是否建立成功
[root@master https]# kubectl get secrets -n kube-system | grep dashboard-admin //先獲得Token的名稱
[root@master https]# kubectl describe secrets -n kube-system dashboard-admin-token-62bh9 //查看上述獲得的secret資源的詳細信息,會獲得token
設置一個環境變量表明獲取的token
[root@master https]# DASH_TOKEN=$(kubectl get secrets -n kube-system dashboard-admin-token-62bh9 -o jsonpath={.data.token} | base64 -d)
將k8s集羣的配置信息寫入kubeconfig配置文件中。
[root@master https]# kubectl config set-cluster kubernetes --server=192.168.1.21:6443 --kubeconfig=/root/.dashboard-admin.conf
[root@master https]# kubectl config set-credentials dashboard-admin --token=$DASH_TOKEN --kubeconfig=/root/.dashboard-admin.conf
[root@master https]# kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/.dashboard-admin.conf
[root@master https]# kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/root/.dashboard-admin.conf
[root@master https]# sz /root/.dashboard-admin.conf //導出到本身習慣的位置便可
Weave Scope 是 Docker 和 Kubernetes 可視化監控工具。Scope 提供了至上而下的集羣基礎設施和應用的完整視圖,用戶能夠輕鬆對分佈式的容器化應用進行實時監控和問題診斷。
[root@master https]# wget https://cloud.weave.works/k8s/scope.yaml
[root@master ~]# vim scope.yaml #編輯yaml文件 #跳轉至213行,修改其service的端口類型 spec: type: NodePort #修改類型爲NodePort ports: - name: app port: 80 protocol: TCP targetPort: 4040
[root@master https]# kubectl apply -f scope.yaml
[root@master https]# kubectl get pod -o wide -n weave
[root@master https]# kubectl get svc -n weave
#DaemonSet資源對象:weave-scope-agent(代理):負責收集節點的信息;
#deployment資源對象:weave-scope-app(應用):從agent獲取數據,經過web UI展現並與用戶交互;
#DaemonSet資源對象的特性和deployment相比,就是DaemonSet資源對象會在每一個節點上都運行且只能運行一個pod。
#因爲每一個節點都須要監控,因此用到了DaemonSet這種資源對象
在scope的web界面中,能夠查看不少的東西,pod、node節點等詳細信息,包括打開容器的終端,查看其日誌信息等等
• weave scope能夠以其簡潔的可視化爲咱們更生動形象的展示出service/controller/pod等資源對象的管理及簡單的web ui操做,方便故障排除及時定位
• weave scope做爲web ui目前缺乏登陸驗證,能夠利用其餘方式裏面web服務器的驗證作安全管控。
PS:在這裏部署的prometheus,並非Prometheus官網提供的,而是使用的coreos提供的prometheus項目。
Prometheus 相比於其餘傳統監控工具主要有如下幾個特色:
複製連接
[root@master promethes]# yum -y install git //下載git命令 [root@master promethes]# git clone https://github.com/coreos/kube-prometheus.git //克隆github上的項目
[root@master promethes]# cd kube-prometheus/manifests/ //進入kube-prometheus的manifests目錄 [root@master manifests]# vim grafana-service.yaml #修改grafana的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: 31001 #映射到宿主機31001端口 selector: app: grafana
[root@master manifests]# vim prometheus-service.yaml #修改prometheus的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: 31002 #映射到宿主機31002端口 selector: app: prometheus prometheus: k8s sessionAffinity: ClientIP
[root@master manifests]# vim alertmanager-service.yaml #修改alertmanager的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: 31003 #映射到宿主機31003端口 selector: alertmanager: main app: alertmanager sessionAffinity: ClientIP
[root@master manifests]# cd setup/ //進入setup/目錄 [root@master manifests]# kubectl apply -f setup/ //運行setup目錄中全部的yaml文件
當執行如下yaml文件時,每一個節點會在互聯網上下載不少鏡像,爲了防止下載鏡像的時間過長,能夠先將我提供的鏡像下載到本地,而後導入至各個節點,而後在執行下面的yaml文件,將會省些時間。(若是下載我提供的鏡像,建議寫個導入鏡像的腳本進行導入操做,避免手動導入,形成錯誤)
[root@master manifests]# cd .. //返回上一級目錄(kube-prometheus) [root@master kube-prometheus]# kubectl apply -f manifests/ //運行kube-prometheus目錄中全部的yaml文件
[root@master ~]# kubectl get pod -n monitoring
客戶端訪問羣集中任意節點的IP+30100端口,便可看到如下界面(默認用戶名和密碼都是admin)
根據提示更改密碼:
依次點擊「import」進行導入下面三個模板:
如下可看到監控狀態
從grafana的官網搜索https://grafana.com/
複製如下這個模板的id
如今能夠看到監控畫面了