Jump to...
redirecting...

Log for YSITD

[photo](media:AgACAgUAAx0CPZbPgAABGn1qZ2NaWUypxNHygMfeJQY0A3T_f8EAAjfAMRtoThhXkIKnBPVOmtsBAAMCAANzAAM2BA@telegram)
愛的朋友,你打造了一個 Kubernetes (★ 100 分)

親愛的朋友,你試圖以簡單技術來執行容器,認為 Kubernetes 太過複雜且不適合簡單專案。然而,歷經六個月後,你的專案卻堆滿了易碎的 shell scripts,只要生產環境稍有變動便會崩潰。試圖用 Docker Compose 解決問題似乎是個選項,但這依然不是全方位的方案。當面對部署、滾動更新、回滾與擴展等需求時,你的 deploy.sh 指令碼越寫越長,仍舊無法真正降低維護負擔。

當某些需求,例如高可用性或特殊硬體,迫使你必須擴展到第二臺伺服器時,複雜性又加劇。你不得不參數化部署指令碼、配置防火牆規則,甚至嘗試使用 Tailscale 建立覆蓋式網路並提供服務發現功能。然而,隨著指令碼越來越定製化且難以維護,團隊成員很難掌握那些未經測試的 tarball 處理、模糊的防火牆規則以及 VM 上未記錄的 sysctl 變更。於是,你引入了 Ansible,試圖將 VM 當作不可變資源並進行版本控制,一切看似比 Kubernetes 叢集更易於管理。

最終,情況升級到需要應用程式能夠程式化地生成其他容器。這樣的需求迫使你暴露不安全的 Docker socket,於是又編寫了一個額外的服務來安全地代理 Docker API 介面。經過這一系列的努力,你以為自己成功避免了 Kubernetes,卻在過程中建立了一個擁有標準配置格式、部署方式、覆蓋網路、服務發現、不可變節點與 API 伺服器的系統。親愛的朋友,你無意間重建了 Kubernetes。

👥 81 則討論、評論 💬
https://news.ycombinator.com/item?id=42226005