Kubernetes学习日记(三)
2021/7/14 6:06:23
本文主要是介绍Kubernetes学习日记(三),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Kubernetes学习日记(三)
暑期加入了沃天宇老师的实验室进行暑期的实习。在正式开始工作之前,师兄先让我了解一下技术栈,需要了解的有docker、k8s、springboot、springcloud。
谨以一系列博客记录一下自己学习的笔记。更多内容见Github
- 上一篇 Kubernetes学习日记(一)
2021/7/13
今天师兄让我尝试写一下Chronograf的配置文件。
参考资料
- Chronograf官方文档:https://docs.influxdata.com/chronograf/latest/
- Kuberbetes API文档:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/
Chronograf是什么
Chronograf是InfluxData中的可视化Web服务,InfluxData常常用于监控一个集群,监控的信息保存于influxdb数据库,而chronograf的功能就是将influxdb中的数据漂亮地展示出来。
镜像
InfluxDB 2.0
似乎已经推出了,但是Chronograf
似乎目前只支持InfluxDB 1.x
。
下载页:https://portal.influxdata.com/downloads/
往下翻,可以看到InfluxDB 1.x
和Chronograf
的下载链接,可以看到这里直接就提供了docker镜像,所以我们不需要手动构建镜像了:
docker pull influxdb:1.8 docker pull quay.io/influxdb/chronograf:1.9.0
配置的参数选择
从Chronograf文档 | --port中可以知道,其默认的端口是8888
,可以通过命令行参数/环境变量来修改,但是次数参数来修改deploy就启动不了了,所以还是通过环境变量来修改。
另一个比较重要的参数时InfluxDb的信息,从Chronograf文档 | --influxdb-url中可以知道,可以通过环境变量INFLUXDB_URL
来指定,如果我们将InfluxDb也包装为一个Service,那么我们就可以借助k8s内部的DNS来访问了。在文档中,后面也介绍了influxdb需要鉴权时的参数,需要的话,以后再加上,届时,可能需要k8s Secret来保证其安全性。
从InfluxDb文档 | Port中可以知道,FluxDb响应HTTP请求的服务默认启动于8086端口,这里我们就不修改了。
配置文件构造
详见chronograf
chronograf.yml
apiVersion: apps/v1 kind: Deployment metadata: name: chronograf namespace: default labels: app: chronograf spec: selector: matchLabels: app: chronograf replicas: 2 template: metadata: labels: app: chronograf spec: containers: - name: chronograf image: quay.io/influxdb/chronograf:1.9.0 # args: # - --influxdb-url=influxdb:8086 imagePullPolicy: IfNotPresent env: - name: PORT value: "8081" - name: INFLUXDB_URL value: "http://influxdb:8086" resources: limits: cpu: 100m memory: 200Mi ports: - containerPort: 8081
resources.limits是我随便写的,因为不写vscode会报warning。
通过指定imagePullPolicy: IfNotPresent
,使得本地有镜像的时候不必重新拉取。
通过指定了PORT
和INFLUXDB_URL
两个环境变量,分别实现了更改端口、指定influxdb的url,然后将容器的8081端口暴露出来。
其中influxdb的url我们利用了k8s的DNS,我们后面还需要创建一个influxdb的Service。
然后创建一个服务:
chronograf-service.yml
apiVersion: v1 kind: Service metadata: name: chronograf-service namespace: default labels: app: chronograf-service spec: selector: app: chronograf type: NodePort ports: - port: 8081
通过selector
来指定pods。这跟使用kubectl expose pod/chronograf --type="NodePort" --port=8081
的效果应该差不多。
最后创建influxdb:
influxdb.yml
apiVersion: apps/v1 kind: Deployment metadata: name: influxdb namespace: default labels: app: influxdb spec: selector: matchLabels: app: influxdb replicas: 1 template: metadata: labels: app: influxdb spec: containers: - name: influxdb imagePullPolicy: IfNotPresent image: influxdb:1.8 resources: limits: cpu: 100m memory: 200Mi ports: - containerPort: 8086
influxdb的service就直接通过kubectl expose
来创建。
运行
通过kubectl apply
运行这三个配置文件,通过kubectl expose
来创建influxdb的service。
通过dashboard可以看到都正常运行了:
因为我在windows上运行,还需要将minikube这个node的端口转发出来:
minikube service chronograf-service
注意,如果我们没有配置INFLUXDB_URL
环境变量,访问的时候就必须先输入连接InfluxDb的信息,如果仅仅创建了InfluxDb的Deployment,而没有创建Service,在Chronograf中应该会报错无法连接到InfluxDb。
总结
通过查阅文档,我们初步完成了一个Chronograf的相关配置文件。
这篇关于Kubernetes学习日记(三)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15在Kubernetes (k8s) 中搭建三台 Nginx 服务器怎么实现?-icode9专业技术文章分享
- 2024-11-05基于Kubernetes的自定义AWS云平台搭建指南
- 2024-11-05基于Kubernetes Gateway API的现代流量管理方案
- 2024-11-05在Kubernetes上部署你的第一个应用:Nginx服务器
- 2024-11-05利用拓扑感知路由控制Kubernetes中的流量
- 2024-11-05Kubernetes中的层次命名空间:更灵活的资源管理方案
- 2024-11-055分钟上手 Kubernetes:精简实用的 Kubectl 命令速查宝典!
- 2024-10-30K8s 容器的定向调度与亲和性
- 2024-10-28云原生周刊:K8s未来三大发展方向 丨2024.10.28
- 2024-10-25亚马逊弹性Kubernetes服务(EKS)实战:轻松搭建Kubernetes平台