使用 kubeadm 在 CentOS 7 搭建 Kubernetes 集群(7)

从上可以看出 NodePort 为 30438,所以我们可以通过 <NodeIP>:<NodePort> 方式既可以访问 Dashboard UI 页面了。注意这里的 NodeIP 可以为 Master 或者 Node 节点的 IP 都可以。我这两台虚拟机,可以通过 :30438 或 :30438 访问 Dashboard。

这里写图片描述

这里写图片描述

这里写图片描述

8、Dashboard 集成 Heapster

Kubernetes Dashboard 监控安装完毕后,其实整个 Kubernetes 服务体系已经可以正常运行起来了,我们需要做的就是将我们的服务部署到集群中。这里在补充一下如何使 Kubernetes Dashboard 集成 Heapster 插件,来图形化展现集群度量指标信息。大体安装过程如我上一篇文章 初始 minikube 安装 Kubernetes Dashboard 并集成 Heapster,这里就在简单的说一下。

首先我们去 GitHub 下载 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

在执行 create 之前请保证能够翻墙或者已经替换好了所需要的 images。

$ 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 monitoring-grafana-2175968514-7tl3w 1/1 Running 0 1d monitoring-influxdb-1957622127-x28mz 1/1 Running 0 1d ...

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

这里写图片描述

这里写图片描述

这里值的一提的是,如果刷新没有出来图形化的话,可以通过查看日志查找原因。

$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 ...

解决方法有两种:

1、通过参考 Github Heapster 配置数据源文档 Heapster source-configuration,修改配置数据源为 --source=kubernetes:<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::8086

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

9、安装过程问题总结

执行 kubeadm init ... 时,报错如下:

ebtables not found in system path ...

原因是没有安装 ebtables 导致,执行 yum install -y ebtables 安装即可。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ccf09e871e52b67aa2845e9bffbb28ef.html