KamoCRM 不在其他人的平台即服务上运行,而是在我们构建、运营和唤醒的 RKE2 Kubernetes 群集上运行,并且拥有我们自己的存储、入侵、证书自动化、虚拟化和映像注册表。 我们在这里学到的关于交付可持续运行的软件的所有知识都是我们自己花费的。
| 措施 | 价值 | 资料来源 | 已计量 |
|---|---|---|---|
| 群组中的部署 | 106 | kubectl get deploy --all-namespaces | |
| 跑步舱 | 267 | kubectl get pods --all-namespaces | |
| 有状态工作负载 | 22 | kubectl get statefulsets --all-namespaces | |
| 命名空间 | 19 | kubectl get namespaces | |
| 自动管理下的 TLS 证书 | 211 | kubectl get certificate --all-namespaces (cert-manager) | |
| 入境路线 | 40 | kubectl get ingressroute --all-namespaces (Traefik) | |
| 控制平面节点正常运行时间 | 266 days | kubectl get nodes -o wide, AGE column | |
| Kubernetes版本 | v1.35.6+rke2r1 | kubectl get nodes -o wide, VERSION column |
它教会了我们什么建筑
Managed Kubernetes 存在,它很好,选择它将从我们的生活中消除整个类别的问题。 我们运行自己的平台,因为该平台以合理的价格为您提供了托管产品无法为您托管的东西 — — 需要真正网络控制的电话、需要可预测 UDP 路径的 WebRTC 媒体、需要硬件的推理 — — 并且因为销售基础设施能力的公司应该能够展示它,而不是描述它。
群集包含 Longhorn 用于复制块存储、Traefik 用于入口、cert-manager 用于按主机名颁发证书、KubeVirt 用于真正需要虚拟机的工作负载以及私有注册表。 仅凭证书就可以很好地说明操作系统为什么会教导读取不会教导的事情:证书按完全限定名称并串行颁发,因此,如果租户添加了主机名并且不等待,就会看到正好一个主机上的自签名证书,并得出结论认为整个系统已失效。
失败是有教益的,因为只有你自己的失败才是有教益的。 一个由于连接池保存了较旧的目录版本而导致每个服务返回错误达 15 分钟的架构迁移;一个节点的第二个网络接口间歇性地损坏了大量传输,这在很长一段时间里看起来像是软件错误;在垃圾收集器不同意之前,内存限制都很好。
这就是我们所卖出的区别。 一个从未运行过它所建造的开发公司会给你一个储存库和一个发票,而第一个生产事件将是你自己的。 我们写运行手册是因为我们在凌晨两点需要它们。
建于
- Kubernetes (RKE2)
- Traefik
- cert-manager
- Longhorn
- KubeVirt
- containerd
- Docker registry
- Ubuntu
