久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

的12大關鍵特性分別是什么

168次閱讀
沒有評論

共計 4403 個字符,預計需要花費 12 分鐘才能閱讀完成。

這篇文章給大家介紹的 12 大關鍵特性分別是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

  導讀:

Kubernetes 如今風靡一時,所有主要的云服務提供商都將其作為部署云原生應用的解決方案。Kubernetes 有哪些顯著的特性和工具優勢,讓企業開始接受它?本文作者給出了系統的梳理。

“Action without orchestration is burn out; orchestration w/o action is management.”

沒有編排的行動是完蛋的,沒有行動的編排是管理,行動加上編排是領導。

― Orrin Woodward”

Kubernetes 是一種優化資源利用率的抽象概念,它允許跨節點集群高效地進行應用程序分發。

Kubernetes,舵手 !

Kubernetes 是一個希臘語單詞,意思是“舵手”。

它是一個由谷歌開始的開源項目,從 Borg 衍生而來,在谷歌內部使用了好幾年,現在用于容器管理。目前由 CNCF 托管。

Kubernetes(縮寫為 K8S)是一種抽象,它通過容器來優化 CPU 和內存等資源的利用率,從而可以跨多個節點高效地進行應用程序分發。K8S 可以在裸金屬或任何云基礎設施提供商的任何地方運行。這個新工具是云無關的,聚焦于在基礎設施內部部署和調度容器,而不是直接利用節點 / 主機。

K8S 提供的一些平臺特性是:

使用 pod 進行容器分組自愈自動伸縮 DNS 管理負載均衡滾動更新或回滾資源監控和日志記錄

Kubernetes 架構

Kubernetes 集群由主節點和一組 worker/ 從屬節點組成。

Kubernetes 的主節點組成部分是:

API 服務器(API Server):用戶通過 Rest 操作或 kubectl cli 與 manifestyaml 交互。它用于所有與 API 對象相關的操作,如 pod 創建,它是在 etcd 中存儲所需狀態的唯一組件。

調度器(Scheduler):用戶使用 kubectl cli 向 API 服務器發出一個命令來創建 pod。在執行此操作之后,調度程序根據資源需求將 pods 分配給可用節點。

控制器管理器(Controller Manager):控制器管理器基于集群狀態對資源進行操作,并根據清單 yaml 進行更改,將當前狀態應用程序達到所需狀態。換句話說,控制器管理器可以將實際狀態與所需的狀態進行協調。在控制器管理器中有多個專用的控制器,以便簡化集群管理。例如,節點控制器檢查是否有當前正在運行的節點停機,并采取糾正措施,而復制控制器確保在節點中實際運行所需的 pod 數量。

etcd:所有關于集群狀態的配置信息都以 key/value 對的形式存儲在 etcd 中,這個組件由 CoreOS 實現。這些狀態顯示了集群中包含的節點和需要在其中運行的 pods。

插件(Addons):為了將服務器 DNS 記錄添加到 Kubernetes,我們需要一個集群 DNS 插件。該插件有助于擴展與 Kubernetes 集群或節點相關的功能。還有許多其他的插件,比如用于日志記錄的 fluntd、基于角色訪問的 rbac 等等。

安裝在 Kubernetes 節點中的組件是:

Docker: Docker 守護進程在每個節點中運行。如果容器鏡像不存在,那么它將從 docker 注冊中提取并運行。

Kubelet: Kubelet 節點代理定期檢查容器內容器的健康狀況。此外,它還確保按 manifest 安裝卷,并下載運行容器所需的敏感信息。它還將節點鏈接到 API 服務器。

Kube-proxy: Kube-proxy 在每個節點上運行,以便在 pod 中進行負載分配,并為外部主機提供可用的服務。它使用 iptable 規則或輪詢調度來將請求轉發到正確的容器。

對于高可用和容錯的 Kubernetes 生產和部署,需要多個主節點和一個單獨的 etcd 集群。如果運行了三個 API 服務器,則需要一個網絡負載平衡器來正確地將負載分配到服務器。唯一剩下的問題是需要三個角色來管理控制器管理器和調度器以維護集群狀態和分配節點。為了更高效、更可靠地執行它,只有一個參與者應該執行實際的更改,但是在機器宕機的情況下仍然需要其他實例。為了解決這個問題,我們可以在 API 中使用 lease-lock 來執行主選,而使用它的標志是 leader- elect。

Kubernetes 通過以下任一種方式實現從 Pod 到 Pod 的聯網:

1)第 2 層 (切換解決方案)2) 第 3 層(橋接解決方案)3) overlay 解決方案(weave andflannel)

它們允許在集群中進行 Pod 和 Pod 之間的通信,并為每個 Pod 提供唯一的 IP 地址。

Kubernetes 關鍵特性

Pod: Collection of Containers 容器集

pod 是 K8S 中的一個部署單元,它有一個單獨的 IP 地址。在它內部,Pause 容器通過持有一個網絡的名稱空間、端口和 ip 地址來處理網絡,而這個地址又被 pod 中的所有容器使用。

ReplicationController

ReplicationController 確保在給定的時間內啟動和運行所需的容器數量。Pod 模板用于定義容器鏡像標識符、端口和標簽。使用 liveness probes,它可以自動治愈 pods,并按照期望的狀態維持 pods 數量。也可以通過使用 kubectl 來手動控制副本計數。

存儲管理

Pods 本質是短暫的——任何儲存在 pod 或容器中的信息都會丟失。為了存儲數據,一個持久的系統是必需的,即使在一個 pod 被殺死或重新調度之后,如 Amazon Elastic Block Storage (EBS),谷歌 GCE PD,或一個分布式文件系統,如網絡文件系統 (NFS) 或 Gluster 文件系統(GFS)。

資源監控

監控是成功運行基礎設施的關鍵之一,它是可靠性等級的基礎。Heapster 是一個從 kubelet 收集指標的插件,與 cAdvisor 集成。cAdvisor 用于收集與運行容器的 CPU、內存、I/ O 和網絡統計數據相關的指標。由 Heapster 收集的數據存儲在 influx DB 中,并使用 Grafana 在 UI 中顯示。還有其他可使用的接收器,如 Kafka 或 Elastic Search,可以用于存儲數據并顯示在用戶界面中。

健康檢查

kubernetes 的健康檢查由 kubelet 代理完成。它分為 liveness 和 readiness probes 兩種。

處理程序主要有三種類型:

ExecAction: 執行 Shell 命令,如果生成的退出代碼為 0,則意味著實例是健康的。在任何其他情況下,實例不健康。TCPAction: Kubelet 將嘗試連接到指定的端口,如果它建立到給定 socket 的連接,診斷成功。HTTPGetAction: 基于應用程序公開的 HTTP 端點,kubelet 對指定路徑上的容器 IP 地址執行 HTTP GET 請求,如果返回 200 到 300 個響應代碼,診斷就成功了。

每個 probe 通常有三個結果:

成功: 容器通過診斷。失敗: 容器未通過診斷。未知: 診斷失敗,不要采取任何行動。

水平自動伸縮功能

自動伸縮使用基于負載的計算資源。K8S scale pod 自動使用 Horizontal Pod Autoscaler 對象,從 Heapster 獲取度量數據,并相應地減少或增加 pod 的數量。例如,如果自動伸縮是基于內存利用率,那么控制器就會開始在 pod 中觀察內存使用情況,并根據容量對該副本計數進行擴展。

服務發現

Kubernetes pods 是短暫的,ReplicationController 在任何節點上動態創建它們,因此在集群中發現服務是一個挑戰。服務需要發現一個 IP 地址和動態的端口,以便在集群中進行通信。

有兩種主要的方法來找到它——環境變量(Environment variables)和 DNS。

更可取的是基于 DNS 的服務發現,它可以作為集群附加組件使用。跟蹤集群中的新服務,并為每個服務創建一組 DNS 記錄。

網絡

要完全管理集群,必須正確設置網絡,并解決三個網絡問題:

1.容器到容器的通信:pods 通過本地主機通信,并使用 Pause 容器網絡名稱空間,解決這個問題。2.Pod-to-Pod 通信:由軟件定義的網絡解決,如上面架構圖所示。3.外部到 pod 通信:由服務覆蓋。

Kubernetes 提供了廣泛的網絡選擇?,F在還支持容器網絡接口 (CNI) 插件,這是容器的通用插件架構。目前支持多種編排工具,如 Kubernetes、Mesos 和 CloudFoundry。

有各種覆蓋插件:

1.Flannel 來自 CoreOS,是一個非常簡單的 etcd 后端覆蓋網絡。它創建了另一個虛擬的、可路由的 IP / Pod 網絡,運行在底層網絡之上;ergo,稱為覆蓋網絡。在這個覆蓋網絡中,每個 Pod 將被分配一個 IP 地址,并且會直接使用它們的 IP 進行通信。2.Weave 通過 CNI 插件提供與 Kubernetes 兼容的覆蓋網絡。

服務

Kubernetes 服務是一種抽象,它將通信路由到一組 pod,以提供一個微服務。Kube-proxy 在每個節點上運行,并通過設置一組 iptable 規則來管理服務。

設立服務的模式有三種:

1.ClusterIP(只提供內部訪問)2.NodePort(需要在端口上打開防火墻; 不建議公開訪問)3. 負載均衡器(由 AWS 或 GKE 等公有云供應商擁有)

ConfigMap 和 Secret

ConfigMap 使注入基于環境的配置成為可能,同時使容器鏡像在多個環境中保持一致。這些可以通過安裝卷或環境變量(environment variables)來注入,并將這些值存儲在 key/value 格式中。

Secrets 用于存儲敏感數據,如密碼、OAuth 令牌等。

滾動部署和回滾

部署對象持有一個或多個副本集,以支持回滾機制。換句話說,每次更改部署配置時都會創建一個新的副本集,并保留以前的版本,以便有回滾選項。只有一個副本集將在特定時間處于活動狀態。

對于滾動部署,需要的策略類型是 RollingUpdate 和 minReadySecs,它指定應用程序為服務流量所花費的時間。如果在應用程序 pod 還沒有準備好時,將其保持默認狀態,它將不可用。這個動作可以通過以下命令來完成:

或者,

通過替換部署 yaml 文件中的內容并運行以下命令:

如果新版本不像預期的那樣,那么可以通過運行以下命令回滾到以前的版本:

如果所需版本是前一版本以外的版本,則運行:

Logging 記錄

要監視應用程序的行為,必須檢查日志——每個 pod 生成多個日志。要開始在儀表板 UI 中搜索日志,必須有一些機制收集并將它們聚合到一個日志查看器中。為了說明這一點,Fluentd 是一個開源工具,也是 CNCF 的一部分,與 Elastic Search 和 Kibana 完美結合。

關于的 12 大關鍵特性分別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計4403字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 巴中市| 民勤县| 宁陕县| 曲靖市| 长治市| 故城县| 宝丰县| 海安县| 社旗县| 清河县| 林西县| 临漳县| 凭祥市| 洛浦县| 天等县| 济源市| 呼图壁县| 绥滨县| 平顶山市| 乌审旗| 吉隆县| 井陉县| 石河子市| 策勒县| 黄石市| 当雄县| 永安市| 高密市| 托克逊县| 哈密市| 虹口区| 聊城市| 清水河县| 启东市| 扬州市| 河北区| 尖扎县| 滕州市| 和林格尔县| 河源市| 武陟县|