附004.Kubernetes Dashboard简介及使用
程序员文章站
2022-09-27 22:41:45
一 Kubernetes dashboard简介 1.1 Web UI简介 dashboard是基于Web的Kubernetes用户界面。可以使用dashboard将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障排除,以及管理集群资源。可以使用dashboard来概述群集上运 ......
一 kubernetes dashboard简介
1.1 web ui简介
dashboard是基于web的kubernetes用户界面。可以使用dashboard将容器化应用程序部署到kubernetes集群,对容器化应用程序进行故障排除,以及管理集群资源。可以使用dashboard来概述群集上运行的应用程序,以及创建或修改单个kubernetes资源(例如部署、任务、守护进程等)。可以使用部署向导扩展部署,启动滚动更新,重新启动pod或部署新应用程序。
dashboard还提供有关群集中kubernetes资源状态以及可能发生的任何错误的信息。
二 dashboard部署
2.1 下载yaml
1 [root@master ~]# mkdir dashboard #建议将yaml存储到本地 2 [root@master ~]# cd dashboard/ 3 [root@master dashboard]# wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
2.2 修改为国内源
1 [root@master ~]# cd dashboard/ 2 [root@master dashboard]# vi kubernetes-dashboard.yaml 3 …… 4 image: mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 5 ……
提示:将yaml文件中的image字段修改为mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1。
2.3 安装
1 [root@master dashboard]# kubectl apply -f kubernetes-dashboard.yaml 2 [root@master ~]# kubectl get pod --all-namespaces -o wide| grep kubernetes-dashboard #确认验证 3 kube-system kubernetes-dashboard-68ddcc97fc-c5thv 0/1 running 0 30s <none> node2 <none> <none>
三 dashboard访问方式
3.1 访问方式概述
安装dashboard后,需要为用户配置对群集资源的访问控制。从版本1.7开始,dashboard不再具有默认授予的完全管理员权限。默认所有权限都被撤销,并且只授予了使dashboard工作所需的最小权限。
提示:本说明仅针对使用dashboard 1.7及更高版本的用户。如果确信dashboard需要授予管理员权限,可参考:《附006.kubernetes身份认证》
通常,其他应用程序不应直接访问dashboard。
dashboard有以下三种访问方式:
kubectl proxy:只能在localhost*问。访问地址:http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
nodeport:编辑 kubernetes-dashboard.yaml文件中,将 type: clusterip 改为 type: nodeport,确认dashboard运行在哪个节点后。访问地址:https://<node-ip>:<nodeport>
apiserver:需要在浏览器中安装用户证书。访问地址: https://<master-ip>:<apiserver-port>/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
提示:kubectl proxy方式不推荐,建议使用有效证书来建立安全的https连接。
3.2 kubectl proxy
1 [root@master ~]# kubectl proxy 2 [root@master ~]# curl http://127.0.0.1:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ #访问
提示:建议通过后端形式,并且允许所有主机访问的方式:
1 [root@master ~]# nohup kubectl proxy --address='0.0.0.0' --accept-hosts='^*$' &
3.3 nodeport
nodeport访问仪表板的方式仅建议用于单节点设置中的kubernetes环境。
1 [root@master ~]# kubectl -n kube-system edit service kubernetes-dashboard 2 …… 3 type: nodeport 4 …… 5 #将type: clusterip 修改为 type: nodeport。
提示:以上操作也可通过以下命令一步完成:
1 [root@master ~]# kubectl get pods --namespace=kube-system | grep dashboard 2 kubernetes-dashboard-68ddcc97fc-c5thv 1/1 running 0 3h14m 3 [root@master ~]# kubectl describe pod kubernetes-dashboard-68ddcc97fc-c5thv --namespace=kube-system | grep node 4 node: node2/172.24.8.73
测试访问:
浏览器访问:http://172.24.8.73:30343/
提示:若部署的kubernetes集群为多节点集群,需要通过以上方式查找dashboard所在的node节点,若为单节点集群,则直接访问http://<master>:<port>即可。
3.4 apiserver
若kubernetes api服务器公开并可从外部访问,可浏览器直接访问:https://172.24.8.71:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
注意:apiserver默认情况下使用system:anonymous用户进行访问,因此没有权限打开相应资源。只有在选择在浏览器中安装用户证书时,才能使用这种访问仪表板的方式。
nodeport和apiserver都需要配置相应的认证才可访问,确定某种方式方式后需要配置认证类型。
3.5 ingress
dashboard也可以使用ingress进行资源公开。
可参考:https://kubernetes.io/docs/concepts/services-networking/ingress/
四 dashboard验证方式
浏览器访问的时候需要加载相应证书,部署完成后默认已经创建相应证书,可参考附01进行导出。由于kubernetes默认证书可能过期导致无法访问dashboard,本实验在已成功部署kubernetes后手动重新创建证书。
4.1 创建证书
1 [root@master ~]# mkdir /etc/kubernetes/dash_pki 2 [root@master ~]# cd /etc/kubernetes/dash_pki/ 3 [root@master dash_pki]# openssl genrsa -out ca.key 2048 #生成一个 2048 bit 的 ca.key 4 [root@master dash_pki]# openssl req -x509 -new -nodes -key ca.key -subj "/cn=172.24.8.71" -days 10000 -out ca.crt #根据 ca.key 生成一个 ca.crt(使用 -days 设置证书的有效时间) 5 [root@master dash_pki]# openssl genrsa -out server.key 2048 #生成一个 2048 bit 的 server.key 6 [root@master dash_pki]# openssl req -new -key server.key -subj "/cn=172.24.8.71" -out server.csr #根据 server.key 生成一个 server.csr 7 [root@master dash_pki]# openssl x509 -req -in server.csr -ca ca.crt -cakey ca.key -cacreateserial -out server.crt -days 10000 #根据 ca.key、ca.crt 和 server.csr 生成 server.crt 8 subject=/cn=172.24.8.71 9 getting ca private key 10 [root@master dash_pki]# openssl x509 -noout -text -in ./server.crt #查看证书
4.2 修改默认证书配置
1 [root@master ~]# cd dashboard/ 2 [root@master dashboard]# kubectl delete -f kubernetes-dashboard.yaml #删除使用默认证书所创建的dashboard 3 [root@master dashboard]# ll /etc/kubernetes/dash_pki/ 4 [root@master dashboard]# kubectl create secret generic kubernetes-dashboard-certs --from-file="/etc/kubernetes/dash_pki/server.crt,/etc/kubernetes/dash_pki/server.key" -n kube-system #挂载新证书到dashboard 5 [root@master dashboard]# kubectl get secret kubernetes-dashboard-certs -n kube-system -o yaml #查看新证书
4.3 重新部署dashboard
1 [root@master dashboard]# kubectl apply -f kubernetes-dashboard.yaml 2 [root@master dashboard]# kubectl get pods --namespace=kube-system | grep dashboard #确认验证
4.4 导入证书
将server.crt导入ie浏览器,导入操作略。
4.5 访问测试
本试验基于apiserver访问方式+kubeconfig身份验证进行登录。
通过apiserver形式访问:https://172.24.8.71:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
提示:dashboard登录整个流程可参考:https://www.cnadn.net/post/2613.htm
提示:apiserver方式见3.4,kubeconfig验证方式见《附006.kubernetes身份认证》中的3.5。
附001:导出当前kubernetes证书
[root@master ~]# grep 'client-certificate-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.crt
[root@master ~]# grep 'client-key-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.key
[root@master ~]# openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out k8s.crt -name "kubernetes-client"
enter export password:[x120952576]
verifying - enter export password:[x120952576]
使用相应的密码,将k8s.crt导入ie浏览器,导入操作略。
上一篇: 介绍旅游景点胜地的APP:赛导游上榜,三毛游仅第五
下一篇: Redis压缩列表原理与应用分析
推荐阅读
-
ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)第1/2页
-
微信windows版怎么用?微信windows版下载安装及使用教程(附下载)
-
PHP的cURL库简介及使用示例
-
freetds简介、安装、配置及使用介绍
-
yslow安装及使用方法(附火狐firefox、谷歌chrome)
-
TekRadius怎么安装 TekRadius安装及使用图文教程(附下载)
-
Python的SimpleHTTPServer模块用处及使用方法简介
-
aiohttp简介及快速使用
-
解压rpm包的linux命令及rpm命令使用简介
-
ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)第1/2页