各位前輩好
最近因為團隊需求正在學習k8s
想請問一下學習的方向
一般而言小型團隊在部署k8s方面會使用自架私有image倉庫
還是會使用gitlab/github的 CI/CD
之前看過有團隊自行在k8s的cluster內開一個node來架設私有倉庫
但是使用gitlab或github上的CI/CD似乎也是一個選擇
機器方面會使用常見的GCP之類的VPS自行架設節點或是直接使用類似GKE的k8s服務?
會這麼問是因為如果使用GKE那麼之後服務將會被GKE綁死
如果自行架設的話可以隨時搬移到別的VPS或是自己的server
(還有比較便宜)
但是GKE聽說也是常見的選擇
想請問通常選擇上會有哪些斟酌點
自建或外購 Image Repository, 純粹看你們操作與安全上的考量. 人數多的話, 外購的成本會提高, 如果加上 CI/CD 可能會更高, 好處是你們不用自己維運 Repository; 自建不會因為人數增加而增加太多成本, 拉 Image 不需要去外網, 有些實體環境隔離非常嚴格的必須這樣做; 但是要有人負責維運, 不然 Repository 萬一掛掉沒有馬上修好的話, 那可是甚麼都不能部署....
我個人不喜歡使用雲業者包裝提供的 PaaS 服務, 以免被綁死在某一個特定的雲上面; 當然, 對開發上層應用服務的人來說, 用 GKE, EKS, 或是 AKS, 好像 CI/CD 都沒有差別, 反正 API 和 docker 指令都一樣; 但若你要負責維運底層 k8s 元件的話, 不同的雲 PaaS 有不同的特性和指令, 換雲要經歷一個痛苦的適應期...
如果你們團隊內缺乏足夠的 k8s 維運經驗, 自建的風險和成本會很高 (例如: Master node 掛掉, control plane API 沒反應, etcd cluster 掛不上來...), 若為了快速上線, 靠現成提供的 PaaS 比較不需要去擔心這些 (上面的問題還是會發生, 只是雲業者會幫你修好).
但對維運 Infra 的專業團隊來說, 雲上面的 PaaS 不讓你碰底層管理元件, 會讓我們沒有安全感 (他們的管理元件其實蠻多雷的, 經常要去問一下是我們操作錯誤? 還是剛好踩雷了....), 查修也多了一個大黑箱不能進去查, 要監控手也不容易伸進去, 換版本還要等雲業者自己準備好 (通常會落後半年以上), 種種不便會讓我們選擇自建....
當然, 自建的前提是你們有 24hr 專責輪班的維運團隊, 而且每位值班者都有能力查修 k8s....你要把 Programmer 半夜挖起來查 k8s 底層的問題, 我想每一位寫程式的人都不想碰....
你可以看一下維運 k8s 底層所需要的技能: