这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

使用 hotplug 进行拓展

1 - 热插拔 hotplug 介绍

热插拔是通过修改配置文件实现不停机更新监控、日志、审计等组件的启停和配置。

热插拔

热插拔的实现是基于 helm ,因此集群需要预先安装好 helm3 版本。

登录管控 k8s 集群,执行命令可以查看热插拔配置

# kubectl get hotplug
NAME            PHASE     AGE
common          running   23h
pivot-cluster   running   16d

其中:

  • common 表示公共的热插拔配置,pivot-cluster 表示 pivot-cluster 这个 k8s 集群的热插拔配置。

  • 允许自定义各个集群的热插拔配置覆盖 common 热插拔配置实现个性化配置 k8s 集群组件热插拔。

  • 热插拔配置的 .metadata.name 要求与k8s集群名称一致,所有 k8s 集群信息查看命令为 kubectl get cluster

Common配置说明

目前,默认的 common 配置包括以下几个组件:

logseer:日志管理组件,仅在管控集群安装

logagent:日志采集代理组件

kubecube-monitoring:监控 prometheuse 组件

kubecube-thanos:监控 thanos 组件,仅在管控集群安装

示例如下:

apiVersion: hotplug.kubecube.io/v1
kind: Hotplug
metadata:
  annotations:
    kubecube.io/sync: "true"					## 同步信号,kubecube会将这个配置同步到各个集群
  name: common                                  ## 公共配置为cmmon,其余集群特殊配置为集群名字
spec:
  component:
  - name: audit                                 ## 审计日志
    status: disabled
  - name: logseer                               ## 日志管理组件
    namespace: logseer
    pkgName: logseer-v1.0.0.tgz
    status: disabled                            ## 启停标识:这里disabled为禁用
  - name: logagent                              ## 日志采集代理组件
    namespace: logagent
    pkgName: logagent-v1.0.0.tgz
    status: enabled                             ## 启停标识:这里enabled为启用
    env: |                                      ## 环境变量
      clustername: "{{.cluster}}"               ## {{.cluster}} 程序会自动注入集群名字替换
  - name: kubecube-monitoring                   ## 监控组件
    namespace: kubecube-monitoring
    pkgName: kubecube-monitoring-15.4.7.tgz
    status: enabled
    env: |
      grafana:
        enabled: false
      prometheus:
        prometheusSpec:
          externalLabels:
            cluster: "{{.cluster}}"
          remoteWrite:
          - url: http://10.173.32.42:31291/api/v1/receive      
  - name: kubecube-thanos                       ## 监控thanos组件
    namespace: kubecube-monitoring
    pkgName: thanos-3.18.0.tgz
    status: disabled
status:                                         ## message显示各个组件运行状态,phase显示总体运行状态
  message: '{"kubecube-monitoring":"release is running","kubecube-thanos":"release    
    is running","logagent":"release is running","logseer":"release is running"}'
  phase: running

每一个组件基本包含5个要素,在 spec.component 下:

name:组件名称

namespace:指定组件部署的命名空间,若指定的命名空间不存在,会自动以该字段值去创建一个命名空间。

pkgName:安装包名称,安装包默认存放路径为 warden 容器里的 /root/helmchartpkg,以 emptydir 形式存在。

status:组件是否启用

env:环境变量配置

每一个要素都可以使用集群独特配置进行覆盖,未覆盖的要素则依然使用 common 里的配置。

管控集群配置说明

Pivot-cluster 配置是管控集群配置,即 KubeCube 所在的集群。集群独特的配置会与 common 的配置结合,用于个性化配置集群组件,结合时遇到相同字段pivot-cluster 优先。

apiVersion: hotplug.kubecube.io/v1
kind: Hotplug
metadata:
  annotations:
    kubecube.io/sync: "true"            ## 同步信号,kubecube会将这个配置同步到其他集群
  name: pivot-cluster                   ## 与集群名字一致,指明这是pivot-cluster这个集群的热插拔配置
spec:
  component:
  - name: logseer                       ## 日志管理组件
    status: enabled                     ## 结合common设置为disabled,这里设置为enabled,标识其余集群不启用,pivot-cluster集群启用
  - name: kubecube-monitoring
    env: |
      grafana:
        enabled: true
      prometheus:
        prometheusSpec:
          externalLabels:
            cluster: "{{.cluster}}"
          remoteWrite:
          - url: http://thanos-receive:19291/api/v1/receive      
  - name: kubecube-thanos
    status: enabled
    env: |
      receive:
        replicaCount: 1
        replicationFactor: 1      
status:
  message: '{"kubecube-monitoring":"release is running","kubecube-thanos":"release
    is running","logagent":"release is running","logseer":"release is running"}'
  phase: running

2 - 通过 hotplug 启用 loggie

KubeCube 使用 hotplug 热插拔方式集成 Loggie,用户可以通过打开 hotplug 中关于日志部分的开关来开启 Loggie。我们有两个时间点可以用来开启 Loggie。

在使用 Helm 安装 KubeCube 时

在使用 Helm 安装 KubeCube 时,我们可以设置以下 values 来开启 Loggie。

安装管控集群时的参数如下:

# pivot-value.yaml
...
global:
  # set "enabled" if wanna open log application.
  hotPlugEnable:
    pivot:
      logseer: "enabled" 
      logagent: "enabled"
      elasticsearch: "enabled"
...

安装计算集群时的参数如下:

# member-value.yaml
...
global:    
  # set "enabled" if wanna open log application.
  hotPlugEnable:
    common:
      logagent: "enabled"
...

在使用过程中

在使用过程中,我们也可以通过直接修改 hotplug 的方式来开启 Loggie。

修改管控集群的 hotplug 如下:

kubectl edit hotplug pivot-cluster

# pivot-cluster
apiVersion: hotplug.kubecube.io/v1
kind: Hotplug
metadata:
  name: pivot-cluster
spec:
  component:
  - name: elasticsearch
    namespace: elasticsearch
    pkgName: elasticsearch-7.8.1.tgz
    status: enabled # 将该值设为 enabled 来开启日志
...
  - name: logseer
    status: enabled # 将该值设为 enabled 来开启日志
  - name: logagent
    status: enabled # 将该值设为 enabled 来开启日志

修改计算集群的 hotplug 如下:

kubectl edit hotplug common

# common
apiVersion: hotplug.kubecube.io/v1
kind: Hotplug
metadata:
  name: common
spec:
  component:
...
  - env: |
      clustername: "{{.cluster}}"
      elasticsearch:
        address: x.x.x.x:32200 # 填写管控集群的 es 的 nodeport svc 访问地址,一般为 {nodeIP}:32200
    name: logagent
    namespace: logagent
    pkgName: logagent-1.3.0.tgz
    status: enabled # 将该值设为 enabled 来开启日志