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

溫馨提示×

溫馨提示×

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

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

初識Kubernetes(K8s):理論基礎

發布時間:2020-07-16 08:19:09 來源:網絡 閱讀:2081 作者:xuad88 欄目:云計算

Kubernetes是什么?
Kubernetes,簡稱K8s,是用8代替8個字符“ubernete”而成的縮寫。Kubernetes是Google開源的一個容器編排引擎,同時也是一個開源的容器集群管理系統,可以實現容器應用的自動化部署、自動擴縮容、監控和維護等功能。

一、Kubernetes架構

Kubernetes最初源于谷歌內部的Borg,提供了面向應用的容器集群部署和管理系統。Kubernetes的目標旨在消除編排物理/虛擬計算、網絡和存儲基礎設施的負擔,并使應用程序運營商和開發人員完全將重點放在以容器為中心的原理上進行自助運營。
Kubernetes具備完善的集群管理能力,包括多層次的安全防護和準入機制、多租戶應用支撐能力、透明的服務注冊和服務發現機制、內建負載均衡器、故障發現和自我修復能力、服務滾動升級和在線擴容、可擴展的資源自動調度機制、多粒度的資源配額管理能力。
Borg是谷歌內部的大規模集群管理系統,負責對谷歌內部很多核心服務的調度和管理。Borg的目的是讓用戶能夠不必操心資源管理的問題,從而更專注于自己的核心業務。Borg甚至能做到跨多個數據中心的資源利用率最大化。
初識Kubernetes(K8s):理論基礎
Kubernetes屬于主從分布式架構,主要由Master和Node組成,以及包括客戶端命令行工具kubectl和其它附加項。

Master:作為控制節點,對集群進行調度管理;由kube-apiserver、kube-scheduler、kube-controller-manager和etcd組成。
Node:作為工作節點,運行業務應用的容器;由kubelet、kube-proxy和docker(或者rocket)組成。

二、Kubernetes組件

Master指的是集群控制節點,每個Kubernetes集群里需要有至少一個Master來負責集群的管理和控制。Master可以是一臺物理機,也可以是一臺虛擬機,Master節點上運行著以下組件:
kube-apiserver:提供了HTTP Rest接口的關鍵服務進程,是集群里所有資源的增、刪、改、查等操作的唯一入口,也是集群的控制入口。
kube-controller-manager:運行管理控制器,是集群中處理常規任務的后臺進程,每個Controller都負責一種具體的控制流程,而Controller Manager就是這些Controller的核心管理者。
kube-scheduler:負責資源調度(Pod調度)的進程,為新創建的Pod選擇一個Node節點。
etcd:是kubernetes默認的存儲系統,集群里所有資源對象的數據全部保存在etcd中。

Node指的是集群的工作節點,和Master一樣,可以是一臺物理主機,也可以是一臺虛擬機。每個Node都會被Master分配一些工作負載(Docker容器),當某個Node宕機時,其上的工作負載會被Master自動轉移到其他節點上去。Node上運行的組件如下:
kubelet:負責Pod對應的容器的創建、啟停等任務,同時與Master節點密切協作,實現集群管理的基本功能。
kube-proxy:實現Kubernetes Service的通信與負載均衡機制的重要組件。
docker:容器引擎,負責本機的容器創建和管理工作。

三、Kubernetes對象

  • Pod
    Pod是Kubernetes集群創建或部署的最基本、最小的單位,每個Pod里運行著一個或多個容器,每個Pod里都有一個特殊的被稱為Pause的容器,其他容器則為業務容器,這些業務容器共享Pause容器的網絡棧和Volume(存儲卷)。Kubernetes為每個Pod都分配了唯一的IP地址,稱為Pod IP,一個Pod里的所有容器共享這一個Pod IP。
  • Service
    Service定義了這樣一種抽象:一個Pod的邏輯分組,一種可以訪問它們的策略。Service通常被稱為微服務,定義了一個服務的訪問入口地址,前端的應用(Pod)通過這個入口訪問其背后的一組由Pod副本組成的集群實例,Service與其后端Pod副本集群之間通過Label Selector來實現通信。
  • Label
    標簽,一個Label就是一個key=value的鍵值對,由用戶自己指定。Label可以附加到各種資源對象上,例如Pod、Service等,一個資源對象可以定義任意數量的Label,同一個Label也可以被添加到任意數量的資源對象上去。Label通常在資源對象定義時確定,也可以在對象創建后動態添加或者刪除。
  • Volume
    存儲卷,與Docker的Volume比較類似,不同的是,Kubernetes中的Volume定義在Pod上,這個Pod里的所有容器都可以將其掛載到具體的文件目錄下,實現容器間的資源共享。
  • Persistent Volume
    網絡存儲卷,與Volume不同的是,它是在Node之間共享資源,每個Node都可以掛載使用。Pod可通過定義一個PersistentVolumeClaim(PVC)對象,來使用Persistent Volume資源。
  • Name
    Kubernetes REST API中的所有對象都用Name和UID來明確地標識。Name在一個對象中同一時間只能擁有一個Name,如果對象被刪除,也可以使用相同的Name創建新的對象,Name用于在資源引用URL中的對象。
  • Namespace
    命名空間,很多情況下用于實現多租戶的資源隔離。Namespace通過將集群內部的資源對象“分配”到不同的Namespace中,形成邏輯上分組的不同項目、小組或用戶組,便于不同的分組在共享使用整個集群的資源的同時還能被分別管理。
  • Horizontal Pod Autoscaling
    簡稱HPA,是Kubernetes中實現Pod水平自動伸縮的功能。對于Pod集群來說,HPA可以實現很多自動化功能,當Pod中業務負載上升的時候,可以創建新的Pod來保證業務系統穩定運行;當Pod中業務負載下降的時候,可以銷毀Pod來提高資源利用率。
  • Annotation
    注解,與Label類似,使用key/value鍵值對的形式進行定義。Annotation是用戶任意定義的“附加”信息,以便于外部工具進行查找。很多時候,Kubernetes的模塊自身會通過Annotation的方式標記資源對象的一些特殊信息。
  • ReplicaSet
    ReplicaSet(RS)是Replication Controller(RC)的升級版本,確保運行指定數量的Pod。RC與RS的唯一區別就是對Lable Selector的支持不同,RS支持新的基于集合的標簽,RC僅支持基于等式的標簽。
    當我們定義了一個RS并提交到Kubernetes集群中,Master節點上的Controller Manager組件就得到通知,定期巡檢系統中當前存活的目標Pod,并確保目標Pod實例的數量剛好等于此RS的期望值,如果有過多的Pod副本在運行,系統就會停掉多余的Pod;如果小于RS的期望值,系統就會自動創建一些新的Pod,使其目標Pod實例的數量等于RS的期望值。
  • Deployment
    Deployment為Pod和ReplicaSet提供聲明式更新,通過它來管理Pod和ReplicaSet。當我們要部署一個Pod時,需要創建、調度、綁定節點和啟動容器這一完整過程,而Deployment就是負責這一整個部署過程的。
    Deployment的典型使用場景有以下幾個:
    創建一個Deployment對象來生成對應的ReplicaSet,并完成Pod副本的創建過程。
    檢查Deployment的狀態來查看部署工作是否完成(Pod副本的數量是否達到預期的值)。
    更新Deployment以創建新的Pod(比如鏡像升級)。
    如果當前Deployment不穩定,則回滾到一個早先的Deployment版本。
    掛起或者恢復一個Deployment。
  • StatefulSet
    StatefulSet為Pod提供唯一標識,實現有序的部署、刪除和擴展。Deployment用于部署無狀態服務,StatefulSet用來部署有狀態服務。
    StatefulSet的使用場景如下:
    穩定性,唯一的網絡標識。
    穩定性,持久化存儲。
    有序的部署和擴展。
    有序的刪除和終止。
    有序的自動滾動更新。
  • DaemonSet
    DaemonSet能夠讓所有(或者特定)的Node節點運行同一個Pod。當節點加入到Kubernetes集群中,Pod會被DaemonSet調度到該節點上運行,當節點從集群中移除時,被DaemonSet調度到該節點上的Pod也會被移除。如果刪除DaemonSet,與DaemonSet相關的Pod都會被刪除。
  • Job
    僅執行一次的任務,任務執行完成后Pod銷毀,可批量處理一次性任務。還可以讓任務定時運行。

    四、總結

    上述這些組件都是Kubernetes系統的核心組件,它們共同構成了Kubernetes系統的框架和計算模型。通過對它們進行靈活組合,用戶就可以快速、方便地對容器集群進行配置、創建和管理。除了本文所介紹的核心組件,Kubernetes中還有許多輔助配置的資源對象,例如LimitRange、ResourceQuota等。另外,還有一些系統內部使用的對象,例如Binding、Event等可參考官方API文檔。
    說在最后
    本人也是剛接觸Kubernetes(K8s),本文內容是摘自相關書籍和網上的相關資料,并結合自己的理解所寫的,如有理解錯誤的地方還請大家不吝指出,共同進步。
    由于國內關于Kubernetes的學習資料很少,51cto上倒是有相關的訂閱專欄,但都是要錢的,對于這個我不做評論。這里向跟我一樣的初學者推薦一本書《Kubernetes權威指南(第2版)》,網上可以下載到PDF版本,雖然這本書講的Kubernetes的版本是1.3的,版本比較老,但對于初學者可以學習它的理論知識,并結合網上新版本的相關資料自行理解,也是一種非常不錯的學習方法。
    對Kubernetes(K8s)有興趣的朋友,可以關注我的博客,后面我會繼續發表學習Kubernetes的博文,歡迎各位朋友和我一起踏上Kubernetes(K8s)的旅程。

向AI問一下細節

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

AI

定州市| 沈阳市| 屏山县| 永川市| 青龙| 榆林市| 南和县| 乐陵市| 科技| 夏河县| 三河市| 丰都县| 孙吴县| 若羌县| 札达县| 措勤县| 梅河口市| 秦安县| 武邑县| 婺源县| 邯郸县| 马山县| 河曲县| 尚义县| 广平县| 体育| 尼勒克县| 抚远县| 乌兰察布市| 靖宇县| 彩票| 安西县| 武城县| 九寨沟县| 施甸县| 嘉峪关市| 三亚市| 鹰潭市| 白沙| 泗洪县| 华阴市|