【深智書摘】Kubernetes的定位、優勢與基本知識

閱讀時間約 6 分鐘
  Kubernetes由Joe Beda、Brendan Burns和Craig McLuckie創立,從2014年釋出至今,已成為了影響全球的重要雲端技術。其不只是Google十幾年來大規模容器技術應用的重要成果、全新基於容器技術的分散式架構解決方案,還是一個整合式的、完備的分散式系統開發和支撐平台。對於Kubernetes,我們可以從何處開始深入理解呢?
【從3個視角解析Kubernetes的定位與優勢】
  Kubernetes是什麼?
1. Kubernetes是Google嚴格保密十幾年的秘密武器——Borg的一個開放原始碼版本。
  Borg是Google內部使用的久負盛名的大規模叢集管理系統,以容器技術為基礎來實現資源管理的自動化,以及跨多個資料中心的資源使用率的最大化。十幾年以來,Google一直透過Borg管理著數量龐大的應用程式叢集。正是由於站在Borg這個前輩的肩膀上,汲取了Borg的經驗與教訓,所以Kubernetes一經開放原始碼就一鳴驚人,並迅速稱霸容器領域。Kubernetes也是一個全新的以容器技術為基礎的分散式架構領先方案,是容器雲的優秀平台選型方案,已成為新一代的以容器技術為基礎的PaaS平台的重要底層框架,也是雲端原生技術生態圈的核心,服務網格(Service Mesh)、無伺服器架構(Serverless)等新一代分散式架構框架及技術紛紛以Kubernetes為基礎實現,這些都奠定了Kubernetes在基礎架構領域的王者地位。
  其次,如果我們的系統設計遵循了Kubernetes的設計思想,那麼傳統系統架構中那些和業務沒有多大關係的底層程式或功能模組,就都可以立刻從我們的視線中消失,我們不必再費心於負載平衡器的選型和部署實施問題,不必再考慮引入或自己開發一個複雜的服務治理框架,不必再頭疼於服務監控和故障處理模組的開發。總之,使用Kubernetes提供的解決方案,我們不僅節省了不少於30%的開發成本,還可以將精力更加集中於業務本身,而且由於Kubernetes提供了強大的自動化機制,所以系統後期的運行維護難度和運行維護成本大幅度降低。
2. Kubernetes是一個開放的開發平台。
  與J2EE不同,它不侷限於任何一種語言,沒有限定任何程式設計介面,所以不論是用Java、Go、C++還是用Python編寫的服務,都可以被映射為Kubernetes的Service(服務),並透過標準的TCP通訊協定進行互動。此外,Kubernetes平台對現有的程式設計語言、程式設計框架、中介軟體沒有任何侵入性,因此現有的系統也很容易改造升級並遷移到Kubernetes平台上。
3. Kubernetes是一個完備的分散式系統支撐平台。
  Kubernetes具有完備的叢集管理能力,包括多層次的安全防護和存取控制機制、多租戶應用支撐能力、透明的服務註冊和服務發現機制、內建的智慧負載平衡器、強大的故障發現和自我修復能力、服務輪流升級和線上擴充能力、可擴充的資源自動排程機制,以及多粒度的資源配額管理能力。同時,Kubernetes提供了完整的管理工具,這些工具涵蓋了包括開發、部署測試、運行維護監控在內的各個環節。因此,Kubernetes是一個全新的以容器技術為基礎的分散式架構解決方案,並且是一個整合式的完備的分散式系統開發和支撐平台。
【Kubernetes的基本知識】
  我們首先要了解Kubernetes的一些基本知識,這樣才能理解Kubernetes提供的解決方案。在Kubernetes中,Service是分散式叢集架構的核心。一個Service物件擁有如下關鍵特徵。
  • 擁有唯一指定的名稱(比如mysql-server)。
  • 擁有一個虛擬IP位址(ClusterIP位址)和通訊埠編號。
  • 能夠提供某種遠端服務能力。
  • 能夠將用戶端對服務的存取請求轉發到一組容器應用上。
  Service的服務處理程序通常以Socket通訊方式為基礎對外提供服務,比如Redis、Memcached、MySQL、Web Server,或者是實現了某個具體業務的特定TCP Server處理程序。雖然一個Service通常由多個相關的服務處理程序提供服務,每個服務處理程序都有一個獨立的Endpoint(IP+Port)存取點,但Kubernetes能夠讓我們透過Service(ClusterIP+Service Port)連接指定的服務。有了Kubernetes內建的透明負載平衡和故障恢復機制,不管後端有多少個具體的服務處理程序,也不管某個服務處理程序是否由於發生故障而被重新部署到其他機器,都不會影響對服務的正常呼叫。更重要的是,這個Service本身一旦建立就不再變化,這意味著我們再也不用為Kubernetes叢集中應用服務處理程序IP位址變來變去的問題頭疼了。
  容器提供了強大的隔離功能,所以我們有必要把為Service提供服務的這組處理程序放入容器中進行隔離。為此,Kubernetes設計了Pod物件,將每個服務處理程序都包裝到相應的Pod中,使其成為在Pod中執行的一個容器(Container)。為了建立Service和Pod 間的連結關係,Kubernetes首先給每個Pod都貼上一個標籤(Label),比如給執行MySQL的Pod貼上name=mysql標籤,給執行PHP的Pod貼上name=php標籤,然後給相應的Service定義標籤選擇器(Label Selector),例如,MySQL Service的標籤選擇器的選擇條件為name=mysql,意為該Service要作用於所有包含name=mysql標籤的Pod。這樣一來,就巧妙解決了Service與Pod的連結問題。
《從Docker動手邁入全新DevOps時代:最完整Kubernetes全書》,龔正, 吳治輝, 閆健勇 編著
為什麼會看到廣告
avatar-img
9會員
25內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
深智數位的沙龍 的其他內容
大部分處理影像的神經網路,例如簡單的神經網路、CNN、物件偵測、語義分割、臉部辨識等,都是以像素為輸入特徵,圖神經網路 (GNN) 則是以圖形理論 (Graph Theory) 為基礎,以向量作為輸入,內含節點 (Node) 及邊 (Edge),如下圖,以圖形表達集團交叉持股的關係及持股比例。
要徹底了解深度學習,必須從數學/統計奠定基礎,從張量運算、偏微分、梯度下降優化求解,最後依據機率統計衡量模的效能指標,包括準確率 (Accuracy)、精確率 (Precision)、召回率 (Recall),乃至於混淆矩陣 (Confusion Matrix)。
TensorFlow、PyTorch 是目前佔有率最高的深度學習框架,初學者常會問『應該選擇PyTorch或 TensorFlow套件』,依個人看法,PyTorch、TensorFlow好比倚天劍與屠龍刀,各有擅場,兩個套件的發展重點有所不同,例如在偵錯方面,PyTorch比較容易,但Tensor
2020年VMware發布VMware vSphere 7.0,透過整合資料中心伺服器、靈活設定資源等方式降低了營運成本,同時還可在不增加成本的情況下提供給使用者高可用、災難恢復等進階特性。
行動通訊系統十年一代,從 1G 到 4G,歷經了「模擬、數位、資料、寬頻」四次技術變革,為全世界的億萬使用者帶來了「前所未有」的嶄新感受。尤其是 4G 技術開啟了行動網際網路時代,深刻改變了人們的生活方式。
隨著軟體規模、性能要求的不斷提升,分散式系統得到快速發展。分散式系統透過許多低成本節點的協作來完成原本需要龐大單體應用才能實現的功能,在降低硬體成本的基礎上,提升了軟體的可靠性、擴充性、靈活性。
大部分處理影像的神經網路,例如簡單的神經網路、CNN、物件偵測、語義分割、臉部辨識等,都是以像素為輸入特徵,圖神經網路 (GNN) 則是以圖形理論 (Graph Theory) 為基礎,以向量作為輸入,內含節點 (Node) 及邊 (Edge),如下圖,以圖形表達集團交叉持股的關係及持股比例。
要徹底了解深度學習,必須從數學/統計奠定基礎,從張量運算、偏微分、梯度下降優化求解,最後依據機率統計衡量模的效能指標,包括準確率 (Accuracy)、精確率 (Precision)、召回率 (Recall),乃至於混淆矩陣 (Confusion Matrix)。
TensorFlow、PyTorch 是目前佔有率最高的深度學習框架,初學者常會問『應該選擇PyTorch或 TensorFlow套件』,依個人看法,PyTorch、TensorFlow好比倚天劍與屠龍刀,各有擅場,兩個套件的發展重點有所不同,例如在偵錯方面,PyTorch比較容易,但Tensor
2020年VMware發布VMware vSphere 7.0,透過整合資料中心伺服器、靈活設定資源等方式降低了營運成本,同時還可在不增加成本的情況下提供給使用者高可用、災難恢復等進階特性。
行動通訊系統十年一代,從 1G 到 4G,歷經了「模擬、數位、資料、寬頻」四次技術變革,為全世界的億萬使用者帶來了「前所未有」的嶄新感受。尤其是 4G 技術開啟了行動網際網路時代,深刻改變了人們的生活方式。
隨著軟體規模、性能要求的不斷提升,分散式系統得到快速發展。分散式系統透過許多低成本節點的協作來完成原本需要龐大單體應用才能實現的功能,在降低硬體成本的基礎上,提升了軟體的可靠性、擴充性、靈活性。
你可能也想看
Google News 追蹤
Thumbnail
這篇的DevOps發佈系統是以Spring Cloud微服務(微服務)為背景;由GitLab、Harbor與Kubernetes組成。 GitLab負責版本管理與CI/CD(CI/CD)。 Harbor負責Docker([Docker]介紹) Image的儲存與發佈。 Kubernetes([
Thumbnail
安裝環境需求 64位元Linux,核心版本為3.1以上,且能滿足Ducker安裝環境。 機器之間要能夠互通。 外部存取權限。 硬體資源:兩核心CPU、8G記憶體、硬碟30GB以上。 安裝Kubeadm與Ducker Kubeadm是Kubernetes的一鍵部署工具。 增加Kube
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
本文介紹了 Docker 的基礎概念,以及在軟體工程環境中的運用。藉由 Docker 的容器化技術和映像檔技術,能夠實現開發和生產環境的一致性,並且支持負載平衡和無縫更新。此外,也提到了 Kubernetes 和 Docker Swarm 這兩個重要工具的用途和適用對象。
Thumbnail
本篇文章將教你如何在Kubernetes cluster內部署一個MongoDB,包括取得Manifests、建立Volume、部署實務、基本操作和結論。透過操作演示,讓你瞭解在實務上如何成功建立MongoDB,並進行基本操作。
Thumbnail
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
Thumbnail
本篇說明如何利用Kubernetes特色,將PostgreSQL DB以HA的架構來提供服務,並說明相關的實作流程與說明。
Thumbnail
引言 在當今的技術世界中,Kubernetes 已成為容器化應用的領導平台。作為一個高效的容器編排系統,它不僅管理著容器的部署和擴展,還提供了必要的自動化支持,以保證應用的高可用性和性能。在這個框架中,自動擴展功能起著至關重要的作用,特別是在面對不斷變化的負載和需求時。
Thumbnail
這篇文章教你如何搭建Kubernetes Cluster,包括節點安裝前設定、軟體套件安裝、Control-Plane部署和加入運算節點等步驟。在建置之後,作者會分享一些基礎服務的安裝。希望這篇文章對你有所幫助。
Thumbnail
前言 大家好我們今天要來教 Docker 這項技術,什麼是 Docker ? Docker 可以幫助我們做什麼事情 ? Docker 是一項容器化技術,他可以降低我們在佈署 App 時,讓我們可以有效的分配作業系統資源,降低佈署作業成本,現在讓我們來了解 Docker 要解決的問題 傳統佈署遇
Thumbnail
這篇的DevOps發佈系統是以Spring Cloud微服務(微服務)為背景;由GitLab、Harbor與Kubernetes組成。 GitLab負責版本管理與CI/CD(CI/CD)。 Harbor負責Docker([Docker]介紹) Image的儲存與發佈。 Kubernetes([
Thumbnail
安裝環境需求 64位元Linux,核心版本為3.1以上,且能滿足Ducker安裝環境。 機器之間要能夠互通。 外部存取權限。 硬體資源:兩核心CPU、8G記憶體、硬碟30GB以上。 安裝Kubeadm與Ducker Kubeadm是Kubernetes的一鍵部署工具。 增加Kube
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
本文介紹了 Docker 的基礎概念,以及在軟體工程環境中的運用。藉由 Docker 的容器化技術和映像檔技術,能夠實現開發和生產環境的一致性,並且支持負載平衡和無縫更新。此外,也提到了 Kubernetes 和 Docker Swarm 這兩個重要工具的用途和適用對象。
Thumbnail
本篇文章將教你如何在Kubernetes cluster內部署一個MongoDB,包括取得Manifests、建立Volume、部署實務、基本操作和結論。透過操作演示,讓你瞭解在實務上如何成功建立MongoDB,並進行基本操作。
Thumbnail
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
Thumbnail
本篇說明如何利用Kubernetes特色,將PostgreSQL DB以HA的架構來提供服務,並說明相關的實作流程與說明。
Thumbnail
引言 在當今的技術世界中,Kubernetes 已成為容器化應用的領導平台。作為一個高效的容器編排系統,它不僅管理著容器的部署和擴展,還提供了必要的自動化支持,以保證應用的高可用性和性能。在這個框架中,自動擴展功能起著至關重要的作用,特別是在面對不斷變化的負載和需求時。
Thumbnail
這篇文章教你如何搭建Kubernetes Cluster,包括節點安裝前設定、軟體套件安裝、Control-Plane部署和加入運算節點等步驟。在建置之後,作者會分享一些基礎服務的安裝。希望這篇文章對你有所幫助。
Thumbnail
前言 大家好我們今天要來教 Docker 這項技術,什麼是 Docker ? Docker 可以幫助我們做什麼事情 ? Docker 是一項容器化技術,他可以降低我們在佈署 App 時,讓我們可以有效的分配作業系統資源,降低佈署作業成本,現在讓我們來了解 Docker 要解決的問題 傳統佈署遇