基於kubernetes v1.17部署dashboard:v2.0-beta8


參考文章:

https://www.jianshu.com/p/60a1d6db9f12

https://www.jianshu.com/p/c6d560d12d50

一、前言

  Dashboard 是基於網頁的 Kubernetes 用戶界面。您可以使用 Dashboard 將容器應用部署到 Kubernetes 集群中,也可以對容器應用排錯,還能管理集群資源。您可以使用 Dashboard 獲取運行在集群中的應用的概覽信息,也可以創建或者修改 Kubernetes 資源(如 Deployment,Job,DaemonSet 等等)。例如,您可以對 Deployment 實現彈性伸縮、發起滾動升級、重啟 Pod 或者使用向導創建新的應用。

在部署完kubernetes v1.17后,讓我們來部署一下dashboard,然后通過圖形化界面來對資源進行查看與管理。

 

二、安裝

環境信息

操作系統:CentOS Linux release 7.6.1810 (Core)

docker:19.03.5

kubernetes:v1.17.0

主機名和ip:

hostname ip
master01
192.168.1.230
node01
192.168.1.241
node02
192.168.1.242

部署GitHub上目前最新版本的dashboard v2.0.0-beta8

https://github.com/kubernetes/dashboard/releases

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml

修改service通過NodePort方式訪問k8s dashboard:

  由於默認的service類型是ClusterIP,我們是自建的kubernetes,無法自動分配ip給service,所以這里我們需要修改一下dashboard的service類型,指定為NodePort以方便我們訪問。

編輯我們下載的yaml文件  recommended.yaml
---

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort #新加此行
  ports:
    - port: 443
      nodePort: 30001 #新加此行
targetPort:
8443 selector: k8s-app: kubernetes-dashboard

 應用配置文件

kubectl apply -f recommended.yaml

 之后指定namespace查看pod和service

 

 通過節點ip以及service的端口30001訪問dashboard頁面

  注意:在沒有設置證書的情況下,通過Chrome和ie內核是無法訪問這個頁面的,我們這里就先使用火狐來繼續實驗,后面補充通過更新證書來解決此問題。

火狐瀏覽器:

 

 

 我們還需要創建一個dashboard用戶來登錄

創建一個yaml文件,內容如下

[root@master01 ~]# cat create-admin.yaml 
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

---

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

應用配置文件創建用戶

獲取到用戶的token以用作登錄

kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

登錄dashboard

  成功登錄后的界面

三、使用dashboard

在學習完kubernetes的基礎后,再來看dashboard,就會對整體架構有更清晰的認識。

在Dashboard中,我們通過kubectl所做的操作大部分都可以可視化操作,比如我們可以對deployment做伸縮:

 

執行命令以及日志追蹤

 還可以編輯資源的yaml文件,以及導入yaml文件創建 更新資源

 

 

 

 


 

 補充:

1、解決Chrome、ie無法正常訪問dashboard問題

問題:通過Chrome和ie無法正常訪問dashboard

 

 原因是默認證書是0001年1月簽發的已經過期

 解決思路:生成有效證書替換之前的證書

生成證書

下面是生成 k8s dashboard 域名證書方法,任何一種都可以

  • 通過 https://freessl.cn 網站,在線生成免費1年的證書
  • 通過 Let’s Encrypt 生成 90天 免費證書
  • 通過 Cert-Manager 服務來生成和管理證書
我們這里沒有域名,僅僅是通過ip訪問測試,所以就通過openssl工具自簽一個證書用於測試。
自簽證書部分具體參照另一篇博客: https://www.cnblogs.com/tianleblog/p/12161282.html
生成自簽名的SSL證書和私鑰
#我是在家目錄創建的目錄
mkdir certs
cd certs
#生成私鑰
openssl genrsa -out dashboard.key 2048
#生成csr證書簽名請求
openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=192.168.1.241'
#生成自簽名的ssl證書
openssl x509 -req -days 365 -in dashboard.csr -signkey dashboard.key -out dashboard.crt

重新創建dashboard

刪除之前創建的dashboard相關資源
kubectl delete -f create-admin.yaml
kubectl delete -f recommended.yaml

手工創建namespace

kubectl  create namespace kubernetes-dashboard

 創建證書存放目錄

mkdir $HOME/certs
手工生成secret;后面會將recommend配置中關於certs部分注釋掉
kubectl create secret generic kubernetes-dashboard-certs --from-file=$HOME/certs -n kubernetes-dashboard

修改 deployment 配置,具體修改見下面配置

$ vim recommended.yaml

# 把創建 kubernetes-dashboard-certs Secret 注釋掉,前面已通過命令創建

#apiVersion: v1
#kind: Secret
#metadata:
#  labels:
#    k8s-app: kubernetes-dashboard
#  name: kubernetes-dashboard-certs
#  namespace: kubernetes-dashboard
#type: Opaque

# 添加ssl證書路徑,關閉自動更新證書,添加多長時間登出

      containers:
      - args:
        #- --auto-generate-certificates
        - --tls-cert-file=/tls.crt
        - --tls-key-file=/tls.key
        - --token-ttl=3600

部署 k8s dashboard

kubectl  apply -f recommended.yaml

再次通過Chrome或ie訪問,即可正常。

記得還需要重新創建用戶

 
 
          
 
         

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM