专栏首页木二天空附004.Kubernetes Dashboard简介及使用

附004.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浏览器,导入操作略。

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=20stclch1nfo4

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 019.Kubernetes二进制部署插件dashboard

    提示:将yaml文件中的image字段修改为mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1。

    木二
  • 附017.Kubernetes_v1.17.4 Dashboard部署

    dashboard是基于Web的Kubernetes用户界面。可以使用dashboard将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障...

    木二
  • 附024.Kubernetes_v1.18.3高可用部署架构二

    Kubernetes的高可用主要指的是控制平面的高可用,即指多套Master节点组件和Etcd组件,工作节点通过负载均衡连接到各Master。

    木二
  • 腾讯云上自建Kubernetes集群,部署Kubernetes Dashboard

    Kubernetes Dashboard 是 Kubernetes 的官方 Web UI。使用 Kubernetes Dashboard,您可以:

    pengsiryan
  • CentOS7环境部署kubenetes1.12版本五部曲之四:安装dashboard

    版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boli...

    程序员欣宸
  • 腾讯云容器服务集群中安装 dashboard ui

    目前 CCS 控制台暂时不支持 Job, Pod, CronJob 等对象的展示。有通过 web 界面查看这些类型对象的需求的话,可以自行安装 k8s dash...

    腾讯云容器服务团队
  • Kubernetes系列之Coredns and Dashboard介绍篇

    本次系列使用的所需部署包版本都使用的目前最新的或最新稳定版,安装包地址请到公众号内回复【K8s实战】获取

    程序员同行者
  • Web基础配置篇(十七): Kubernetes dashboard安装配置

    Kubernetes 简称为K8S,是用于自动部署,扩展和管理容器化应用程序的开源系统。Kubernetes的目标是让部署容器化的应用简单并且高效(powerf...

    品茗IT
  • 使用traefik作为ingress controller透出集群中的https后端

    对于k8s集群中的http/https服务,一种常见的设计是集群内部走http协议,然后在ingress controller处统一管理TLS证书,并负责接受外...

    菲宇
  • Hadoop,zookeeper,HBase,Spack集群环境搭建【面试+工作】

    Hadoop,zookeeper,HBase,Spark集群环境搭建【面试+工作】

    奋斗蒙

扫码关注云+社区

领取腾讯云代金券