Skip to content
This repository was archived by the owner on Apr 15, 2025. It is now read-only.

STRRL/sample-controller-rabbit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sample-controller-rabbit

前言

最近在学习 k8s 中 CRD, controller 相关的东西, 但是又接触不到项目, 没有什么可以值得真正上手写一写的东西.

所以自己想了一个这个叫做 sample-controller-rabbit 的项目, 利用 kubernetes controller 的一些特性, 来做一些有意思(无聊)的事情.

设定

在一个假设的只有兔子的世界(CRD, rabbit-world)中, 生活着一群可爱的兔子(CRD rabbit), 兔子在这个世界中生活, 繁衍, 死亡.

兔子以兔子窝(CRD rabbit hole)为单位分批生存, 兔子窝可以理解为一个家庭. 同一个窝里面有父(1)母(1)以及孩子(0..n).

兔子有以下几个属性:

  • 名字
  • 性别
  • 第 n 代

兔子窝有以下几个属性:

  • 名字

规则:

  • 世界最开始有一个兔子窝(eden), 里面有两只兔子(adam eve).
  • 现实世界每过一分钟, 视为兔子的年龄增加 1.
  • 兔子窝中的父母会每增加 1 年龄, 生一批新兔子.
  • 年龄合适(值域[3, 6])的两只异性兔子会选择建立新的兔子窝, 并繁育后代.
  • 兔子每次繁衍后代会增加[2, 4]只新的兔子, 性别比例 1:1.
  • 当种群数量超过某个阈值时, 兔子的繁衍欲望会为 0, 不再有新的兔子产生.
  • 当兔子大于 12 岁时, 兔子会以 ( 当前年龄 - 12 ) / 12 的几率死亡.

设计与实现

我想要的效果是设定一个兔子种群数量的预期值, 然后兔子们以某种规则慢慢 scale 到预期的数量.

而且兔子也并不是稳定的, 随时有兔子死亡.

兔子

兔子要有一个 POD, 提供 WEB 服务, 输出自己的状态. 并在自己死亡的时候 kill 掉自己.

兔子的属性以及繁衍欲望等相关的数据通过 Downward API 交给兔子得知.

上帝 controller

  • 在兔子数量少于期望值的时候, 会找出适婚年龄的兔子来繁衍.
  • "埋葬" 死亡的兔子.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors