K8s 部署 Dashboard UI 仪表板 ——让一切可视化

时间:2024-01-14 18:07:20

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

Dashboard 介绍

仪表板是基于Web的Kubernetes用户界面。您可以使用仪表板将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障排除,并管理集群本身及其伴随资源。

您可以使用仪表板来概述群集上运行的应用程序,以及创建或修改单个Kubernetes资源(例如部署,作业,守护进程等)。

例如,您可以使用部署向导扩展部署,启动滚动更新,重新启动Pod或部署新应用程序。仪表板还提供有关群集中Kubernetes资源状态以及可能发生的任何错误的信息。

====== 在 master1 节点上操作 ======

1、在k8s工作目录中创建dashborad工作目录
mkdir /opt/k8s/dashboard
cd /opt/k8s/dashboard ----------------------------------------------------------------------------------------
//上传Dashboard.zip压缩包,并解压,一共有7个文件,包含5个构建该界面的核心文件,一个k8s-admin.yaml文件是自己写的,用来生成待会在浏览器中登录时所用的令牌;一个dashboard-cert.sh,用来快速生成解决谷歌浏览器加密通信问题所需的证书文件 //核心文件官方下载资源地址:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dashboard
dashboard-configmap.yaml dashboard-rbac.yaml dashboard-service.yaml dashboard-controller.yaml dashboard-secret.yaml k8s-admin.yaml dashboard-cert.sh ----------------------------------------------------------------------------------------
1、dashboard-rbac.yaml:用于访问控制设置,配置各种角色的访问控制权限及角色绑定(绑定角色和服务账户),内容中包含对应各种角色所配置的规则(rules)
2、dashboard-secret.yaml:提供令牌,访问API服务器所用(个人理解为一种安全认证机制)
3、dashboard-configmap.yaml:配置模板文件,负责设置Dashboard的文件,ConfigMap提供了将配置数据注入容器的方式,保证容器中的应用程序配置从 Image 内容中解耦
4、dashboard-controller.yaml:负责控制器及服务账户的创建,来管理pod副本
5、dashboard-service.yaml:负责将容器中的服务提供出去,供外部访问
2、通过kubectl create 命令创建resources
cd /opt/k8s/dashboard 规定kubernetes-dashboard-minimal该角色的权限:例如其中具备获取更新删除等不同的权限
kubectl create -f dashboard-rbac.yaml  
有几个kind就会有几个结果被创建,格式为kind+apiServer/name
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created //查看类型为 Role,RoleBinding 的资源对象 kubernetes-dashboard-minimal 是否生成 kubectl get role,rolebinding -n kube-system  
//-n kube-system 表示查看指定命名空间中的pod,缺省值为default
3、证书和密钥创建
kubectl create -f dashboard-secret.yaml
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-key-holder created 查看类型为 Secret 的资源对象 kubernetes-dashboard-certs,kubernetes-dashboard-key-holder 是否生成 kubectl get secret -n kube-system
4、配置文件,对于集群dashboard设置的创建
kubectl create -f dashboard-configmap.yaml
configmap/kubernetes-dashboard-settings created 
 
//查看类型为 ConfigMap 的资源对象 kubernetes-dashboard-settings 是否生成 kubectl get configmap -n kube-system
5、创建容器需要的控制器以及服务账户
kubectl create -f dashboard-controller.yaml
serviceaccount/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created 
 
//查看类型为 ServiceAccount,Deployment 的资源对象 kubernetes-dashboard-settings 是否生成 kubectl get serviceaccount,deployment -n kube-system
6、将服务提供出去
kubectl create -f dashboard-service.yaml
service/kubernetes-dashboard created  
//查看创建在指定的 kube-system 命名空间下的 pod 和 service 状态信息 kubectl get pods,svc -n kube-system -o wide  
//svc 为 service 的缩写,可用 kubectl api-resources 查看 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
pod/kubernetes-dashboard-7dffbccd68-c6d24 1/1 Running 1 11m 172.17.26.2 192.168.80.11 <none> NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes-dashboard NodePort 10.0.0.75 <none> 443:30001/TCP 11m k8s-app=kubernetes-dashboard
7、dashboard分配给了node01服务器,访问的入口是30001端口,打开浏览器访问 https://nodeIP:30001 来进行测试

火狐浏览器可直接访问:https://192.168.229.70:30001

谷歌浏览器则因为缺少加密通信的认证证书,导致无法直接访问。可通过 菜单->更多工具->开发者工具->Security 查看访问失败的原因。
8、解决谷歌浏览器加密通信问题,使用的脚本 dashboard-cert.sh 来快速生成证书文件
cd /opt/k8s/dashboard/
vim dashboard-controller.yaml
......
args:
# PLATFORM-SPECIFIC ARGS HERE
- --auto-generate-certificates
#在文件的第47行下面添加以下两行,指定加密(tls)的私钥和证书文件
- --tls-key-file=dashboard-key.pem
- --tls-cert-file=dashboard.pem
9、执行脚本
cd /opt/k8s/dashboard/
chmod +x dashboard-cert.sh
./dashboard-cert.sh /opt/k8s/k8s-cert/
10、在 dashboard 工作目录下将生成两个证书
ls *.pem
dashboard.pem dashboard-key.pem
11、重新进行部署(注意:当apply不生效时,先使用delete清除资源,再apply创建资源)
kubectl apply -f dashboard-controller.yaml 
 
//由于可能会更换所分配的节点,所以要再次查看一下分配的节点服务器地址和端口号
kubectl get pods,svc -n kube-system -o wide //再次进行访问测试,选择使用令牌方式登录,使用 k8s-admin.yaml 文件进行创建令牌
cd /opt/k8s/dashboard/
kubectl create -f k8s-admin.yaml

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

#获取token简要信息,名称为dashboard-admin-token-xxxxx

kubectl get secrets -n kube-system
NAME TYPE DATA AGE
dashboard-admin-token-kpmm8 kubernetes.io/service-account-token 3
default-token-7dhwm kubernetes.io/service-account-token 3
kubernetes-dashboard-certs Opaque 11
kubernetes-dashboard-key-holder Opaque 2
kubernetes-dashboard-token-jn94c kubernetes.io/service-account-token 3  
//查看令牌序列号,取 token: 后面的内容
kubectl describe secrets dashboard-admin-token-kpmm8 -n kube-system
//将令牌序列号复制填入到浏览器页面中,点击登录

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

  

先通过 kubectl get pods 命令查看一下集群中是否有资源在运行,再在 Dashboard UI 界面中命令空间选 default,
点击侧边栏中的“容器组”,点击容器名称,进入一个页面,点击右上方的“运行命令”或”日志“控件会弹出另一个额外页面,可在“运行命令”输入 curl <podip> 命令访问容器,再通过dashboard页面查看日志更新结果。

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化

K8s 部署 Dashboard UI  仪表板   ——让一切可视化