Katyusha
katyusha - Катюша - カチューシャ - the Load Balancing Module of the ikukantai Fleet
Install / Use
/learn @bonavadeur/KatyushaREADME
Katyusha - Катюша - カチューシャ
(Snowdrift Katyusha - Tuyết Phong Katyusha - 地吹雪のカチューシャ)
Katyusha-sama is the Load Balancing Module of the ikukantai Fleet.

1. Motivation
katyusha supports deploying Load-Balancing Algorithm in ikukantai Fleet without deeping into Knative source code.
The name katyusha is inspired by the character Katyusha in the anime Girls und Panzer. katyusha and nonna form a complete Load Balancing system for the ikukantai Fleet. This Load Balancing system uses piggybacking mechanism to update load status as fast as possible, much like how Nonna always carries Katyusha on her back in anime Girls und Panzer.
katyusha is also inspired by the Soviet BM-13 Katyusha rocket launcher in the Great Patriotic War (just like Katyusha in Girls und Panzer). Our Load Balancing system operates as efficiently and powerfully as Katyusha!
According to the anime Girls und Panzer, the character Katyusha really hates speaking Russian and always demands team members speak Japanese. Therefore, some prominent Golang structs and packages in this source code are named in Japanese! 日本語を話してくださいよ!!!
2. Structure

3. Installation
3.1. Requirement
- ikukantai Fleet is deployed, version >= 2.2
- Go is installed, version >= 1.22.4
- Docker is installed.
dockercommand can be invoked without sudo - upx is installed, version >= 4.2.4
3.2. Config katyusha as image of Activator
Let's assume that the nodes in your cluster are named node1, node2, node3. See spec.template.spec.affinity to fill this information into the activator-deployment.yaml file correctly.
Change Activator from deployed as DaemonSet to Deployment
$ kubectl -n knative-serving delete daemonset activator
$ kubectl apply -f config/activator-deployment.yaml
New raising Activator will deployed with image katyusha:dev
$ kubectl -n knative-serving get deploy activator -o yaml | grep image:
image: docker.io/bonavadeur/katyusha:dev
3.3. Add configs to Configmap for Katyusha
katyusha uses these configs in ConfigMap config-ikukantai in namespace knative-serving:
| Config | Description | Value | Example |
|-|-|-|-|
| ikukantai-enable-katyusha | enable/disable katyusha | bool | "true", "false" |
| katyusha-threads | number of processing threads in katyusha | integer | "10" |
| katyusha-enable-junbanmachi | enable/disable Layer-1 Queuing feature | bool | "true", "false" |
| katyusha-enable-fukabunsan | enable/disable Load Balancing feature | bool | "true", "false" |
| katyusha-enable-outoushuugou | enable/disable Response Pool feature | bool | "true", "false" |
| katyusha-junbanmachi-concurrent-request | number of concurrent request in Layer-1 Queue | integer | "10" |
Example:
apiVersion: v1
kind: ConfigMap
metadata:
name: config-ikukantai
namespace: knative-serving
...
data:
...
ikukantai-enable-katyusha: 'true'
katyusha-enable-fukabunsan: 'true'
katyusha-enable-junbanmachi: 'true'
katyusha-enable-outoushuugou: 'true'
katyusha-junbanmachi-concurrent-request: '10'
katyusha-threads: '10'
...
4. Development
First, apply a demo application for nonna development:
$ kubectl apply -f config/hello.yaml
Take a look in build.sh. There are two options for building katyusha image:
- ful: build
katyushaimage from source, fastly but large size of image - push: like ful options, but slower and smaller size of image because the compression level is increased and then image will be pushed to the registry
$ ./build.sh ful # faster but larger image size
$ ./build.sh push # slower but smaller image size
5. Author
Đào Hiệp - Bonavadeur - ボナちゃん
The Future Internet Laboratory, Room E711 C7 Building, Hanoi University of Science and Technology, Vietnam.
未来のインターネット研究室, C7 の E 711、ハノイ百科大学、ベトナム。

Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
