Skip to content

Latest commit

 

History

History
56 lines (49 loc) · 3.13 KB

说明文档.md

File metadata and controls

56 lines (49 loc) · 3.13 KB

kruise-game-sidecar

License Go Report Card codecov Contributor Covenant

英文 | 中文

概览

目前kruise提供了服务质量探测和热更新能力,但是这些能力都是在kruise-daemon中实现的,而在serverless场景下,kruise-daemon无法正常使用。 因此考虑通过sidecar机制,实现游戏场景serverless下的增强功能;该sidecar中包含了多种plugin,可以解决游戏场景下的不同问题。将该sidecar集成与pod中即可使用; 另外,sidecar中提供了完善可扩展的plugin 管理机制,可以根据自己的需求,方便的新增自己需要的plugin;

sidecar设计架构

sidecar-struct

  1. 创建一个configmap,用于保存sidecar中各个plugin需要的配置。每个plugin可以自定义自己需要的配置,将其存放到该configmap即可;
apiVersion: v1
kind: ConfigMap
metadata:
   name: kidecar-config
   namespace: sidecar
data:
   config.yaml: |
      plugins:
        - name: hot_update
          config:
            loadPatchType: signal # 通过信号量的方式触发热更新
            signal:
              processName: 'nginx: master process nginx' ## 触发主进程热更新的进程名称
              signalName: SIGHUP ## 触发主进程热更新时,需要的发送的信号量
            storageConfig:
              inKube:
                annotationKey: sidecar.vke.volcengine.com/hot-update-result # 将热更新结果保存到pod的哪个anno中
              type: InKube
          bootorder: 0
      restartpolicy: Always
      resources:
        CPU: 100m
        Memory: 128Mi
      sidecarstartorder: Before ## Sidecar 的启动顺序,是在主容器之后还是之前
  1. sidecar会根据configmap配置的plugin,依次启动并且运行各个plugin
  2. plugin运行后,可以将结果进行持久化。sidecar中预设了一些结果保存机制,可以将结果保存到pod的anno/label中,或者自定义CRD的指定位置; 在configmap中plugin配置的storageConfig中设置即可;另外,plugin开发人员也可以自己实现结果持久化,将plugin结果保存到预期位置。

支持的plugin

目前预设了两种plugin,分别是热更新plugin和服务质量探测plugin;

  • 热更新plugin:支持pod的热更新,支持通过信号量的方式触发热更新;
  • 服务质量探测plugin:支持游戏服的服务质量探测,支持通过http的方式探测pod的服务质量;

进行下一步