• Kubernetes学习日记(三)


    Kubernetes学习日记(三)

    暑期加入了沃天宇老师的实验室进行暑期的实习。在正式开始工作之前,师兄先让我了解一下技术栈,需要了解的有docker、k8s、springboot、springcloud。

    谨以一系列博客记录一下自己学习的笔记。更多内容见Github

    2021/7/13

    今天师兄让我尝试写一下Chronograf的配置文件。

    参考资料

    Chronograf是什么

    Chronograf是InfluxData中的可视化Web服务,InfluxData常常用于监控一个集群,监控的信息保存于influxdb数据库,而chronograf的功能就是将influxdb中的数据漂亮地展示出来。

    镜像

    InfluxDB 2.0似乎已经推出了,但是Chronograf似乎目前只支持InfluxDB 1.x

    下载页:https://portal.influxdata.com/downloads/

    往下翻,可以看到InfluxDB 1.xChronograf的下载链接,可以看到这里直接就提供了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,使得本地有镜像的时候不必重新拉取。

    通过指定了PORTINFLUXDB_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学习日记(四)https://www.cnblogs.com/SnowPhoenix/p/15027283.html

  • 相关阅读:
    RecyclerView 源码分析(一) —— 绘制流程解析
    sqlserver outer join
    获取最后一个标签 xpath
    pytesseract
    pytesseract代码优化
    sql server recursion
    sql
    sql server
    mssql乱码问题
    SQL
  • 原文地址:https://www.cnblogs.com/SnowPhoenix/p/15009070.html
Copyright © 2020-2023  润新知