英文 | 中文
目前kruise提供了服务质量探测和热更新能力,但是这些能力都是在kruise-daemon中实现的,而在serverless场景下,kruise-daemon无法正常使用。 因此考虑通过sidecar机制,实现游戏场景serverless下的增强功能;该sidecar中包含了多种plugin,可以解决游戏场景下的不同问题。将该sidecar集成与pod中即可使用; 另外,sidecar中提供了完善可扩展的plugin 管理机制,可以根据自己的需求,方便的新增自己需要的plugin;
- 创建一个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 的启动顺序,是在主容器之后还是之前
- sidecar会根据configmap配置的plugin,依次启动并且运行各个plugin
- plugin运行后,可以将结果进行持久化。sidecar中预设了一些结果保存机制,可以将结果保存到pod的anno/label中,或者自定义CRD的指定位置; 在configmap中plugin配置的storageConfig中设置即可;另外,plugin开发人员也可以自己实现结果持久化,将plugin结果保存到预期位置。
目前预设了两种plugin,分别是热更新plugin和服务质量探测plugin;
- 热更新plugin:支持pod的热更新,支持通过信号量的方式触发热更新;
- 服务质量探测plugin:支持游戏服的服务质量探测,支持通过http的方式探测pod的服务质量;