minikube 安装 Kubernetes Dashboard 并集成 Heapster

目录

  • Kubernetes Dashboard 介绍
  • 环境、软件准备
  • Kubernetes Dashboard 安装
  • Heapster 插件安装
  • 简单演示使用 Dashboard

1、Kubernetes Dashboard 介绍

Kubernetes Dashboard 它是官方提供的用户管理 Kubernetes 集群可视化工具。通过它我们可以直观的看到集群各资源、工作负载、服务发现与负载均衡以及配置存储等信息。同时也可以安装其他插件来图形化展示各资源使用率信息,它还在持续更新中,相信以后会有更加丰富的功能提供给我们。

2、环境、软件准备

这里安装环境同上一篇 初试 minikube 本地部署运行 kubernetes 实例,在该环境中我们已经用 minikube 本地部署并运行 kubernetes 实例,这里在集成一下 Dashboard 监控系统,可以通过浏览器直观的看到集群各资源、工作负载、服务发现与负载均衡以及配置存储等信息。最后我们在 Dashboard 集成 Heapster插件,用来图形化展示各资源 CPU 使用率以及内存使用率信息。

3、Kubernetes Dashboard 安装

默认安装完了 minikube,我们会发现他会自动安装 Dashboard,但是我们通过 minikube dashboard 命令并不能在浏览器上打开 Dashboard 网页。这是啥原因呢?

$ kubectl get pods --all-namespaces
NAMESPACE     NAME                               READY     STATUS              RESTARTS   AGE
...
kube-system   kube-addon-manager-minikube        0/1       ContainerCreating   1          10s
kube-system   kube-dns-910330662-653vt           0/3       ContainerCreating   1          15s
kube-system   kubernetes-dashboard-9k5vl         0/1       ContainerCreating   1          15s
...

在通过命令,我们发现 kube-dns 和 kubernetes-dashboard 并没有启动成功,最后通过查看下日志信息 minikube logskubectl logs -f pods/kubernetes-dashboard-9k5vl -n kube-system kubectl logs -f pods/kube-dns-910330662-653vt -n kube-system,我们发现这几个服务依赖的 images 没有拉取下来,又被墙了。。。 解决方案就是搭梯子或找替代 image。

替代各依赖的 images
docker pull wymr/kubernetes-dashboard-amd64-v1.6.3:v1.6.3 
docker tag wymr/kubernetes-dashboard-amd64-v1.6.3:v1.6.3 gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.3

docker pull googlecontainer/kube-addon-manager:v6.4-beta.2
docker tag googlecontainer/kube-addon-manager:v6.4-beta.2 gcr.io/google-containers/kube-addon-manager:v6.4-beta.2 

docker pull zhaoqing/k8s-dns-dnsmasq-nanny-amd64:1.14.4
docker tag zhaoqing/k8s-dns-dnsmasq-nanny-amd64:1.14.4 gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.4

docker pull zhaoqing/k8s-dns-kube-dns-amd64:1.14.4
docker tag zhaoqing/k8s-dns-kube-dns-amd64:1.14.4 gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.4

docker pull zhaoqing/k8s-dns-sidecar-amd64:1.14.4
docker tag zhaoqing/k8s-dns-sidecar-amd64:1.14.4 gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.4

好了,通过替换上边几个依赖的镜像之后,稍等一会,我们就会发现服务都正常启动起来了。

$ kubectl get pods -n kube-system
NAME                                   READY     STATUS    RESTARTS   AGE
kube-addon-manager-minikube            1/1       Running   1          1d
kube-dns-910330662-653vt               3/3       Running   1          1d
kubernetes-dashboard-9k5vl             1/1       Running   1          1d

此时我们通过 minikube dashboard 或者 minikube dashboard --url 浏览器访问 dashboard 地址,就可以正常打开监控页面了。

4、Heapster 插件安装

上边默认安装后的 Kubernetes Dashboard,是无法图形化展现集群度量指标信息的,此时我们可以通过插件 Heapser,图形化展示集群的信息,这样监控页面就更加直观明了。

首先我们去 GitHub 下载 Heapster 最新稳定版代码到本地指定目录,然后通过 yaml 文件创建并启动各个服务。这里我们选择 InfluxDB 作为后端数据存储,Grafana 作为图形化展示。

$ cd /Users/wanyang3/docker/kubernetes/
$ git clone https://github.com/kubernetes/heapster.git
$ ls -l deploy/kube-config/influxdb/
total 24
-rw-r--r--  1 wanyang3  staff  2291 10 19 14:49 grafana.yaml
-rw-r--r--  1 wanyang3  staff  1162 10 20 15:01 heapster.yaml
-rw-r--r--  1 wanyang3  staff   974 10 19 14:49 influxdb.yaml

这里要注意一下,这三个 yaml 文件分别对应 heapster、influxdb 和 grafana,他们都分别需要依赖对应的 images,由于网络的问题,要么搭梯子或者替换镜像。

依赖镜像入下:
gcr.io/google_containers/heapster-amd64:v1.4.0
gcr.io/google_containers/heapster-influxdb-amd64:v1.3.3
gcr.io/google_containers/heapster-grafana-amd64:v4.4.3

替换镜像如下:
docker pull wanghkkk/heapster-amd64-v1.4.0:v1.4.0
docker pull wanghkkk/heapster-influxdb-amd64-v1.3.3:v1.3.3
docker pull wanghkkk/heapster-grafana-amd64-v4.4.3:v4.4.3

可对应上边 yaml 文件分别修改 image 为以上对应镜像,也可以 docker tag ... 改成对应镜像名。修完完毕之后,可以通过命令创建 pod 了。

$ kubectl create -f deploy/kube-config/influxdb/
delpoyment "heapster" created
service "heapster" created
deployment "monitoring-influxdb" created
service "monitoring-influxdb" created
deployment "monitoring-grafana" created
service "monitoring-grafana" created

$ kubectl get pods -n kube-system
NAME                                   READY     STATUS    RESTARTS   AGE
heapster-3848557544-1548b              1/1       Running   0          1d
kube-addon-manager-minikube            1/1       Running   0          1d
kube-dns-910330662-653vt               3/3       Running   0          1d
kubernetes-dashboard-9k5vl             1/1       Running   0          1d
monitoring-grafana-2175968514-7tl3w    1/1       Running   0          1d
monitoring-influxdb-1957622127-x28mz   1/1       Running   0          1d

好了,Heapster 插件已经启动完毕了,如果一切正常的话,稍等几分钟(也不一定哈,我的就等了差不多20分钟才出来。。。),采集数据需要些时间,再次刷新 dashboard,就能看到集群度量指标信息将以图形化方式展现出来。

但是,如果你等了很长时间,Dashboard 还是更以前一样,没有任何变化的话,那很有可能是服务并没有正确运行起来,我们可以通过查看日志来排查原因。

$kubectl logs -f pod/monitoring-grafana-2175968514-7tl3w -n kube-system
$kubectl logs -f pod/monitoring-influxdb-1957622127-x28mz -n kube-system
$kubectl logs -f pod/heapster-3848557544-1548b -n kube-system

通过日志可以发现,在 heapster-3848557544-1548b 这个 pod 的日志中,发现有错误:

...
Failed to list *api.Node: Get https://kubernetes.default/api/v1/nodes?resourceVersion=0: 
x509: certificate is valid for server, not kubernetes.default
...

通过 heapster.yaml 文件可以看到,

command:
    - /heapster
    - --source=kubernetes:https://kubernetes.default
    - --sink=influxdb:http://monitoring-influxdb.kube-system.svc:8086

默认连接 kubernetes 的数据源地址为 https://kubernetes.default 后端存储数据服务为 http://monitoring-influxdb.kube-system.svc:8086,但是这里出现了由于认证问题获取 kubernetes 服务失败的情况。

解决方法有两种:

1、通过参考 Github Heapster 配置数据源文档 Heapster source-configuration,修改配置数据源为 --source=kubernetes:http://<address-of-kubernetes-master>:<http-port>?inClusterConfig=false,采用 insecure-port 的方式连接,因为 kube-apiserver 针对 insecure-port 接入的请求没有任何限制机制。 2、通过命令获取 kubernetes ClusterIP,直接使用 ClusterIP 也是可以的。

$ kubectl get service
NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes       ClusterIP   10.0.0.1     <none>        443/TCP        1d
...

修改 heapster.yaml 

command:
    - /heapster
    #- --source=kubernetes:https://kubernetes.default
    - --source=kubernetes:https://10.0.0.1
    - --sink=influxdb:http://monitoring-influxdb.kube-system.svc:8086

以上两种方式修改配置完成后,使用 kubectl apply -f deploy/kube-config/influxdb/heapster.yaml 重新 apply 一下该 pod。再次稍等几分钟,再次刷新 dashboard,就能看到了。

5、简单演示使用 Dashboard

通过 kubernetes dashboard 我们除了可以直观的查看各种资源信息,日志信息,查看工作负荷信息,监控 CPU 以及内存资源使用率等之外,我们还可以创建部署容器应用,删除各种资源,编辑更新资源文件等等操作。下边就演示下如何在 dashboard 上创建一个容器应用部署,并且编辑更新该部署,最后删除部署信息。

5.1 创建容器应用部署

浏览器打开 kubernetes dashboard 的 Web UI 页面,点击右上角 “+ 创建”,进入创建应用页面,这里有两种方式创建应用,一种是通过页面填写应用详情,二种是上传 YAML 或 JSON 文件的方式。为了方便,我们使用第二种方式,上传本地写好的一个 redis.yaml 文件,点击上传即可。

redis.yaml 文件

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: hello-redis
  namespace: my-kube
spec:
  replicas: 2
  template:
    metadata:
      labels:
        group: hello-scm
        my-kube: hello-redis
        k8s-app: redis
    spec:
      containers:
      - name: redis
        image: redis:latest
---
apiVersion: v1
kind: Service
metadata:
  labels:
    group: hello-scm
    kubernetes.io/cluster-service: 'true'
    kubernetes.io/name: hello-redis
  name: hello-redis
  namespace: my-kube
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    k8s-app: redis

说明一下,这里我创建了一个 Deployment 名为 hello-redis,并归属到 my-kube 的命名空间下,并且指定初始副本数为 2,使用镜像 redis:latest,同时创建了一个 Service 名为 hello-redis,开放 6379 端口,并分别给他们打上对应的 tag 标签。

从上图可以看到已经创建好了 hello-redis 部署,以及初始化的2个副本容器组。

5.2 编辑更新该部署

现在我们将 hello-redis 副本容器组扩大到 4 个,点击左侧 “工作负荷 —》 部署”,右侧会列出当前节点下所有的部署,点击 hello-redis 进入到部署页点击右上角 “编辑”,弹出 Yaml 文件编辑弹框,修改 replicas: 4,点击 “更新” 即可。也可以在部署列表中 hello-reids 记录最后边操作栏,点击 “查看/编辑 YAML”,弹出框修改。

稍等一会,去 hello-redis 副本集中查看,副本数就变成 4 个了。

5.3 删除部署信息

点击左侧 “工作负荷 —》 部署”,右侧会列出当前节点下所有的部署,点击 hello-redis,进入到部署页点击右上角 “删除”,弹出框点击 “删除” 即可。也可以在部署列表中 hello-reids 记录最后边操作栏,点击 “删除”,弹出框点击 “删除”。

好了,Kubernetes Dashboard 先介绍这么多,后期使用中在慢慢学习研究吧。

参考资料

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏漫漫全栈路

腾讯云服务器搭建个人博客教程

腾讯云服务器搭建个人博客教程 本教程用于武汉商贸职业学院2016年10月云+校园推广活动公开课使用,发布于博客暂作存档。 ---- 实验架构 ? ---- 环...

5.9K50
来自专栏魏艾斯博客www.vpsss.net

centOS 如何安装 lnmp 环境

47540
来自专栏python学习之旅

TestLink笔记(一):环境配置+安装

本文的安装环境是Windows操作系统。 (一)     前期准备 1、XAMPP下载(下载5.6的版本)          https://www.apach...

59160
来自专栏一只程序汪的自我修养

手把手教你用Jenkins自动发布Docker

首先,我们要有个Jenkins咯,下载链接:https://jenkins.io/download/

51360
来自专栏linux驱动个人学习

udev实现热插拔

一、UDEV是什么? Udev是一个针对Linux内核2.6的可提供自动创建的设备节点和命名的解决方法的一个文件系统;其实与/etc/目录下的fstab文件类似...

54340
来自专栏哎_小羊

Git Review + Gerrit 安装及使用完成 Code-Review

目录 Code Review 介绍 Gerrit 介绍 环境、软件准备 Git-Review 安装 Gerrit 安装 简单的 Demo 示例 1、Code R...

1.9K90
来自专栏磨磨谈

Centos7升级内核后无法启动解决办法

这个问题存在有一段时间了,之前做的centos7的ISO,在进行内核的升级以后就存在这个问题:

40230
来自专栏Coding01

一步一步搭建 PHP 服务器环境

这两天翻了翻之前的技术文档,发现有一篇文档值得拿出来和大家分享:如何给一台全新的阿里云服务器,搭建环境 —— 来部署 PHP 项目,Node.js 项目等。

51620
来自专栏叔叔的博客

Docker Swarm

docker-machine ls, 看看有没有虚拟主机,没有就Docker Machine创一个

18020
来自专栏腾讯云服务器团队的专栏

主机迁移实践分享

在云计算时代,不管是从IDC上云还是多云直接的迁移,都已经是常见的事宜。而在上云/迁移的方案中,也是有多种的方式能够将主机迁移到腾讯云中。

12.2K140

扫码关注云+社区

领取腾讯云代金券