软件测试 | Dashboard 是什么?
K8S Dashboard 是一个带有图形界面的集群管理服务, 带有基本的监控和运维管理功能, 虽然对于熟悉 K8S 的人来说这个服务显得比较鸡肋,因为更习惯使用命令行来操作集群并且命令行更灵活更强大。 但是对于初学者来说,使用 K8S Dashboard 倒也是个不错的选择。 要安装 Dashboard 首先需要 下载 它的配置文件。
这个配置文件里包含了启动 Dashboard 所需要的所有资源对象的配置。只需要使用 kubectl creaet -f 命令就可以进行创建。 但是在这里不能直接创建,因为官方的配置文件中并没 有将容器网络暴露出来。也就是无法与 Dashboard 容器进行网络通信。 所以需要修改这段配置文件中 关于 Service 的配置
上面这段是 dashboard 中对于 Service 的配置, 需要修改成下面的样子:
通过上面的配置细节可以看出来针对原始配置修改了 2 处地方:
在 spec 字段下面添加了 type 字段,值为 NodePort。意思是要暴露 NodePort 类型的网络。 这种 网络可以理解为跟 Docker 一样是通过端口映射来完成的。所以下面还会指定 nodePort:30022 来 指定宿主机的对应端口。只不过这里不一样的是,当用户在 Service 中指定了对应的端口后,它不 仅仅针对当前 POD 所在节点生效,而是针对所有节点都会生成对应的端口映射规则。 也就是说用 户可以使用任意节点的 ip 地址+端口号都可以对其进行网络访问。 因为 K8S 在集群的每一个节点 中 都会启动一个名为 kube-proxy 的服务,当创建了一个 Service 后, 集群中每个节点的 kubeproxy 都会通过 iptables 创建对应的端口映射规则。
在 ports 字段下添加了一个新的字段叫 nodePort,用来指定具体映射到哪个端口上, 如果用户没 有指定这个字段,那么 K8S 会随机为这个 Service 选取一个端口号通过这样的修改后再通过 kubectl create -f 命令来创建后就可以在浏览器上访问 Dashboard 了。 但是这里需要解释一 下 Service 的工作原理。 在上一个章节中讲到在 K8S 中任何资源都是可以被打上 Label 的,这些 Label 是 K8S 用来管理调度的重要机制。 也是资源寻址的重要方式,可以通过 kubectl get pods -l {label} 的方式找到对应的一批 POD。 所以对于 Service 来说也是一样的, Service 本身的功能是接管容器网络,不论在集群外部还是内部与容器的网络通信都是先发送给 Service 再 由 Service 转发给对应的 POD。 而 Service 的寻址 POD 的方式就是通过 Label 寻址的,而 label 是一个 K,V 格式的字段。如下:
这段配置声明 Service 会接管所有带有 k8s-app=kubernetes-dashboard 这个 Label 的 POD, 所以看 dashboard 的 POD 定义中,在 meatadata 字段内会有对应的定义:
所以在修改 dashboard 文件的时候,注意不要碰 service 的 selector 字段,一但与 POD 的 label 不匹 配,就会出现错误。 当创建好 dashboard 后,就可以通过浏览器访问了。 但是第一次访问会提示选择 身份验证的方式, 分为 token 和 kubeconfig 文件两种。
之前已经介绍了 kubeconfig 文件的作用, 本次说明一下使用 token 的方式进行认证。首先需要获取 dashboard 的 secrets。
然后获取 secrets 中的 token 信息。
把上面打印出来的 token 复制到页面上就可以正常操作 dashboard 了。 在 dashboard 中可以通过图形 界面完成大部分以前通过命令行才能完成的事情
搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核
评论