摘要:守護進程,充當和不同云提供商工具存儲卷負載均衡器等之間的抽象層。除此之外,在上還有一個健康檢查端點,以及一些其他狀態端點。它就像是節點上運行著的的網絡代理和負載均衡器一樣,通過在使用實現東西負載均衡。
今晚20:30,Kubernetes Master Class在線培訓第四期《企業如何構建CI/CD流水線》即將開播,點擊鏈接:http://live.vhall.com/729465809
即可免費預約注冊!
介 紹
Kubernetes在GitHub上擁有超過48,000顆星,超過75,000個commit,擁有以Google為代表的科技巨頭公司為主要貢獻者。可以說,Kubernetes已迅速掌管了容器生態系統,成為容器編排平臺的真正領導者。
Kubernetes提供了諸如部署的滾動和回滾、容器健康檢查、自動容器恢復、基于指標的容器自動擴展、服務負載均衡、服務發現(適用于微服務架構)等強大功能。在本文中,我們將討論Kubernetes重要的基本概念、master節點架構,并重點關注節點組件。
理解Kubernetes及其抽象
Kubernetes是一個開源的編排引擎,用于自動部署、擴展、管理和提供托管容器化應用程序的基礎架構。在基礎架構級別,Kubernetes集群由一組物理或虛擬機組成,每個機器都以特定角色運行。
Master機器就像是所有業務的大腦,負責編排所有運行在節點機器上的容器。每個節點都配有一個容器運行時。節點接收來自master的指令,然后執行操作來創建pod、刪除pod或調整網絡規則。
Master組件負責管理Kubernetes集群。它們管理pod的生命周期,pod是Kubernetes集群內部署的基本單元。Master Server運行以下組件:
kube-apiserver - 主要組件,為其他master組件公開API。
etcd - 分布式密鑰/值存儲庫,Kubernetes使用它來持久化存儲所有集群信息。
kube-scheduler – 依照pod規范中的信息,來決定運行pod的節點。
kube-controller-manager - 負責節點管理(檢測節點是否出現故障)、pod復制和端點創建。
cloud-controller-manager - 守護進程,充當API和不同云提供商工具(存儲卷、負載均衡器等)之間的抽象層。
節點組件是Kubernetes中的worker機器,受到master的管理。節點可以是虛擬機(VM)或物理機器——Kubernetes在這兩種類型的系統上都能良好運行。每個節點都包含運行pod的必要組件:
kubelet – 為位于那個節點上的pod監視API服務器,確保它們正常運行
cAdvisor - 收集在特定節點上運行著的pod的相關指標
kube-proxy - 監視API服務器,實時獲取pod或服務的變化,以使網絡保持最新
容器運行時 - 負責管理容器鏡像,并在該節點上運行容器
Kubernetes節點組件詳解
總而言之就是,節點上運行著兩個最重要的組件——kubelet和kube-proxy,除此之外還有一個負責運行應用容器化應用程序的容器引擎。
kubelet
kubelet處理著master和在其上運行的節點之間的所有通信。它以manifest的形式接收來自主設備的命令,manifest定義著工作負載和操作參數。它與負責創建、啟動和監視pod的容器運行時進行接合。
kubelet還會周期性地對配置的活躍度探針和準備情況進行檢查。它會不斷監視pod的狀態,并在出現問題時啟動新實例。kubelet還有一個內部HTTP服務器,在端口10255上顯示一個只讀視圖。除此之外,在/healthz上還有一個健康檢查端點,以及一些其他狀態端點。例如,我們可以在/pods獲取正在運行的pod的列表。我們還可以在/spec獲取kubelet正在運行的機器的詳情。
kube-proxy
kube-proxy組件在每個節點上運行,負責代理UDP、TCP和SCTP數據包(它不了解HTTP)。它負責維護主機上的網絡規則,并處理pod、主機和外部世界之間的數據包傳輸。它就像是節點上運行著的pod的網絡代理和負載均衡器一樣,通過在iptables使用NAT實現東/西負載均衡。
kube-proxy過程位于連接到Kubernetes的網絡和在該特定節點上運行的pod之間。它本質上是Kubernetes的核心網絡組件,負責確??缂旱乃性赜行У剡M行通信。當用戶創建Kubernetes服務對象時,kube-proxy實例會負責將該對象轉換為位于worker節點的、本地iptables規則集上的有意義的規則。iptables用于將分配給服務對象的虛擬IP轉換為服務映射的所有pod IP。
容器運行時
容器運行時負責從公有或私有鏡像倉庫中拉取鏡像,并根據這些鏡像運行容器。當下最流行的容器引擎無疑是Docker,不過Kubernetes還支持諸如rkt、runc等的其他容器運行時。正如我們在上文中提到過的,kubelet會直接與容器運行時交互,以啟動、停止或刪除容器。
cAdvisor
cAdvisor是一個開源代理,它能夠監視資源使用情況并分析容器的性能。cAdvisor最初由谷歌創建,現在已與kubelet集成。
位于每個節點上的cAdvisor實例,會收集、聚合、處理和導出所有正在運行的容器的指標,如CPU、內存、文件和網絡使用情況等。所有數據都將發送到調度程序,以確保調度程序了解節點內部的性能和資源使用情況。這些信息會被用于執行各種編排任務,如調度、水平pod擴展、管理容器資源限制等。
從動手實操了解節點組件端點
接下來,我們將安裝一個Kubernetes集群(在Rancher的幫助下),以此來開始探索節點組件公開的一些API。要完成下面的操作,我們需要:
Google Cloud Platform帳戶(任何公有云也都是一樣的)
一臺主機,后續Rancher會運行在它上面(可以是個人PC / Mac或公有云中的VM)
在同一主機上,安裝kubectl和 Google Cloud SDK。驗證好您的相關credential(gcloud init和gcloud auth login),確保gcloud能正常訪問您的Google Cloud賬戶
在GKE上運行的Kubernetes集群(運行EKS或AKS也是相同的)
啟動Rancher實例
首先,啟動Rancher實例。這一過程非常簡單,參考快速上手指南即可:
https://rancher.com/quick-start/
使用Rancher部署GKE集群
使用Rancher設置和配置Kubernetes集群,同樣是按指南進行操作即可:
https://rancher.com/docs/ranc...
部署好集群后,我們可以快速部署Nginx以進行測試:
為了與Kubernetes API進行交互,我們需要在本地計算機上啟動代理服務器:
讓我們檢查一下進度,看它是否正在正常運行,以及是否在監聽默認端口:
現在,在瀏覽器中,檢查kubelet公開的各種端點:
接下來,顯示集群可用節點的列表:
我們可以通過spec來檢查所有列出的、使用API的節點。在本文的示例中,我們使用n1-standard-1機器類型(1個vCPU,3.75GB RAM,10GB的根大小磁盤)創建了一個3節點集群。我們可以通過訪問專用端點來確認這些規范:
在不同端點使用相同的kubelet API,我們可以檢查我們創建的Nginx pod,以查看它們正運行在什么節點上。
首先,列出正在運行的pod:
現在,curl每個節點的/proxy/pods端點,查看其運行的pod列表:
我們還可以檢查cAdvisor端點,它會以Prometheus格式輸出大量數據。默認情況下,這在/metrics HTTP端點可用:
SSH到節點并直接調用kubelet端口,也可以獲得相同的cAdvisor或pod信息:
清理
要清理我們在本文中使用的資源,只需從Rancher UI中刪除Kubernetes集群即可(選擇集群并點擊Delete按鈕就可以了)。這將刪除我們的集群正在使用的所有節點以及關聯的IP地址。如果您是在公有云中使用VM來運行Rancher,那么您也需要處理它。找出您的實例名稱,然后將其刪除即可:
結 語
在本文中,我們討論了Kubernetes節點機器的關鍵組件。之后,我們使用Rancher部署了一個Kubernetes集群,并完成了一個小型部署以幫助我們學習使用kubelet API。
若想了解有關Kubernetes及其架構的更多信息,Kubernetes官方文檔是一個不錯的起點:https://kubernetes.io/docs/co...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/32973.html
摘要:負載均衡器只能與和等特定的云服務提供商一起使用,且均衡器的功能根據提供者而定。因為它是作為一個基于的控制器在內部執行,因此對功能的訪問相對不受限制不同于外部負載均衡器,它們中的一些可能無法在層面訪問。 很多企業在部署容器的時候都會選擇Kubernetes作為其容器編排系統。這是對Kubernetes的可靠性,靈活性和特性廣泛的肯定。在這篇文章中,我們將對Kubernetes如何處理一個...
摘要:谷歌思科華為等等均是的貢獻成員。其中谷歌云平臺和等大型云提供商成功在生產環境中使用了。它為良好穩定的生產部署提供了一個良好的起點。預先準備在繼續之前,我們需要準備一個谷歌云平臺的賬號免費的應該足夠了。我們將為部署配置。 本文將帶你充分了解Etcd的工作原理,演示如何用Kubernetes建立并運行etcd集群,如何與Etcd交互,如何在Etcd中設置和檢索值,如何配置高可用等等。 sh...
摘要:功能強大擴展性高,在許多人看來,它正在成為云計算的終極解決方案。我已經多次給具有豐富存儲和云計算經驗的人解釋過這些問題,他們幾乎都是抓耳撓腮,不明白這是怎么回事。和可能因為和使用起來太麻煩了,在年月,隨著版本的發布,引入了動態納管和的概念。 Kubernetes存儲全解!你知道PV和PVC的區別嗎?storage class和provisioner是什么關系?VolumeClaimTe...
摘要:避免從構造函數返回任何東西,因為它可能會替換所產生的實例。避免使用使用也能創建一個實例然而這不會調用構造函數。因為不會調用構造函數,所以這是一個有效的創建繼承模式的方法,能夠重寫原型鏈上的構造函數。 一. 全局 this 1.在瀏覽器中,在一個全局環境中,this就是window對象。 console.log(this === window); //true 2.在瀏覽器中,在全局...
閱讀 1699·2021-11-02 14:47
閱讀 3647·2019-08-30 15:44
閱讀 1333·2019-08-29 16:42
閱讀 1731·2019-08-26 13:53
閱讀 934·2019-08-26 10:41
閱讀 3458·2019-08-23 17:10
閱讀 596·2019-08-23 14:24
閱讀 1716·2019-08-23 11:59