K8S兩種安裝方式如何選擇?\nKubeadm VS kubernetes 二進制\n\n1、kubeadm 方式部署(推薦)\n推薦理由:\n\n官方推薦:kubeadm 是 Kubernetes 官方提供的工具,用于快速搭建生產級別的 Kubernetes 集群,尤其適合于初次部署和對集群穩定性要求較高的場景。\n簡化部署:kubeadm 自動處理了大量的初始化步驟,包括證書生成、網絡配置、Pod 網絡插件安裝等,大大減少了手動操作和潛在錯誤。\n一致性:只要集群遵循最佳實踐和官方規范,就易于維護和升級。\n可擴展性:適用于從小規模到大規模集群的部署,支持 HA(高可用)配置。\n社區支持:有豐富的文檔和社區支持,便于排查問題和獲取最新更新。\n易于集成:對于集成自動化工具 Ansible 更加容易,也方便集成到公司運管平臺。\nKubernetes 二進制文件部署\n適用場景:\n\n完全手動控制:如果小伙伴們希望對每個組件的安裝細節有完全的掌控權,比如在某些特殊環境中無法或不愿意使用自動化工具時。\n定制化需求:可能有一些特殊的網絡配置、安全策略或其他自定義需求,需要逐一手動配置。\n學習和理解原理:對于想深入了解 Kubernetes 內部工作原理的人來說,手動部署有助于更好地理解各個組件之間的交互和依賴關系。\n注意:\n\n二進制文件部署方式雖然更為靈活,但也意味著更高的復雜性和出錯風險,特別是對于大型集群或多節點高可用配置。\n維護和升級過程也相對繁瑣,需要手動執行一系列命令來更新各個組件。\n除非有特定需求或學習目的,一般情況下,對于生產環境的部署,建議使用 kubeadm,因為它能提供更穩定、便捷且符合標準的操作流程。而對于想要深入學習 Kubernetes 架構時,可以選擇二進制文件部署方式來了解集群內部構造。\n\n二、集群網絡組件的選擇\n在 Kubernetes 集群中,選擇合適的網絡解決方案非常重要,因為它們負責提供跨節點容器間的服務發現、通信以及網絡策略實施等功能。\n\nFlannel:\n推薦理由:\n簡單易用:Flannel設計簡潔,易于安裝和配置,特別適合于初學者和小型集群。\n跨主機通信:它通過在集群內分配一個扁平化的IP地址空間來保證每個 Pod 都有一個唯一的IP地址,從而使得 Pod 之間可以直接通信。\n支持多種后端:包括 VXLAN、Host-Gateway 2種模式,可根據底層網絡基礎設施靈活選擇。\n局限性:\n功能相對有限:相較于 Calico,Flannel 在網絡策略方面的功能較弱,不提供精細化的網絡策略控制。\nCalico:\n推薦理由:\n精細化網絡策略:Calico 提供了強大的網絡策略管理和實施能力,可以精確控制 Pod 間的流量。\n性能優越:由于其基于 BGP 協議,數據路徑效率較高,特別適合大規模集群和對性能敏感的應用場景。\n安全性:除了網絡策略,Calico 還支持網絡隔離、微分段等高級安全特性。\n多云兼容:能夠很好地適應公有云、私有云和混合云環境。\n復雜度:\nCalico 的配置和維護相比 Flannel 來說稍微復雜一些,尤其是涉及到 BGP 路由配置時。\nCNI 網絡方案優缺點及最終選擇:\n至于怎么選擇,我覺得需要先考慮幾個問題,結合自己的業務場景去做應用:\n\n1、需要細粒度網絡訪問控制?–> flannel不支持,calico支持(ACL);\n\n2、追求網絡性能?–> flannel(host-gw),calico(BGP);\n\n3、當前架構下是否可以跑BGP協議?–> 公有云有些不支持;\n\n4、集群規模多大?–> 100臺node左右推薦(flannel,host-gw)維護方便;\n\n5、是否有維護能力?–> calico維護復雜,路由表!