KubeRBS 助力 Kubernetes 自动回滚,让你晚上睡得更香


浅析 KubeRBS 的原理和使用方法

KubeRBS 助力 Kubernetes 自动回滚,让你晚上睡得更香

浅析 KubeRBS 的原理和使用方法

  • Kubernetes 知识图谱
  • 云原生导航
  • 谷歌搜索
  • Raft 协议动画演示
  • 搬瓦工

    随着越来越多的企业开始大量使用 Kubernetes,持续交付越来越趋向于标准化,软件版本的更新也越来越趋向于自动化。但你有没有想过,如果新发布的版本有缺陷时该怎么办?你需要多少时间和精力来回滚到之前的版本?

    人生苦短,不能把有限的精力浪费在无限的手动回滚中,最好的办法还是让系统自己决定要不要回滚,通过设定一系列指标,并对这些指标进行监控,就可以在应用不满足该指标时触发控制器对应用进行回滚。kuberbs(Kubernetes Rollback System)就是对该方案的一种尝试,它会监控 Kubernetes 的 Deployment 资源,如果该应用的错误率(用户定义的度量标准)高于指定的阈值,就会将该 Deployment 回滚到之前的版本。

    到目前为止,kuberbs 支持使用 StackdriverDatadog 的指标作为错误率指标,未来还计划增加更多对其他监控系统的支持。

    kuberbs 是一个 Operator 控制器,使用 CRD 来管理需要监控的 Deployment 的配置、指标和阈值。下面是一个示例:

    apiVersion: "doit-intl.com/v1"
    kind: Rbs
    metadata:
        name: my-rbs-example
    spec:
      watchperiod: 5
      metricssource: stackdriver
      namespaces:
      - name: default
        deployments:
        - deployment:
            name: hello-kubernetes-app
            #Stack driver metric
            metric: logging.googleapis.com/user/hello-kubernetes-app-errors
            threshold: 1
        - deployment:
            name: kubernetes-app-2
            # DataDog metric
            metric: gcp.container.cpu.usage_time{*}
            threshold: 85
      - name: kube-system
        deployments:
        - deployment:
            name: kube-dns
            metric: logging.googleapis.com/user/dig
            threshold: 30
    

    可以看到指标和阈值都是通过 CRD 资源 Rbs 来定义的,配置是通过 deployment 中的环境变量来定义的,而环境变量被存储在 kuberbs 的 ConfigMap 中。

    apiVersion: v1
    data:
      KUBERBS_CHECKMETRICSINTERVAL: "10"
      KUBERBS_APIKEY: ""
      KUBERBS_APPKEY: ""
      KUBERBS_DEBUG: "false"
    kind: ConfigMap
    metadata:
      labels:
        app: kuberbs
      name: kuberbs-config
      namespace: kube-system
    

    你可以通过下面的小视频看到 KubeRBS 的运行状况:


    -------他日江湖相逢 再当杯酒言欢-------

    「真诚赞赏,手留余香」

    米开朗基杨

    真诚赞赏,手留余香

    使用微信扫描二维码完成支付


    相关推荐