關于 kubernetes 的9個核心問題解答

本文通過提問題的方式對在 Kubernetes 集群建設中,不同的網絡組件、存儲方案、CI/CD工具、監控系統、網關服務以及服務網格(如 Istio)等選擇給出一定的參考解答;但在實際工作中需要緊密結合業務規模、系統性能需求、安全性要求以及團隊維護能力等因素;每個企業在選擇和采用這些技術時,應當充分考慮自身業務需求、現有技術棧的兼容性以及團隊的技術儲備與成長潛力。

文章目錄

前言

一、如何選擇K8S的安裝方式?

二、如何選擇K8S集群網絡組件?

三、k8s集群中持久化存儲方案如何選擇?

四、是否 Helm 可作為線上應用管理工具?

五、CICD 工具如何選擇?

六、k8s集群應用網關如何選擇?

七、k8s集群監控平臺如何選擇?

八、如何選擇K8S中的可觀察性工具?

九、Istio 是否具有全面應用的可行性?

總結


前言

1. 如何選擇K8S的安裝方式?

2. 如何選擇K8S集群網絡組件?

3. k8s集群中持久化存儲方案如何選擇?

4.?是否 Helm 可作為線上應用管理工具?

5.?CICD 工具如何選擇?

6. k8s集群應用網關如何選擇?

7. k8s集群監控平臺如何選擇?

8. 如何選擇K8S中的可觀察性工具?

9. 在K8S集群中,Istio 是否具有全面應用的可行性?

一、如何選擇K8S的安裝方式?

Kubeadm VS kubernetes 二進制

kubeadm 方式部署(推薦)

推薦理由

  1. 官方推薦:kubeadm?是 Kubernetes 官方提供的工具,用于快速搭建生產級別的 Kubernetes 集群,尤其適合于初次部署和對集群穩定性要求較高的場景。
  2. 簡化部署:kubeadm?自動處理了大量的初始化步驟,包括證書生成、網絡配置、Pod 網絡插件安裝等,大大減少了手動操作和潛在錯誤。
  3. 一致性:只要集群遵循最佳實踐和官方規范,就易于維護和升級。
  4. 可擴展性:適用于從小規模到大規模集群的部署,支持 HA(高可用)配置。
  5. 社區支持:有豐富的文檔和社區支持,便于排查問題和獲取最新更新。
  6. 易于集成:對于集成自動化工具 Ansible 更加容易,也方便集成到公司運管平臺。

Kubernetes 二進制文件部署

適用場景

  1. 完全手動控制:如果小伙伴們希望對每個組件的安裝細節有完全的掌控權,比如在某些特殊環境中無法或不愿意使用自動化工具時。
  2. 定制化需求:可能有一些特殊的網絡配置、安全策略或其他自定義需求,需要逐一手動配置。
  3. 學習和理解原理:對于想深入了解 Kubernetes 內部工作原理的人來說,手動部署有助于更好地理解各個組件之間的交互和依賴關系。

注意

  • 二進制文件部署方式雖然更為靈活,但也意味著更高的復雜性和出錯風險,特別是對于大型集群或多節點高可用配置。
  • 維護和升級過程也相對繁瑣,需要手動執行一系列命令來更新各個組件。

除非有特定需求或學習目的,一般情況下,對于生產環境的部署,建議使用?kubeadm,因為它能提供更穩定、便捷且符合標準的操作流程。而對于想要深入學習 Kubernetes 架構時,可以選擇二進制文件部署方式來了解集群內部構造。

二、如何選擇K8S集群網絡組件?

在 Kubernetes 集群中,選擇合適的網絡解決方案非常重要,因為它們負責提供跨節點容器間的服務發現、通信以及網絡策略實施等功能。

Flannel:

  • 推薦理由
    • 簡單易用:Flannel設計簡潔,易于安裝和配置,特別適合于初學者和小型集群。
    • 跨主機通信:它通過在集群內分配一個扁平化的IP地址空間來保證每個 Pod 都有一個唯一的IP地址,從而使得 Pod 之間可以直接通信。
    • 支持多種后端:包括 VXLAN、Host-Gateway 2種模式,可根據底層網絡基礎設施靈活選擇。
  • 局限性
    • 功能相對有限:相較于 Calico,Flannel 在網絡策略方面的功能較弱,不提供精細化的網絡策略控制。

Calico:

  • 推薦理由
    • 精細化網絡策略:Calico 提供了強大的網絡策略管理和實施能力,可以精確控制 Pod 間的流量。
    • 性能優越:由于其基于 BGP 協議,數據路徑效率較高,特別適合大規模集群和對性能敏感的應用場景。
    • 安全性:除了網絡策略,Calico 還支持網絡隔離、微分段等高級安全特性。
    • 多云兼容:能夠很好地適應公有云、私有云和混合云環境。
  • 復雜度
    • Calico 的配置和維護相比 Flannel 來說稍微復雜一些,尤其是涉及到 BGP 路由配置時。

CNI 網絡方案優缺點及最終選擇:

至于怎么選擇,我覺得需要先考慮幾個問題,結合自己的業務場景去做應用:

1、需要細粒度網絡訪問控制?--> flannel不支持,calico支持(ACL);

2、追求網絡性能?--> flannel(host-gw),calico(BGP);

3、當前架構下是否可以跑BGP協議?--> 公有云有些不支持;

4、集群規模多大?--> 100臺node左右推薦(flannel,host-gw)維護方便;

5、是否有維護能力?--> calico維護復雜,路由表!

三、k8s集群中持久化存儲方案如何選擇?

在 Kubernetes 集群中選擇持久化存儲方案時,需要考慮的因素還是蠻多的。不考慮外在因素,要看咱們整個團隊或負責這塊的同事是否專業于這塊技術棧,記住,公司最寶貴的資源永遠是數據(勿噴),下面我來通過幾個不同的維度來分析下能夠滿足且可挑選的幾個存儲解決方案:

  1. 成本
  • NFS: 一種成熟且廣泛應用的網絡文件系統,對于已有NAS設備的企業,利用NFS作為持久化存儲是一種低成本的選擇,只需安裝NFS客戶端和服務端即可。
  • CEPH: 開源分布式存儲系統,提供塊存儲(RBD)、文件系統(CephFS)和對象存儲(RGW)。在集群規模較大、預算充足且希望利用硬件冗余提高數據安全性的場景下,CEPH是性價比較高的選擇,因其可水平擴展并提供高可用性。
  • MiniO(MinIO):是一款開源的對象存儲系統,對于需要大量非結構化數據存儲,如圖片、視頻、日志等,MiniO可以作為S3兼容的對象存儲服務,成本較低,且易于部署和管理。
  1. 性能與擴展性
  • NFS: 性能受網絡狀況影響較大,不適合大規模并發讀寫或高 I/O 密集型應用。
  • CEPH: 具備優秀的擴展性和性能優化,適合大數據分析、數據庫存儲等高性能應用場景。
  • MiniO: 適合大規模對象存儲場景,性能表現良好,尤其是在讀寫對象而非文件級別的操作上有優勢。
  1. 數據可靠性與安全性
  • NFS: 數據可靠性依賴于 NFS 服務器的穩定性和備份策略,安全性可通過權限管理增強。
  • CEPH: 提供副本集、糾刪碼等機制保證數據高可用性和容災能力,自帶加密選項以增加安全性。
  • MiniO: 支持多節點分布和糾刪碼,可提供企業級數據保護,同時也支持多種加密手段。
  1. Kubernetes集成程度
  • NFS: Kubernetes 可以通過 PV/PVC 和 StorageClass 支持 NFS,基于原生的動態供應功能,省時省力。
  • CEPH: 提供 CSI(Container Storage Interface)驅動,支持動態存儲類和持久卷的動態供應,無縫集成到Kubernetes生態系統中。
  • MiniO: 也有相應的 CSI 插件,可以作為 Kubernetes 的持久化存儲,同樣支持動態卷供應。
  1. 運維難度與社區支持
  • NFS: 配置相對簡單,但其設計原理基于網絡文件系統,可能存在一定的性能挑戰。
  • CEPH: 配置較為復雜,但因其廣泛采用和活躍的社區,有大量的文檔和案例可供參考。
  • MiniO: 相比之下,部署和運維較為簡便,社區活躍,且有詳細的 Kubernetes 集成指南。

總結:

  • 若追求成本效益和快速部署,小型集群或非關鍵任務可選用 NFS;
  • 對于大規模集群、需要高可用性和高性能存儲,CEPH 是理想之選;
  • 若側重于非結構化數據的長期存儲和分發,MiniO 是一個出色的對象存儲解決方案。

還是那句話,不是我不給大家結論,實在是考量的因素有點多。在實際應用中,還需要結合企業內部的IT基礎設施現狀、運維能力以及未來的擴容計劃做出決策。

四、是否 Helm 可作為線上應用管理工具?

這個我可以先給大家一個結論,我們作為一家某個行業內的互聯網龍頭企業,整個業務鏈都是基于 Helm 作為線上應用管理工具使用的。

另外 Helm 在云原生領域中得到了廣泛的采納和認可。我來通過如下幾點來給大家聊下 Helm 在線上應用管理中的適用性:

  1. 簡化部署與升級:Helm 提供了統一的、聲明式的部署方式,允許通過簡單的命令行工具即可安裝、升級和刪除復雜的 Kubernetes 應用。線上應用的生命周期管理變得更加高效和可靠。
  2. 版本控制與回滾:Helm 采用了 Chart 的概念,包含了應用的所有YAML資源配置以及依賴關系,支持版本管理和應用歷史記錄。咱們可以輕易地對線上應用進行版本升級和回滾,這對于應對線上故障恢復和版本迭代尤為關鍵。
  3. 標準化與復用:Helm Chart 作為一種標準化的包格式,允許應用開發者封裝應用及其依賴項,形成可重復使用和共享的軟件包。這有利于組織內部的標準化管理,也方便與其他開發者分享和交流。
  4. 配置管理:Helm 允許通過 Values.yaml 文件進行參數化配置,使得同一 Chart 可以根據不同的環境變量和配置參數進行部署,滿足線上環境多樣化的配置需求。
  5. 安全性與審計:Helm 通過數字簽名和驗證機制增強了應用的安全性,同時每一次的部署變更都可通過 Helm 的歷史記錄來進行審計跟蹤。
  6. 生態豐富:Helm 擁有龐大的社區支持和豐富的軟件倉庫,許多流行的 Kubernetes 應用都有對應的官方或社區維護的 Chart,極大地方便了線上應用的管理。

我們當前的團隊小伙伴們,每個人負責幾個業務線,同時大家會根據當前所負責的業務屬性不定期開發、優化、迭代某類應用的 Charts 包,這樣對于 DEV 和 OPS 的銜接更加的密切,從而更加的了解線上應用的狀態和配置。

另外,無論是從簡化運維、保障應用一致性還是提高團隊協作效率的角度來看,Helm 都是線上 Kubernetes 應用管理的理想選擇。通過使用 Helm,運維人員能夠更好地聚焦于應用本身的服務質量和業務發展,而不必花費過多精力在基礎設施的復雜部署流程上。

五、CICD 工具如何選擇?

在 Kubernetes 技術棧中,CICD 這個話題,大家正確看待就好了,不要總是聽別人說,每個技術棧的發展和應用都有各自的優勢,Jenkins 發展至今,難道就通過 kubernetes 某些層面直接否定?不現實的。我們企業仍然是基于 Jenkins 貫穿整個 CICD 的上線流程,而且沒有遇到多少因為自身瓶頸卡脖子的問題,雖然業界有些軟件與 kubernetes 的匹配度較高,但是真的適用你們企業的?還是通過幾個維度來做個分析吧:

集成與兼容性

  • Jenkins:是最老牌的持續集成工具之一,通過 Kubernetes 插件可以非常好地與 K8s 集成,能夠在 Kubernetes 集群中創建 Jenkins Slave Pod 實現彈性伸縮和資源優化。同時,Jenkins 有著豐富的插件生態,可以與各種 Git 倉庫、Harbor、以及 Kubernetes 自身的 API 進行深度集成。
  • ArgoCD:專注于 Continuous Delivery(CD),作為 Kubernetes 的原生 CD 工具,它充分利用了 K8s 的聲明式 API 對象(如 YAML 文件)來實現應用的部署和管理。ArgoCD 強調 GitOps 模式,將 Kubernetes 應用的整個生命周期管理與 Git 版本控制系統緊密綁定,支持自動同步和差異檢測。
  • GitLab CI/CD:GitLab 自帶了一整套完整的 CI/CD 工具鏈,不僅限于構建、測試和部署,還包括從代碼托管、靜態代碼分析、安全掃描到制品庫管理等多個環節。GitLab CI/CD 支持與 Kubernetes 集成,可以輕松地將應用部署到 Kubernetes 集群,并提供了一系列預設的 Kubernetes 部署模板。

易用性與學習曲線

  • Jenkins:高度可定制,但這也意味著學習和配置成本相對較高,對于復雜場景非常靈活,但對于初級用戶可能需要更多時間去理解和掌握。
  • ArgoCD:側重于應用部署和管理,概念清晰,對于熟悉 Kubernetes 的 DevOps 團隊而言,學習曲線相對較平緩,易于上手。
  • GitLab CI/CD:因集成在 GitLab 平臺中,所以對于已經使用 GitLab 的團隊來說,其 CI/CD 流程的配置非常直觀,YAML 配置文件 (gitlab-ci.yml) 易于編寫和維護,同時提供了圖形化界面輔助配置和監控。

自動化與擴展性

  • Jenkins:通過編寫 Groovy 腳本和使用各種插件,幾乎可以實現任何形式的自動化流程,但有時需要手工維護這些腳本和配置。
  • ArgoCD:專注于 Kubernetes 應用的自動化部署和運維,支持藍綠部署、滾動更新、灰度發布等高級策略,通過 GitOps 模式實現了持續部署的自動化循環。
  • GitLab CI/CD:內置了眾多自動化階段,支持流水線的可視化編排,且由于與 GitLab 無縫銜接,可以輕松實現從代碼提交到上線的完整自動化流程。

社區支持與生態

  • Jenkins:有龐大的社區支持,積累了大量的插件和教程,遇到問題容易找到解決方案。
  • ArgoCD:隨著 GitOps 理念的流行,ArgoCD 社區也在迅速壯大,尤其是在 Kubernetes 生態圈內,得到了廣泛的認可和支持。
  • GitLab CI/CD:作為一體化 DevOps 平臺的一部分,GitLab CI/CD 依托 GitLab 社區的強大實力,擁有活躍的開發者和使用者群體。

當然還有幾款大家在用的 CICD,就不一一的評價了。

對于 Kubernetes 集群的 CI/CD 工具選擇,如果是成熟的團隊、需要高度定制化流程,并且已經有 Jenkins 使用經驗,那么繼續使用 Jenkins 并配合 Kubernetes 插件是個不錯的選擇;

如果希望擁抱 GitOps,簡化應用部署和管理流程,ArgoCD 是一個很好的選擇;

而對于希望在一個平臺上完成全流程 DevOps 工作流,并且重視與代碼版本管理緊密集成的團隊,GitLab CI/CD 提供了一站式解決方案。

另外,在實際運用中,往往會選擇組合使用這些工具,比如 Jenkins 或 GitLab CI/CD 負責 CI 部分,然后使用 ArgoCD 負責 CD 部分,以實現最佳效果。

六、k8s集群應用網關如何選擇?

在 Kubernetes 技術棧中,選擇集群應用網關(Ingress Controller)是一項重要的決定,不同的 Ingress Controller 工具各有優劣,我選擇了下幾個較為熱門的網關,從幾個重要維度對比一下 ingress-nginx、nginx-ingress、APISIX 和 Kong:

  1. 功能完備性
  • Ingress-nginx:基于 Nginx 實現,由 Kubernetes 社區積極維護開源,提供基本的 Ingress 功能,包括 HTTP(S) 路由、TLS 終止、重寫規則等,對于常規需求有足夠的支持,但相比于其他工具可能在高級特性上略顯不足。
  • Nginx-ingress-controller:也是基于 Nginx,老牌負載均衡器,擁有更豐富的特性集,支持 Path 重寫、Session 親和性、全局速率限制等,更適合復雜的應用場景。
  • APISIX:是云原生的API網關,除了基本的 Ingress 功能外,還提供了更多的高級特性,如金絲雀發布、藍綠部署、服務熔斷、JWT認證、ACL等,特別適合微服務架構和 API 管理。
  • Kong:作為一款知名且成熟的 API 網關,除了 Ingress 的基本功能外,還有強大的插件系統支持,可以實現身份認證、限流、日志、監控等各種功能,非常適合企業級和大規模部署。
  1. 性能與擴展性
  • Ingress-nginx:由于直接基于Nginx,性能優異,但擴展性依賴于額外開發或配置。
  • Nginx-ingress-controller:同樣基于 Nginx,性能優秀,并且支持水平擴展和HA部署。
  • APISIX:性能表現優秀,通過異步非阻塞模型實現高并發處理,且具備較好的擴展性和可插拔性。
  • Kong:以其性能見長,通過 Lua 插件系統實現高效擴展,支持大型集群部署和高可用架構。
  1. 易用性與社區支持
  • Ingress-nginx:由 Kubernetes 社區發起并開源的一個項目,旨在為 Kubernetes 提供一個官方支持的 Ingress 控制器實現。
  • Nginx-ingress-controller:由 NGINX 官方社區發起并開源,專門針對 Kubernetes 平臺開發,為用戶提供了一個專業、穩定的 Ingress 解決方案。
  • APISIX:中國開源項目,有中文社區支持,文檔完善,社區活躍度高,且逐漸在全球范圍內獲得廣泛關注。
  • Kong:國際知名的API網關項目,有豐富的文檔和活躍的全球社區,商業支持也相當成熟。
  1. 云原生與集成
  • Ingress-nginx?和?Nginx-ingress-controller:均較好地支持 Kubernetes 環境,但可能在服務網格和云原生服務治理方面不如 APISIX 和 Kong。
  • APISIX:原生支持云環境,整合了服務網格概念,與 Kubernetes 生態融合度高,且可與 Linkerd、Istio 等服務網格協同工作。
  • Kong:不僅可以作為 Kubernetes Ingress Controller,還支持多云和混合云環境,可以與云服務商提供的服務如 AWS Lambda 等深度集成。

Ingress-nginx 更注重與 Kubernetes 生態系統的緊密集成和功能擴展,而 NGINX Ingress Controller 則強調與 Nginx 產品的原生集成、穩定性以及官方支持的優勢。在實際使用中,用戶可以根據自身對 Kubernetes 集成深度的需求、對 Nginx 功能擴展的要求以及對官方支持和長期維護的關注程度,來選擇適合自己的 Ingress 控制器方案。

對于特別依賴或微服務架構下需要更強大 API 管理功能的場景,APISIX 和 Kong 則提供了更多的增值功能。APISIX 更適合尋求國產自主可控、高度集成Kubernetes 生態、追求高性能和靈活擴展的團隊。而 Kong 則在國際化支持、企業級 API 管理、與多種云服務集成等方面表現出色,適合全球化運營和技術要求更高的組織。

選擇哪種工具,應根據具體業務需求、團隊技能、技術支持以及未來發展規劃來綜合評估。

七、k8s集群監控平臺如何選擇?

Zabbix 和 Prometheus 是兩種廣泛應用的監控解決方案,它們各自具有獨特的特性和適用場景。接下來,我來將對二者進行對比,并重點闡述 Prometheus 在 Kubernetes 上的優勢,以及 Prometheus 與 Prometheus Operator 的區別和介紹。

Zabbix VS Prometheus:

  • Zabbix?是一個傳統的監控系統,提供豐富的監控功能,包括自動發現、閾值警告、圖表展示等,支持多種類型的數據采集,如系統性能、網絡流量、數據庫狀態等。Zabbix 的配置相對傳統,依賴于中央服務器架構,雖然也能監控 Kubernetes,但并不原生支持 Kubernetes 的聲明式和動態資源管理模式。
  • Prometheus?是專為云原生環境設計的監控和警報系統,尤其在 Kubernetes 環境下表現卓越。Prometheus 采用 Pull/Push 模型抓取監控數據,支持多維度數據模型,具有強大的查詢語言 PromQL,可進行靈活的數據聚合和分析。Prometheus 通過 ServiceMonitor CRD (自定義資源定義)可以自動發現并監控 Kubernetes 中的服務和 Pod,完美契合 Kubernetes 的聲明式理念。

Prometheus 在 Kubernetes 上的優勢:

  1. 原生集成:Prometheus 與 Kubernetes 有深度集成,通過 Prometheus Operator 可以自動發現和監控 Kubernetes 中的資源,無需手動配置監控目標。
  2. 聲明式監控:Prometheus 通過 ServiceMonitor、PodMonitor 等 CRD 實現監控配置的聲明式管理,符合 Kubernetes 的管理范式,簡化了監控配置的復雜性。
  3. Prometheus 豐富生態:Prometheus 生態圈包括 Grafana(數據可視化)、Alertmanager(警報管理)、 exporters(各類監控指標收集器)等工具,共同形成了強大的云原生監控解決方案。
  4. 靈活查詢與告警:PromQL 提供了靈活的監控指標查詢和聚合功能,以及強大的告警規則定義能力,能夠滿足復雜場景下的監控需求。

Prometheus VS Prometheus Operator

  • Prometheus:本身是一個獨立的監控系統,用于收集和存儲時間序列數據,并通過查詢引擎進行數據分析和告警觸發。
  • Prometheus Operator:是為了在 Kubernetes 上更方便地管理和部署 Prometheus 監控系統而設計的。它通過 Custom Resource Definitions(CRDs)將 Prometheus 監控相關的配置轉化為 Kubernetes 對象,使得 Prometheus 的部署和管理變得更符合 Kubernetes 的管理風格。
  • 優勢:Prometheus Operator 提供了以下核心功能:
    • 簡化部署和管理:通過 Operator 創建和管理 Prometheus Server、Alertmanager、ServiceMonitor 和其他 CRDs,簡化了部署過程,提高了配置的一致性和可維護性。
    • 聲明式配置:通過 CRDs 實現監控目標的聲明式配置,自動發現和監控 Kubernetes 集群中的服務。
    • 高可用與擴展性:可以方便地創建高可用的 Prometheus 集群,并支持水平擴展。

至此,隨著當前技術棧的不停迭代和發展,在 Kubernetes 環境下,Prometheus 憑借其與 Kubernetes 的緊密集成、聲明式配置以及強大的生態系統,成為越來越多企業的首選監控方案。而 Prometheus Operator 進一步提升了 Prometheus 在 Kubernetes 上的易用性和可靠性,使大規模集群監控更加得心應手。

八、如何選擇K8S中的可觀察性工具?

在 Kubernetes 技術棧中,選擇可觀測性(Observability)和 APM(Application Performance Monitoring,應用性能監控)工具是非常關鍵的,這有助于提升系統的可運維性和故障排查效率。

SkyWalking 和 OpenTelemetry 是目前市場上備受關注的兩款工具,它們分別從不同角度提供可觀測性支持,下面從多個維度對比和推薦:

功能特性:

  • SkyWalking:是一款應用性能監視系統,專注于服務網格、微服務和云原生環境的可觀測性,提供了服務拓撲發現、分布式追蹤、性能指標監控、告警和診斷等功能。SkyWalking 支持多種語言 SDK,并有與 Kubernetes 集成的良好支持,可以方便地監控部署在 Kubernetes 上的應用程序。
  • OpenTelemetry:是一個開放標準的可觀測性數據收集、傳輸和導出框架,旨在統一行業內各種監控和追蹤工具的數據格式。OpenTelemetry 提供了統一的 SDK 用于在多種編程語言中產生遙測數據,包括 traces、metrics 和 logs,并支持將數據發送至多種后端分析和存儲系統,如 Jaeger、Zipkin、Prometheus 和 SkyWalking 等。

開箱即用程度:

  • SkyWalking:提供了一站式的解決方案,自帶 UI 界面,易于部署和快速啟用,尤其對于 Apache APISIX、Spring Boot、Java、Go 等語言和框架支持良好。
  • OpenTelemetry:作為一套標準和 SDK,本身并未提供完整的 UI 和數據存儲分析組件,但它提供了廣泛的適配器,可以與很多已有的 APM 和可觀測性工具對接,用戶需要選擇合適的后端存儲和分析工具。

生態與兼容性:

  • SkyWalking:有著豐富的生態,但主要是圍繞其自身的體系構建,兼容性體現在支持多種語言和框架的探針上。
  • OpenTelemetry:生態更為廣闊,由于是 CNCF 項目,已被業界廣泛接受和采納,幾乎所有的主流云服務商和 APM 工具都在支持 OpenTelemetry 標準,這使得數據可以更容易地遷移到不同工具或云服務中。

定制化需求:

  • SkyWalking:對于尋求一站式解決方案、注重快速部署和高效分析的企業,SkyWalking 可能是更合適的選擇,尤其適合已經在使用 Apache SkyWalking 生態的團隊。
  • OpenTelemetry:對于期望更靈活的集成策略、愿意投入更多精力構建個性化可觀測性體系的企業,OpenTelemetry 提供了更多的定制化可能性。可以依據不同需求選擇最適合的后端系統,且隨著標準的普及和發展,未來兼容性和擴展性更強。

總結推薦:

  • 如果你希望有一個快速部署、功能全面且對 Kubernetes 環境支持良好的一站式解決方案,SkyWalking 是值得推薦的。
  • 如果你的企業需要一個更靈活、開放的標準框架,以便與現有或未來的各種可觀測性工具無縫對接,并且看重生態的多樣性,OpenTelemetry 是更好的選擇。

實際上,許多情況下,這兩個工具并不是互斥的,而是可以結合使用。例如,可以使用 OpenTelemetry SDK 收集應用的可觀測性數據,然后將這些數據輸出給 SkyWalking 或其他支持 OpenTelemetry 的后端系統進行進一步分析和展示。

九、Istio 是否具有全面應用的可行性?

Istio 作為服務網格(Service Mesh)解決方案,在 Kubernetes 架構中,它通過在微服務間提供一致的安全、連接、可觀測性和流量管理能力,顯著提高了云原生應用的運維效率和整體性能。但是一直有小伙伴在咨詢一些問題例如:istio 技術棧是否特別復雜?istio 服務掛了,是否會影響到整個集群的應用?Istio 是否具有全面應用的可行性?有哪些風險點以及注意事項,今天咱們就展開聊聊:

Istio 功能&認可度:

  • 全面兼容性:Istio 通過 Sidecar 模式部署 Envoy 代理,能夠與多種編程語言和框架編寫的微服務兼容,只要這些服務部署在 Kubernetes 集群中,就能夠在不修改服務代碼的情況下,應用 Istio 的服務治理功能。
  • 功能完備:Istio 提供了豐富的功能集,包括流量管理(路由、熔斷、重試、超時等)、安全策略(身份認證、授權、密鑰交換等)、可觀測性(跟蹤、監控、日志等)以及漸進式采用的能力,使得它在很多場景下具有全面應用的可行性。
  • 模塊化部署:Istio 由數據面板(Data Plane)和控制面板(Control Plane)兩部分組成,可以根據需要單獨部署 Istio 的服務治理功能(如 Envoy sidecar 代理)或流量管理功能(如 Pilot、Galley、 Citadel 等控制組件)。
  • 行業接受度:Istio 在業界獲得了廣泛的應用和好評,其背后的 Google、IBM、Lyft 等公司持續投入開發和維護,使得 Istio 成為了云原生時代服務治理的事實標準之一。

Istio 技術棧是否特別復雜?

  • Istio 由于其功能豐富,涉及到了服務間的通信管理、安全控制、可觀測性等諸多方面,的確具有一定的技術復雜性。不過,Istio 的設計理念是盡可能減少對應用代碼的侵入,通過 Sidecar 模式讓 Envoy 代理接管服務間通信,從而實現上述功能。盡管如此,對于初次接觸的服務治理工具的團隊,確實需要一定時間去學習和理解 Istio 的核心概念和配置方法。但隨著對服務網格理解的加深和實踐經驗的積累,大部分團隊都能夠逐步掌握并發揮其優勢。

Istio 服務掛了,是否會影響整個集群的應用?

  • Istio 的核心組件(例如 Pilot、Galley、 Citadel 等)失效,確實可能對集群中部分服務的正常運作產生影響,尤其是流量管理和安全性相關的功能。然而,Envoy 代理在設計上具有一定的容錯性,例如它可以緩存一部分配置,短時間內即使控制面板不可用,服務間的通信也不一定會立刻中斷。即便如此,為了避免單點故障,Istio 提倡部署高可用的控制面,并且可以在適當時候通過冗余和故障轉移來確保服務的連續性。

Istio 是否具有全面應用的可行性?

  • Istio 已經在眾多生產環境中得到了驗證和應用,證明了其在 Kubernetes 架構中全面應用的可行性。對于需要復雜服務間通信管理、安全策略、可觀測性等功能的企業級應用,Istio 是一種理想的解決方案。然而,是否適用于每個具體的項目或場景,則需要根據項目規模、業務需求、團隊技術棧以及運維能力等多方面因素綜合評估。

風險點與注意事項:

  • 資源開銷:每個 Pod 中額外的 Envoy 代理會占用一定的計算和內存資源,需要在容量規劃時加以考慮。
  • 性能影響:雖然 Envoy 是高性能代理,但在極端場景下仍可能帶來性能損失,需關注并針對性優化。
  • 運維復雜度:隨著 Istio 的引入,運維人員需要掌握新工具和配置,這對團隊的學習成本和運維能力提出了更高要求。
  • 穩定性與可用性:確保 Istio 控制面組件的高可用性,避免單點故障導致的服務中斷。
  • 升級策略:Istio 的升級需要精心規劃,防止中間版本兼容性問題或配置丟失導致的服務異常。

不過,總的來說,Istio 作為服務網格解決方案確實增強了云原生應用的運維和管理能力,但在全面應用時需充分考慮其復雜性、資源消耗、運維要求以及可能的風險點,并采取適當的策略和措施予以應對。也不是說,全部的業務場景都適用,如果僅有很少量的應用而且服務層面也不需要很精度的流量控制,那真的就沒必要了。另外核心維護人員對于 Istio 的技能熟悉度也是考量之一!從外部來看,隨著技術的演進和社區支持的加強,Istio 在許多場合下已經成為推動微服務治理現代化的重要力量。我們已經全面應用,至于大家,那就視情況而定吧!


總結

上述給出的解答僅僅是一種參考,涉及K8S集群技術棧的發展是一個動態的過程,既要實時了解技術趨勢,同時也要貼合自身實際情況,適時調整和優化。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/19321.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19321.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/19321.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Golang項目代碼組織架構實踐

Golang在項目結構上沒有強制性規范,雖然這給了開發者很大的自由度,但也需要自己沉淀一套可行的架構。本文介紹了一種項目布局,可以以此為參考設計適合自己的 Golang 項目組織模式。原文: Golang Project Layout Go 有很多強制的或是約定俗成的…

收藏:六款好用的企業防泄密軟件推薦

企業數據如同企業的生命線,保護數據安全免遭泄露變得至關重要。 面對日益復雜的網絡安全威脅,一套高效的企業防泄密軟件成為企業安全架構的基石。 以下是精心挑選的六款企業防泄密軟件,它們在數據加密、訪問控制、行為監控等方面表現出色&am…

lua vm 常識一: attempt to yield across a C-call boundary 的原因分析

使用 lua 的時候有時候會遇到這樣的報錯:“attempt to yield across a C-call boundary”。 1. 網絡上的解釋 可以在網上找到一些關于這個問題的解釋。 1.1 解釋一 這個 issue:一個關于 yield across a C-call boundary 的問題,云風的解釋是…

輪廓系數(Average silhouette) | 最佳聚類數的判定

1.最佳分類個數 # 輔助確定最佳聚類數 4.7*2.6 factoextra::fviz_nbclust( t(DPAU_2), kmeans, method "silhouette")在2有下降拐點,但是樣本較多時分成2類一般意義不大。 在7時也有下降拐點。 2.查看每個分類的輪廓系數 (1) pam k5 library(cluste…

【Paddle】Inplace相關問題:反向傳播、影響內存使用和性能

【Paddle】Inplace相關問題:反向傳播、影響內存使用和性能 寫在最前面inplace 的好處有哪些?能降低計算復雜度嗎在反向傳播時,Inplace為什么會阻礙呢?“計算圖的完整性受損”表達有誤原地操作 sin_()為什么原地操作會阻礙反向傳播…

活動會議邀請函制作易企秀源碼系統 清爽的畫面輕輕滑動自動翻頁 帶完整的前后端搭建教程

系統概述 在當今數字化時代,活動會議的組織和宣傳變得至關重要。為了滿足這一需求,活動會議邀請函制作易企秀源碼系統應運而生。它不僅為用戶提供了一個便捷、高效的工具,還具備一系列令人矚目的特色功能,為活動會議的成功舉辦提…

Ubuntu22.04設置程序崩潰產生Core文件

Ubuntu22.04設置程序崩潰產生Core文件 文章目錄 Ubuntu22.04設置程序崩潰產生Core文件摘要Ubuntu 生成Core文件配置1. 檢查 core 文件大小限制2. 設置 core 文件大小限制3. 配置 core 文件命名和存儲路徑4. 重啟系統或重新加載配置5. 測試配置 關鍵字: Ubuntu、 C…

Dubbo底層RPC原理深度解析

Dubbo作為一款高性能的分布式服務框架,其核心在于其底層的RPC實現,它允許服務在分布式系統中的不同節點間透明地進行遠程調用。以下是Dubbo底層RPC原理的詳細介紹: 基本概念 RPC(Remote Procedure Call)是一種編程模型…

CSS浮動詳細教學(CSS從入門到精通學習第四天)

css第04天 一、其他樣式 1、圓角邊框 在 CSS3 中,新增了圓角邊框樣式,這樣我們的盒子就可以變圓角了。 border-radius 屬性用于設置元素的外邊框圓角。 語法: border-radius:length; 參數值可以為數值或百分比的形式如果是正方形&…

js 如何封裝一個iframe通訊的sdk

在JavaScript中,封裝一個用于iframe間通信的SDK,可以利用postMessage和message事件監聽來實現跨域通信。以下是一個簡單的示例,展示如何封裝這樣一個SDK: 步驟 1: 創建SDK文件 首先,創建一個名為IframeCommunicator.…

RTT UART設備框架學習

UART簡介 UART(Universal Asynchronous Receiver/Transmitter)通用異步收發傳輸器,UART 作為異步串口通信協議的一種,工作原理是將傳輸數據的每個字符一位接一位地傳輸。是在應用程序開發過程中使用頻率最高的數據總線。 UART串…

MySQL注入 — Dns 注入

DNS注入原理 通過子查詢,將內容拼接到域名內,讓load_file()去訪問共享文件,訪問的域名被記錄此時變為顯錯注入,將盲注變顯錯注入,讀取遠程共享文件,通過拼接出函數做查詢,拼接到域名中,訪問時將訪問服務器,…

CISP難度將加大?還考不考啊...

最新消息:CISP即將調整知識體系大綱,更新題庫,后續考試難度加大。 最近幾年,CISP改版地比較頻繁,難度也在不斷上升,因此各位小伙伴有考CISP想法的盡早考。 隨著《網絡安全法》、《網絡空間安全戰略》、《…

2024/5/28 P1247 取火柴游戲

取火柴游戲 題目描述 輸入 k k k 及 k k k 個整數 n 1 , n 2 , ? , n k n_1,n_2,\cdots,n_k n1?,n2?,?,nk?,表示有 k k k 堆火柴棒,第 i i i 堆火柴棒的根數為 n i n_i ni?;接著便是你和計算機取火柴棒的對弈游戲。取的規則如下&…

定點化和模型量化(三)

量化解決的是訓練使用的浮點和運行使用的硬件只支持定點的矛盾。這里介紹一些實際量化中使用到的工具。 SNPE簡介 The Snapdragon Neural Processing Engine (SNPE)是高通驍龍為了加速網絡模型設計的框架。但它不只支持高通,SNPE還支持多種硬件平臺,AR…

Beego 使用教程 8:Session 和 Cookie

beego 是一個用于Go編程語言的開源、高性能的 web 框架 beego 被用于在Go語言中企業應用程序的快速開發,包括RESTful API、web應用程序和后端服務。它的靈感來源于Tornado, Sinatra 和 Flask beego 官網:http://beego.gocn.vip/ 上面的 be…

抄表營收系統是什么?

1.抄表營收系統的概念和功能 抄表營收系統是一種自動化軟件,主要運用于公用事業公司(如電力工程、水、天然氣等)管理方法其服務的計量檢定、計費和收付款全過程。該系統根據集成化智能儀表、遠程控制數據收集和分析功能,提高了效率,降低了人…

(十)Python3 接口自動化測試,測試結果發送郵件

(十)Python3 接口自動化測試,測試結果發送郵件 1.前言 Windows本地執行的話,可自行編寫發送郵件方法發送郵件。 Jenkins執行的話,可用jenkins配套郵件發送郵件。 2.發送郵件示例 # -*- coding: utf-8 -*- # 主程序 import sys sys.path.append(./server) sys.path.appe…

人臉識別——探索戴口罩對人臉識別算法的影響

1. 概述 人臉識別是一種機器學習技術,廣泛應用于各種領域,包括出入境管制、電子設備安全登錄、社區監控、學校考勤管理、工作場所考勤管理和刑事調查。然而,當 COVID-19 引發全球大流行時,戴口罩就成了日常生活中的必需品。廣泛使…

反射機制大揭秘-進階Java技巧,直擊核心!

反射在Java中扮演著重要的角色,掌握了反射,就等于掌握了框架設計的鑰匙。本文將為您逐步講解反射的基本概念、獲取Class對象的三種方式、使用反射實例化對象并操作屬性和方法,還有解析包的相關內容。跟隨我一起探索反射的奧秘,提升…