文档章节

kubernetes operator influxdb-operator 实践

o
 osc_y8yehimr
发布于 2019/03/20 11:09
字数 552
阅读 8
收藏 0

精选30+云产品,助力企业轻松上云!>>>

1.代码,镜像, 二进制文件

  https://github.com/xishengcai/influxdata-operator.git   fork 之官方

2. build 包中已经编译好二进制文件

  cd influxdata-operator
  docker build ./build
  docker images
  docker tag {image_id} influxdb-operator:v1.0

  

3. 创建存储

  创建 pv,pvc, storageclass

kuectl create -f deploy/storage.yaml

  修改pv  nodeAffinity

nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: beta.kubernetes.io/arch
          operator: In
          values:
          - amd64 

  pvc 中声明storageclass 

  pv 中也声明storageclass

  pvc 最终绑定到符合storageclass条件的pv, 如果没有符合条件的pv则会pending

  storageclass 动态绑定,将pv归类,pvc 绑定符合声明的那一类pv

 

 

 

4. 创建目录

mkdir /var/lib/influxdb

  

5. 创建influxdb-operator

kubectl create -f bundle.yaml

  crd:Influxd

    规定了 镜像,副本数目

apiVersion: influxdata.com/v1alpha1
kind: Influxdb
metadata:
  name: influxdb
spec:
  # Add fields here
  size: 1
  baseImage: influxdb:1.6.3-alpine
  imagePullPolicy: IfNotPresent
  pod:
    resources:
      limits:
        cpu: 8
        memory: 16Gi
      requests:
        cpu: 0.1
        memory: 256Mi
    persistentVolumeClaim:
      metadata:
        name: "influxdb-data-pvc"
      spec:
        accessModes: [ "ReadWriteOnce" ]
        storageClassName: standard-resize
        resources:
          requests:
            storage: 8Gi

  operator: influxdata-operator

    启动operator deployment, 根据crd中的信息控制influxdb statefulset 副本状态

    operator源码中的controller-manager 监听 influxdb  statefulset 的状态,而 crd中存的就是期望的目标状态,如果不一致则进行update。

    listwatch下有add, delete, update,主要靠这三个方法实现期望状态。

    

apiVersion: apps/v1
kind: Deployment
metadata:
  name: influxdata-operator
spec:
  replicas: 1
  selector:
    matchLabels:
      name: influxdata-operator
  template:
    metadata:
      labels:
        name: influxdata-operator
    spec:
      serviceAccountName: influxdata-operator
      containers:
        - name: influxdata-operator
          # Replace this with the built image name
          image: influxdb-operator:v1.0
          ports:
          - containerPort: 60000
            name: metrics
          command:
          - influxdata-operator
          imagePullPolicy: IfNotPresent
          env:
            - name: WATCH_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: OPERATOR_NAME
              value: "influxdata-operator"

  

6. 检查pod状态

kubectl get pod

 

 

 

7. 获取service ip

kubectl get svc

  通过kubectl get all 可以看到default namespace创建的所有的资源对象

 

8.golang 代码测试

 代码地址:https://github.com/xishengcai/go_learn/blob/master/client/influxdb.go

   

 

9. 数据备份

  创建pv, pvc

  创建 crd: Backup

  kubectl create -f influxdata_v1alpha1_backup_cr_pv.yaml

apiVersion: influxdata.com/v1alpha1
kind: Backup
metadata:
  name: influxdb-backup
spec:
  podname: "influxdb-0"
  containername: "influxdb"
  # [ -database <db_name> ] Optional: If not specified, all databases are backed up.
  databases:
  # [ -shard <ID> ] Optional: If specified, then -retention <name> is required.
  shard:
  # [ -retention <rp_name> ] Optional: If not specified, the default is to use all retention policies. If specified, then -database is required.
  retention:
  # [ -start <timestamp> ] Optional: Not compatible with -since.
  start:
  # [ -end <timestamp> ] Optional:  Not compatible with -since. If used without -start, all data will be backed up starting from 1970-01-01.
  end:
  # [ -since <timestamp> ] Optional: Use -start instead, unless needed for legacy backup support.
  since:
  storage:
    provider: in2

   

  log:kubectl logs -f influxdata-operator-b5c7cdfdf-7sr85

    

    

 

10. 问题

  1.不同pod的pv没有实现数据同步

  2.没有读写分离

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
浅谈多环境中的Kubernetes集群Prometheus+InfluxDB+Grafana监控方案

Kubernetes监控方案 目前Kubernetes的常用监控方案是Prometheus+Grafana的方式。Prometheus的部署一般是用operator的方式,随着helm的chart包管理日益普及,Prometheus operator也就可以直接...

天赐凯尔
06/01
0
0
阿里云InfluxDB®:一条命令完成k8s监控采集

前言 Kubernetes是当今流行的容器调度系统,已经成为很多软件系统的底座,而kubernetes的监控也有很多方案可选,阿里云InfluxDB®提供时序数据的长期稳定存储,同时集成了grafana可视化组件,...

阿里云官方博客
2019/12/06
18
0
阿里云InfluxDB®:一条命令完成k8s监控采集

前言 Kubernetes是当今流行的容器调度系统,已经成为很多软件系统的底座,而kubernetes的监控也有很多方案可选,阿里云InfluxDB®提供时序数据的长期稳定存储,同时集成了grafana可视化组件,...

阿里云云栖号
2019/12/10
0
0
嗖的一下!只要一条命令,K8s监控数据一键写入时序数据库

这里的“快速”有多快呢?一条命令就能搞定!本文就介绍如何使用helm一键完成k8s监控数据到阿里云InfluxDB®的存储链路。 关于helm 对于helm的安装和使用,网上有很多资料,这里不赘述。有一...

阿里云官方博客
2019/12/24
9
0
嗖的一下!只要一条命令,K8s监控数据一键写入时序数据库

这里的“快速”有多快呢?一条命令就能搞定!本文就介绍如何使用helm一键完成k8s监控数据到阿里云InfluxDB®的存储链路。 关于helm 对于helm的安装和使用,网上有很多资料,这里不赘述。有一...

一肥仔
2019/12/30
12
0

没有更多内容

加载失败,请刷新页面

加载更多

2020-07-03:有1亿个数字,其中有2个是重复的,快速找到它,时间和空间要最优

福哥答案2020-07-03: 1.双重遍历。 时间复杂度是O(N^2)。 2.排序。 采用外部排序。时间复杂度是O(NlogN)。 3.遍历加哈希存储。 空间换时间,时间复杂度是O(N),空间复杂度是O(N)。这种方法适...

osc_ix000whh
30分钟前
17
0
O2OA开源免费开发平台:在O2门户页面中使用React(三)

在前面的章节中,我们介绍了两种在O2OA中使用React开发应用的方式,已经可以满足绝大多数的情况了。如果您考虑完全脱离O2的web服务器,自己搭建web服务器,那就请阅读本章。   我们还是使用...

O2OA企业信息化平台
30分钟前
21
0
harbor 2.0 搭建docker私有仓库

harbor Harbor 是一个CNCF基金会托管的开源的可信的云原生docker registry项目,可以用于存储、签名、扫描镜像内容,Harbor 通过添加一些常用的功能如安全性、身份权限管理等来扩展 docker r...

osc_l7zl78wt
32分钟前
20
0
Java并发编程(06):Lock机制下API用法详解

本文源码:GitHub·点这里 || GitEE·点这里 一、Lock体系结构 1、基础接口简介 Lock加锁相关结构中涉及两个使用广泛的基础API:ReentrantLock类和Condition接口,基本关系如下: Lock接口 ...

osc_kiub62pt
32分钟前
27
0
DNS存在的问题

1、域名缓存问题 本地做一个缓存,直接返回缓存数据。可能会导致全局负载均衡失败,因为上次进行的缓存,不一定是这次离客户最近的地方,可能会绕远路。 2、域名转发问题 如果是A运营商将解析...

mind-blowing
33分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部