如何在 Kubernetes 实例中启动 TICK Stack
作者:Jack Zampolin / 产品
2016 年 11 月 30 日
导航至
鉴于我对 Kubernetes 的兴趣,以及我们最近为简化使用 InfluxDB 监控 Kubernetes 集群所做的工作(kubernetes telegraph 插件,kapacitor kubernetes 输出,chronograf OSS 版本),我决定整理一个简单的方法,在 Kubernetes 实例中启动完整堆栈。
动机
您可能会问,Kubernetes 不是自带内置监控吗?是的,它是!这种监控和日志聚合的处理方式因您的集群配置和来源而异。默认情况下,指标监控由 heapster 完成。有时,这由 InfluxDB 提供支持。
Heapster 在遵循 InfluxDB 模式最佳实践方面做得不是最好。它的文档也很稀疏,并且已停止添加新功能。我想要一种简单的方法来创建演示和概念验证 (POC),其中包含丰富的实时数据。随着新的 Chronograf 和它提供的预制仪表板的发布,这成为可能。
为了便于在不同的 Kubernetes 配置上部署,我决定将该项目编写为一系列 Helm Charts。tick-charts 是结果。
.
??? LICENSE
??? README.md
??? chronograf
? ??? Chart.yaml
? ??? README.md
? ??? templates
? ? ??? NOTES.txt
? ? ??? _helpers.tpl
? ? ??? deployment.yaml
? ? ??? pvc.yaml
? ? ??? service.yaml
? ??? values.yaml
??? influxdb
? ??? Chart.yaml
? ??? README.md
? ??? templates
? ? ??? NOTES.txt
? ? ??? _helpers.tpl
? ? ??? config.yaml
? ? ??? deployment.yaml
? ? ??? pvc.yaml
? ? ??? service.yaml
? ??? values.yaml
??? kapacitor
? ??? Chart.yaml
? ??? README.md
? ??? templates
? ? ??? NOTES.txt
? ? ??? _helpers.tpl
? ? ??? deployment.yaml
? ? ??? pvc.yaml
? ? ??? service.yaml
? ??? values.yaml
??? telegraf
??? Chart.yaml
??? README.md
??? docs
? ??? all-config-values.toml
? ??? all-config-values.yaml
??? templates
? ??? _helpers.tpl
? ??? configmap-single.yaml
? ??? conifgmap-ds.yaml
? ??? daemonset.yaml
? ??? deployment.yaml
? ??? service.yaml
??? values.yaml
Helm
在部署堆栈成员之前,我们需要将它们打包以用于 Helm
$ helm package influxdb chronograf telegraf kapacitor
Telegraf
$ helm install telegraf-0.1.0.tgz --name telegraf --namespace tick
从高层次来看,系统的工作方式是启动 Telegraf Daemonset
# telegraf/daemonset.yaml
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: telegraf
namespace: tick
spec:
template:
metadata:
labels:
app: telegraf
spec:
containers:
- name: telegraf
image: telegraf:1.1.0-alpine
imagePullPolicy: Always
...
InfluxDB
$ helm install influxdb-0.1.0.tgz --name influxdb --namespace tick
Telegraf 生成的数据随后被转发到 InfluxDB# influxdb/deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: influxdb
namespace: tick
...
spec:
containers:
- image: influxdb:1.1.0-rc2-alpine
...
volumeMounts:
- name: config-volume
mountPath: /etc/influxdb
- name: influxdb
mountPath: /var/lib/influxdb
...
volumes:
- name: config-volume
configMap:
name: influxdb-config
- name: influxdb
emptyDir: {}
emptyDir
不会为您的 InfluxDB 实例提供持久性。您可以在 InfluxDB chart 中启用持久性。Kapacitor 和 Chronograf 也需要持久存储。默认情况下,所有产品都禁用持久性。此项目使用 持久卷声明 (pvc
) 在需要时创建卷。只需在关联的 values.yaml
文件中设置 persistence: "true"
即可。为了使 Influx 可寻址,我们需要通过 service
公开其 API。这会在内部集群 DNS 中创建一个条目,格式为 http://{service_name}.{namespace}:{service_port}
,使 InfluxDB API 可从集群中的任何位置寻址,地址为 http://influxdb-influxdb.tick:8086
。如果您想使用 influx
从本地计算机访问数据库,请尝试以下操作# the args are {namespace} {app}
# It will attach to the first instance of app returned if multiple exist
# InfluxDB API will be available at localhost:8086
$ kubectl port forward $(kubectl get pods --all-namespaces -l app=influxdb-influxdb -o jsonpath='{ .items[0].metadata.name }') 8086:8086
# In another terminal window:
$ influx
> show databases
name: databases
name
----
telegraf
_internal
Chronograf
$ helm install chronograf-0.1.0.tgz --name chronograf --namespace tick
Chronograf 是 InfluxDB 的新开源时间序列可视化和数据库管理工具。它包含一些用于 Kubernetes 的预制仪表板。它还需要一些持久存储来存储它用来存储状态的 boltdb 文件。我们在此应用中使用的唯一新 Kubernetes 功能是 LoadBalancer
服务apiVersion: v1
kind: Service
metadata:
name: chronograf
namespace: tick
spec:
type: LoadBalancer
ports:
- port: 80
name: http
targetPort: 8888
protocol: TCP
selector:
app: chronograf
这会获取 Chronograf 的服务端口 (:8888
) 并通过负载均衡器(AWS 上的 ELB 和 GCE 中的 Cloud LB)在公共 IP 上公开它。这可能需要一分钟来配置,因此在服务创建后,运行 kubectl get -w svc --namespace tick chronograf-chronograf
以监视 IP 是否可用。在我们配置 Web 控制台之前,我们需要部署堆栈的最后一个成员 kapacitor
。该部署文件集中没有任何新内容,但是 Web 控制台公开了一些功能。$ helm install kapacitor-0.1.0.tgz --name kapacitor --namespace tick
配置 Chronograf
当您获得上述步骤中的公共 IP 时,将其插入到您的 Web 浏览器中。您应该会看到一个屏幕,提示您输入 InfluxDB 的 URL 和名称。由于所有请求都通过 chronograf 服务器代理,因此我们可以使用内部集群寻址通过以下 URL 访问 InfluxDB 或 Kapacitor- InfluxDB:
http://influxdb-influxdb.tick:8086
- Kapacitor:
http://kapacitor-kapacitor.tick:9092
准备就绪!
现在您已准备好探索可用的数据!这篇文章更多地是描述示例中使用的不同技术和策略。我将在另一篇文章中介绍如何使用完整堆栈。与此同时,您可以观看我关于此主题的视频,其中包含 现场演示。下一步是什么
- 下载适用于 TICK-stack 的下载已在我们的“下载”页面上线
- 云端部署:开始免费试用 InfluxDB Cloud,它具有完全托管的集群、Kapacitor 和 Grafana。
- 在您的服务器上部署:想在您的服务器上运行 InfluxDB 集群?免费试用 14 天的 InfluxDB Enterprise,它具有用于部署、监控和重新平衡集群的直观 UI,以及管理备份和恢复。
- 讲述您的故事:超过 100 家公司分享了他们关于 InfluxDB 如何帮助他们取得成功的故事。提交您的客户评价,即可获得限量版连帽衫作为感谢。