亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

K8s該快速入門

發布時間:2021-11-30 15:01:56 來源:億速云 閱讀:189 作者:柒染 欄目:數據庫

這篇文章將為大家詳細講解有關K8s該快速入門,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

通過一個業務發展的故事,分享 K8s 出現的原因以及它的運作方式。適合所有技術開發人員,尤其是前端開發者。

0 序

去年下半年,我做了一次轉崗,開始接觸到 kubernetes,雖然對 K8s  的認識還非常的不全面,但是非常想分享一下自己的一些收獲,希望通過本文能夠幫助大家對 K8s  有一個入門的了解。文中有不對的地方,還請各位老司機們幫助指點糾正。

其實介紹 K8s 的文章,網上一搜一大把,而且 kubernetes 官方文檔也寫的非常友好,所以直接上來講  K8s,我覺得我是遠遠不如網上的一些文章講的好的,所以我想換一個角度,通過一個業務發展的故事,來講一下 K8s 是怎么出現的,它又是如何運作的。

這里適合所有搞技術的同學,特別是前端的同學,因為前端工程化近幾年發展的非常迅猛,K8s  目前解決的問題和發展的形式,我相信假以時日也會出現在前端領域,畢竟不同領域的工程化發展其實是殊途同歸的。

1 故事開始

隨著中國老百姓生活水平的不斷提高,家家戶戶都有了小汽車,小王預計 5 年后,汽車報廢業務將會迅速發展,而且國家在 19  年也出臺了新政策《報廢機動車回收管理辦法》,取消了汽車報廢回收的“特種行業”屬性,將開放市場化的競爭。

小王覺得這是一個創業的好機會,于是找到了我和幾個志同道合的小伙伴開始了創業,決定做一個叫“淘車網”的平臺。

2 故事發展

淘車網一開始是一個 all in one 的 Java  應用,部署在一臺物理機上(小王同學,現在都啥時候了,你需要了解一下阿里云),隨著業務的發展,發現機器已經快扛不住了,就趕緊對服務器的規格做了升級,從  64C256G 一路升到了 160C1920G,雖然成本高了點,但是系統至少沒出問題。

業務發展了一年后,160C1920G 也扛不住了,不得不進行服務化拆分、分布式改造了。為了解決分布式改造過程中的各種問題,引入了一系列的中間件,類似  hsf、tddl、tair、diamond、metaq 這些,在艱難的業務架構改造后,我們成功的把 all in one 的 Java  應用拆分成了多個小應用,重走了一遍阿里當年中間件發展和去 IOE 的道路。

分布式改完了后,我們管理的服務器又多起來了,不同批次的服務器,硬件規格、操作系統版本等等都不盡相同,于是應用運行和運維的各種問題就出來了。

還好有虛擬機技術,把底層各種硬件和軟件的差異,通過虛擬化技術都給屏蔽掉啦,雖然硬件不同,但是對于應用來說,看到的都是一樣的啦,但是虛擬化又產生了很大的性能開銷。

恩,不如我們使用 docker 吧,因為 docker 基于 cgroup 等 linux  的原生技術,在屏蔽底層差異的同時,也沒有明顯的性能影響,真是一個好東西。而且基于 docker 鏡像的業務交付,使得我們 CI/CD  的運作也非常的容易啦。

不過隨著 docker 容器數量的增長,我們又不得不面對新的難題,就是大量的 docker  如何調度、通信呢?畢竟隨著業務發展,淘車網已經不是一個小公司了,我們運行著幾千個 docker 容器,并且按照現在的業務發展趨勢,馬上就要破萬了。

不行,我們一定要做一個系統,這個系統能夠自動的管理服務器(比如是不是健康啊,剩下多少內存和 CPU 可以使用啊等等)、然后根據容器聲明所需的 CPU 和  memory 選擇最優的服務器進行容器的創建,并且還要能夠控制容器和容器之間的通信(比如說某個部門的內部服務,當然不希望其他部門的容器也能夠訪問)。

我們給這個系統取一個名字,就叫做容器編排系統吧。

3 容器編排系統

那么問題來了,面對一堆的服務器,我們要怎么實現一個容器編排系統呢?

先假設我們已經實現了這個編排系統,那么我們的服務器就會有一部分會用來運行這個編排系統,剩下的服務器用來運行我們的業務容器,我們把運行編排系統的服務器叫做  master 節點,把運行業務容器的服務器叫做 worker 節點。

既然 master 節點負責管理服務器集群,那它就必須要提供出相關的管理接口,一個是方便運維管理員對集群進行相關的操作,另一個就是負責和 worker  節點進行交互,比如進行資源的分配、網絡的管理等。

我們把 master 上提供管理接口的組件稱為 kube apiserver,對應的還需要兩個用于和 api server  交互的客戶端,一個是提供給集群的運維管理員使用的,我們稱為 kubectl;一個是提供給 worker 節點使用的,我們稱為 kubelet。

現在集群的運維管理員、master 節點、worker 節點已經可以彼此間進行交互了,比如說運維管理員通過 kubectl 向 master  下發一個命令,“用淘車網用戶中心 2.0 版本的鏡像創建 1000個 容器”,master 收到了這個請求之后,就要根據集群里面 worker  節點的資源信息進行一個計算調度,算出來這 1000 個容器應該在哪些 worker 上進行創建,然后把創建指令下發到相應的 worker  上。我們把這個負責調度的組件稱為 kube scheduler。

那 master 又是怎么知道各個 worker 上的資源消耗和容器的運行情況的呢?這個簡單,我們可以通過 worker 上的 kubelet  周期性的主動上報節點資源和容器運行的情況,然后 master 把這個數據存儲下來,后面就可以用來做調度和容器的管理使用了。至于數據怎么存儲,我們可以寫文件、寫  db 等等,不過有一個開源的存儲系統叫 etcd,滿足我們對于數據一致性和高可用的要求,同時安裝簡單、性能又好,我們就選 etcd 吧。

現在我們已經有了所有 worker 節點和容器運行的數據,我們可以做的事情就非常多了。比如前面所說的,我們使用淘車網用戶中心 2.0 版本的鏡像創建了  1000 個容器,其中有5個容器都是運行在 A 這個 worker 節點上,那如果 A 這個節點突然出現了硬件故障,導致節點不可用了,這個時候 master  就要把 A 從可用 worker 節點中摘除掉,并且還需要把原先運行在這個節點上的 5 個用戶中心 2.0 的容器重新調度到其他可用的 worker  節點上,使得我們用戶中心 2.0 的容器數量能夠重新恢復到 1000  個,并且還需要對相關的容器進行網絡通信配置的調整,使得容器間的通信還是正常的。我們把這一系列的組件稱為控制器,比如節點控制器、副本控制器、端點控制器等等,并且為這些控制器提供一個統一的運行組件,稱為控制器管理器(kube-controller-manager)。

那 master 又該如何實現和管理容器間的網絡通信呢?首先每個容器肯定需要有一個唯一的 ip 地址,通過這個 ip  地址就可以互相通信了,但是彼此通信的容器有可能運行在不同的 worker 節點上,這就涉及到 worker 節點間的網絡通信,因此每個 worker  節點還需要有一個唯一的 ip 地址,但是容器間通信都是通過容器 ip 進行的,容器并不感知 worker 節點的 ip 地址,因此在 worker  節點上需要有容器 ip 的路由轉發信息,我們可以通過 iptables、ipvs 等技術來實現。那如果容器 ip 變化了,或者容器數量變化了,這個時候相關的  iptables、ipvs 的配置就需要跟著進行調整,所以在 worker 節點上我們需要一個專門負責監聽并調整路由轉發配置的組件,我們把這個組件稱為 kube  proxy(此處為了便于理解,就不展開引入 Service 的內容了)。

我們已經解決了容器間的網絡通信,但是在我們編碼的時候,我們希望的是通過域名或者 vip 等方式來調用一個服務,而不是通過一個可能隨時會變化的容器  ip。因此我們需要在容器 ip 之上在封裝出一個 Service 的概念,這個 Service 可以是一個集群的  vip,也可以是一個集群的域名,為此我們還需要一個集群內部的 DNS 域名解析服務。

另外雖然我們已經有了 kubectl,可以很愉快的和 master 進行交互了,但是如果有一個 web  的管理界面,這肯定是一個更好的事情。此處之外,我們可能還希望看到容器的資源信息、整個集群相關組件的運行日志等等。

像 DNS、web 管理界面、容器資源信息、集群日志,這些可以改善我們使用體驗的組件,我們統稱為插件。

至此,我們已經成功構建了一個容器編排系統,我們來簡單總結下上面提到的各個組成部分:

  • Master 組件:kube-apiserver、kube-scheduler、etcd、kube-controller-manager

  • Node 組件:kubelet、kube-proxy

  • 插件:DNS、用戶界面 Web UI、容器資源監控、集群日志


K8s該快速入門

這些也正是 K8s 中的重要組成部分。當然 K8s  作為一個生產級別的容器編排系統,這里提到的每一個組件都可以拿出來單獨講上很多內容,本文只是一個簡單入門,不再展開講解。

4 Serverless 的容器編排系統

雖然我們已經成功實現了一個容器編排系統,并且也用的很舒服,但是淘車網的王總裁(已經不是當年的小王了)覺得公司花在這個編排系統上的研發和運維成本實在是太高了,想要縮減這方面的成本。王總想著有沒有一個編排系統,能夠讓員工專注到業務開發上,而不需要關注到集群的運維管理上,王總和技術圈的同學了解了一下,發現  Serverless 的理念和他的想法不謀而合,于是就在想啥時候出一個 Serverless 的容器編排系統就好啦。

關于K8s該快速入門就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

k8s
AI

石城县| 林周县| 东辽县| 庐江县| 台南县| 平罗县| 鲁山县| 神池县| 钟祥市| 长乐市| 福贡县| 和平区| 金乡县| 吕梁市| 昌乐县| 乌兰浩特市| 嘉禾县| 盱眙县| 东宁县| 宜黄县| 兖州市| 彭山县| 神农架林区| 泸水县| 盐源县| 项城市| 宁乡县| 依安县| 温泉县| 八宿县| 繁昌县| 乌兰察布市| 普兰县| 瑞金市| 贵溪市| 喀什市| 威海市| 沙雅县| 定襄县| 广东省| 水富县|