主頁 > 作業系統 > 018.Kubernetes二進制集群插件metrics-dashboard

018.Kubernetes二進制集群插件metrics-dashboard

2020-10-04 18:57:32 作業系統

一 Metrics部署

1.1 Metrics介紹

Kubernetes的早期版本依靠Heapster來實作完整的性能資料采集和監控功能,Kubernetes從1.8版本開始,性能資料開始以Metrics API的方式提供標準化介面,并且從1.10版本開始將Heapster替換為Metrics Server,在Kubernetes新的監控體系中,Metrics Server用于提供核心指標(Core Metrics),包括Node、Pod的CPU和記憶體使用指標,

對其他自定義指標(Custom Metrics)的監控則由Prometheus等組件來完成,

1.2 開啟聚合層

有關聚合層知識參考:https://blog.csdn.net/liukuan73/article/details/81352637

本實驗前置步驟已開啟,

1.3 獲取部署檔案

  1 [root@master01 ~]# cd /opt/k8s/work/
  2 [root@master01 work]# mkdir metrics
  3 [root@master01 work]# cd metrics/
  4 [root@master01 metrics]# wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
  5 [root@master01 metrics]# vi components.yaml

  1 ……
  2 apiVersion: apps/v1
  3 kind: Deployment
  4 ……
  5 spec:
  6   replicas: 3							#根據集群規模調整副本數
  7 ……
  8     spec:
  9       hostNetwork: true
 10 ……
 11       - name: metrics-server
 12         image: k8s.gcr.io/metrics-server-amd64:v0.3.6
 13         imagePullPolicy: IfNotPresent
 14         args:
 15           - --cert-dir=/tmp
 16           - --secure-port=4443
 17           - --kubelet-insecure-tls
 18           - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP	#追加此args
 19 ……

提示:本步驟操作僅需要在master01節點操作,

1.4 正式部署

  1 [root@master01 metrics]# kubectl apply -f components.yaml
  2 [root@master01 metrics]# kubectl -n kube-system get pods -l k8s-app=metrics-server
  3 NAME                              READY   STATUS    RESTARTS   AGE
  4 metrics-server-7b97647899-gm7j2   1/1     Running   0          9s
  5 metrics-server-7b97647899-lqwwg   1/1     Running   0          9s
  6 metrics-server-7b97647899-mrd84   1/1     Running   0          9s

提示:本步驟操作僅需要在master01節點操作,

1.5 查看資源監控

  1 [root@master01 metrics]# kubectl top nodes
  2 [root@master01 metrics]# kubectl top pods --all-namespaces

clipboard

提示:Metrics Server提供的資料也可以供HPA控制器使用,以實作基于CPU使用率或記憶體使用值的Pod自動擴縮容功能,

二 Nginx ingress部署

為了便于訪問,本實驗建議采用域名訪問dashboard,域名由ingress進行暴露,因此建議提前部署ingress,具體部署參考《附020.Nginx-ingress部署及使用》,建議采用社區版,

三 dashboard部署

3.1 設定標簽

  1 [root@master01 ~]# cd /opt/k8s/work/dashboard
  2 [root@master01 dashboard]# kubectl label nodes master01 dashboard=yes
  3 [root@master01 dashboard]# kubectl label nodes master02 dashboard=yes
  4 [root@master01 dashboard]# kubectl label nodes master03 dashboard=yes

提示:本步驟操作僅需要在master01節點操作,

3.2 創建證書

本實驗已獲取免費一年的證書,免費證書獲取可參考:https://freessl.cn,

  1 [root@master01 ~]# mkdir -p /opt/k8s/work/dashboard/certs
  2 [root@master01 work]# cd /opt/k8s/work/dashboard/certs
  3 [root@master01 certs]# mv k8s.odocker.com tls.crt
  4 [root@master01 certs]# mv k8s.odocker.com tls.crt
  5 [root@master01 certs]# ll
  6 total 8.0K
  7 -rw-r--r-- 1 root root 1.9K Jun  8 11:46 tls.crt
  8 -rw-r--r-- 1 root root 1.7K Jun  8 11:46 tls.ke

提示:也可手動如下操作創建自簽證書:

  1 [root@master01 ~]# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/C=CN/ST=ZheJiang/L=HangZhou/O=Xianghy/OU=Xianghy/CN=k8s.odocker.com"

3.3 手動創建secret

  1 [root@master01 ~]# kubectl create ns kubernetes-dashboard	#v2版本dashboard獨立ns
  2 [root@master01 ~]# kubectl create secret generic kubernetes-dashboard-certs --from-file=/opt/k8s/work/dashboard/certs -n kubernetes-dashboard
  3 [root@master01 ~]# kubectl get secret kubernetes-dashboard-certs -n kubernetes-dashboard -o yaml		#查看新證書

提示:本步驟操作僅需要在master01節點操作,

3.4 下載yaml

  1 [root@master01 ~]# cd /opt/k8s/work/dashboard/
  2 [root@master01 dashboard]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.1/aio/deploy/recommended.yaml

提示:本步驟操作僅需要在master01節點操作,

3.5 修改yaml

  1 [root@master01 dashboard]# vi recommended.yaml
  1 ……
  2 kind: Service
  3 apiVersion: v1
  4 metadata:
  5   labels:
  6     k8s-app: kubernetes-dashboard
  7   name: kubernetes-dashboard
  8   namespace: kubernetes-dashboard
  9 spec:
 10   type: NodePort				        #新增
 11   ports:
 12     - port: 443
 13       targetPort: 8443
 14       nodePort: 30001				#新增
 15   selector:
 16     k8s-app: kubernetes-dashboard
 17 ---
 18 ……						        #如下全部注釋
 19 #apiVersion: v1
 20 #kind: Secret
 21 #metadata:
 22 #  labels:
 23 #    k8s-app: kubernetes-dashboard
 24 #  name: kubernetes-dashboard-certs
 25 #  namespace: kubernetes-dashboard
 26 #type: Opaque
 27 ……
 28 kind: Deployment
 29 ……
 30   replicas: 3					#適當調整為3副本
 31 ……
 32           imagePullPolicy: IfNotPresent		#修改鏡像下載策略
 33           ports:
 34             - containerPort: 8443
 35               protocol: TCP
 36           args:
 37             - --auto-generate-certificates
 38             - --namespace=kubernetes-dashboard
 39             - --tls-key-file=tls.key
 40             - --tls-cert-file=tls.crt
 41             - --token-ttl=3600			#追加如上args
 42 ……
 43       nodeSelector:
 44         "beta.kubernetes.io/os": linux
 45         "dashboard": "yes"			        #部署在master節點
 46 ……
 47 kind: Service
 48 apiVersion: v1
 49 metadata:
 50   labels:
 51     k8s-app: dashboard-metrics-scraper
 52   name: dashboard-metrics-scraper
 53   namespace: kubernetes-dashboard
 54 spec:
 55   type: NodePort				        #新增
 56   ports:
 57     - port: 8000
 58       targetPort: 8000
 59       nodePort: 30000				#新增
 60   selector:
 61     k8s-app: dashboard-metrics-scraper
 62 ……
 63    replicas: 3					#適當調整為3副本
 64 ……
 65       nodeSelector:
 66         "beta.kubernetes.io/os": linux
 67         "dashboard": "yes"			        #部署在master節點
 68 ……

提示:本步驟操作僅需要在master01節點操作,

3.6 正式部署

  1 [root@master01 dashboard]# kubectl apply -f recommended.yaml
  2 [root@master01 dashboard]# kubectl get deployment kubernetes-dashboard -n kubernetes-dashboard
  3 [root@master01 dashboard]# kubectl get services -n kubernetes-dashboard
  4 [root@master01 dashboard]# kubectl get pods -o wide -n kubernetes-dashboard

clipboard

提示:master01 NodePort 30001/TCP映射到 dashboard pod 443 埠,

提示:本步驟操作僅需要在master01節點操作,

3.7 創建管理員賬戶

提示:dashboard v2版本默認沒有創建具有管理員權限的賬戶,可如下操作創建,

  1 [root@master01 dashboard]# vi dashboard-admin.yaml
  1 ---
  2 apiVersion: v1
  3 kind: ServiceAccount
  4 metadata:
  5   name: admin-user
  6   namespace: kubernetes-dashboard
  7 
  8 ---
  9 apiVersion: rbac.authorization.k8s.io/v1
 10 kind: ClusterRoleBinding
 11 metadata:
 12   name: admin-user
 13 roleRef:
 14   apiGroup: rbac.authorization.k8s.io
 15   kind: ClusterRole
 16   name: cluster-admin
 17 subjects:
 18 - kind: ServiceAccount
 19   name: admin-user
 20   namespace: kubernetes-dashboard
  1 [root@master01 dashboard]# kubectl apply -f dashboard-admin.yaml

提示:本步驟操作僅需要在master01節點操作,

四 ingress暴露dashboard

4.1 創建ingress tls

  1 [root@master01 ~]# cd /opt/k8s/work/dashboard/certs
  2 [root@master01 certs]# kubectl -n kubernetes-dashboard create secret tls kubernetes-dashboard-tls --cert=tls.crt --key=tls.key
  3 [root@master01 certs]# kubectl -n kubernetes-dashboard describe secrets kubernetes-dashboard-tls

clipboard

提示:本步驟操作僅需要在master01節點操作,

4.2 創建ingress策略

  1 [root@master01 ~]# cd /opt/k8s/work/dashboard/
  2 [root@master01 dashboard]# vi dashboard-ingress.yaml

  1 apiVersion: networking.k8s.io/v1beta1
  2 kind: Ingress
  3 metadata:
  4   name: kubernetes-dashboard-ingress
  5   namespace: kubernetes-dashboard
  6   annotations:
  7     kubernetes.io/ingress.class: "nginx"
  8     nginx.ingress.kubernetes.io/use-regex: "true"
  9     nginx.ingress.kubernetes.io/ssl-passthrough: "true"
 10     nginx.ingress.kubernetes.io/rewrite-target: /
 11     nginx.ingress.kubernetes.io/ssl-redirect: "true"
 12     #nginx.ingress.kubernetes.io/secure-backends: "true"
 13     nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
 14     nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
 15     nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
 16     nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
 17     nginx.ingress.kubernetes.io/configuration-snippet: |
 18       proxy_ssl_session_reuse off;
 19 spec:
 20   rules:
 21   - host: k8s.odocker.com
 22     http:
 23       paths:
 24       - path: /
 25         backend:
 26           serviceName: kubernetes-dashboard
 27           servicePort: 443
 28   tls:
 29   - hosts:
 30     - k8s.odocker.com
 31     secretName: kubernetes-dashboard-tls
  1 [root@master01 dashboard]# kubectl apply -f dashboard-ingress.yaml
  2 [root@master01 dashboard]# kubectl -n kubernetes-dashboard get ingress

clipboard

提示:本步驟操作僅需要在master01節點操作,

五 訪問Dashboard

5.1 匯入證書

將k8s.odocker.com匯入瀏覽器,并設定為信任,匯入操作略,

5.2 創建kubeconfig檔案

使用token相對復雜,可將token添加至kubeconfig檔案中,使用KubeConfig檔案訪問dashboard,

  1 [root@master01 dashboard]# ADMIN_SECRET=$(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
  2 [root@master01 dashboard]# DASHBOARD_LOGIN_TOKEN=$(kubectl describe secret -n kubernetes-dashboard ${ADMIN_SECRET} | grep -E '^token' | awk '{print $2}')
  3 
  4 [root@master01 dashboard]# kubectl config set-cluster kubernetes \
  5   --certificate-authority=/etc/kubernetes/cert/ca.pem \
  6   --embed-certs=true \
  7   --server=172.24.8.100:16443 \
  8   --kubeconfig=local-binkek8s-dashboard-admin.kubeconfig	# 設定集群引數
  9 [root@master01 dashboard]# kubectl config set-credentials dashboard_user \
 10   --token=${DASHBOARD_LOGIN_TOKEN} \
 11   --kubeconfig=local-binkek8s-dashboard-admin.kubeconfig	# 設定客戶端認證引數,使用上面創建的 Token
 12 [root@master01 dashboard]# kubectl config set-context default \
 13   --cluster=kubernetes \
 14   --user=dashboard_user \
 15   --kubeconfig=local-binkek8s-dashboard-admin.kubeconfig	# 設定背景關系引數
 16 [root@master01 dashboard]# kubectl config use-context default --kubeconfig=local-binkek8s-dashboard-admin.kubeconfig				# 設定默認背景關系

提示:本步驟操作僅需要在master01節點操作,

將local-binkek8s-dashboard-admin.kubeconfig檔案匯入,以便于瀏覽器使用該檔案登錄,

5.3 測驗訪問Dashboard

本實驗采用ingress所暴露的域名:https://k8s.odocker.com 方式訪問,

使用local-hakek8s-dashboard-admin.kubeconfig檔案訪問:

clipboard

提示:

更多dashboard訪問方式及認證可參考《附004.Kubernetes Dashboard簡介及使用》,

dashboard登錄整個流程可參考:https://www.cnadn.net/post/2613.html

clipboard

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/155271.html

標籤:Linux

上一篇:"echo 0 /proc/sys/kernel/hung_task_timeout_secs" disable this message

下一篇:打開Autodock tool出現SyntaxError: 'import *' not allowed with 'from .'

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more