日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

K8s組件全解析,你需要知道的一切秘密

當你部署完 Kube.NETes,便擁有了一個完整的集群。

Kubernetes,作為目前最流行和廣泛采用的容器編排和管理平臺,背后有一系列強大的組件,共同協作以實現容器化應用的自動化部署、彈性擴展、服務發現和負載均衡等關鍵功能。本文將介紹 Kubernetes 集群中的主要組件,揭示它們的作用和相互關系,為您提供關于 Kubernetes 內部工作原理的深入理解。

安裝前有幾個概念要了解下

  • Node(節點): 在 Kubernetes 中,節點是集群中的工作機器。每個節點上都運行著容器,由 Kubernetes 管理。
  • API Server(API 服務器): API 服務器是 Kubernetes 集群控制平面的前端,處理來自用戶和其它組件的 API 請求,驗證請求并將配置數據持久化。
  • kubelet: kubelet 是運行在每個節點上的代理,它負責與 Master 節點通信,確保節點上運行的容器處于預期狀態。
  • kube-proxy: kube-proxy 負責維護節點上的網絡規則,以及為服務提供負載均衡和代理功能,以確保服務之間的網絡通信。
  • etcd: etcd 是一個分布式鍵值存儲系統,用于保存集群的配置數據、狀態和元數據。它是 Kubernetes 控制平面中的重要組件之一。
  • Scheduler(調度器): 調度器負責將新創建的 Pod 分配到合適的節點上,考慮節點資源和約束等因素來進行調度決策。
  • Controller Manager(控制器管理器): 控制器管理器包含多個控制器,用于監控集群狀態的變化,并根據所需的狀態進行調整。例如,Replication Controller 控制器負責維護副本數。

1、kube-apiserver

kube-apiserver 是 Kubernetes 控制平面的前端,扮演著用戶和其它組件與集群交互的入口。它處理來自客戶端、命令行工具和控制器的 API 請求,執行驗證、授權和數據持久化,將集群的配置狀態存儲在 etcd 中。

kube-apiserver 的功能和穩定性對于整個集群的可靠性至關重要。

功能和作用:

  • API 前端:kube-apiserver 為 Kubernetes 集群提供了一個統一的 API 入口,允許用戶、命令行工具和各種組件通過 RESTful API 與集群進行交互。這包括創建、更新和刪除資源對象,如 Pod、Service、Deployment 等。
  • 認證和授權:kube-apiserver 負責驗證請求的身份,確保只有經過身份驗證的用戶和組件才能訪問 API。此外,它也負責授權,根據用戶的權限來決定是否允許請求對資源的操作。
  • 數據持久化: 集群的配置數據和狀態信息存儲在 etcd 中,而 kube-apiserver 負責與 etcd 進行通信,將配置數據持久化到 etcd 中,以及從 etcd 中讀取數據。
  • 資源管理:kube-apiserver 負責監控資源的狀態和變化,并在資源狀態發生變化時,通知控制器和其他組件進行相應的操作。這有助于保持集群中各個資源的一致性和期望狀態。
  • 擴展性和自定義:kube-apiserver 支持多版本 API,允許用戶自定義資源類型和自定義控制器,以滿足特定的業務需求。

2、etcd

etcd 是 Kubernetes 的分布式鍵值存儲系統,被用于保存集群的配置數據、狀態和元數據。作為 Kubernetes 控制平面的持久化存儲,etcd 的可靠性和一致性對整個集群的穩定運行至關重要。

etcd 的主要特點包括:

  • 一致性: etcd 確保數據存儲的強一致性。它使用 Raft 共識算法,使集群中的多個節點能夠就數據的狀態達成一致。
  • 分布式: etcd 被設計用于在多個節點構成的集群中運行。這確保了冗余性和容錯性。
  • 鍵值存儲: etcd 提供了簡單的鍵值數據模型,您可以使用鍵存儲和檢索數據。值可以是字符串、二進制數據,甚至是序列化的數據結構,如 JSON。
  • 觀察機制: etcd 支持觀察機制,允許應用程序在特定鍵被修改時接收通知。這對于構建對配置或其他關鍵數據的更改做出反應的應用程序非常有用。
  • HTTP/gRPC API: etcd 提供了 HTTP 和 gRPC API,從而方便您使用不同的編程語言和平臺與集群交互。
  • 配置管理: etcd 經常用于存儲分布式應用的配置數據。這使得跨多個應用程序實例更新配置設置變得更加容易。
  • 服務發現: etcd 可用于服務發現,允許應用程序動態地發現分布式系統中的服務位置。
  • 領導者選舉: etcd 的 Raft 共識算法也可以用于領導者選舉場景,其中分布式系統需要選擇一個協調的領導者節點。
  1. 安全性: etcd 支持認證和傳輸加密,以確保集群內的通信安全性。

3、kube-scheduler

kube-scheduler 是 Kubernetes 集群中的一個核心組件,負責在集群中選擇合適的節點(Node)來運行新創建的 Pod。它根據一系列的策略和條件,將 Pod 分配到最合適的節點上,以實現負載均衡和資源利用最優化。

以下是 kube-scheduler 的主要工作原理和特點:

  • 節點選擇策略:kube-scheduler 根據一組可配置的節點選擇策略來決定將 Pod 分配到哪個節點。這些策略可以根據資源需求、親和性(Affinity)、反親和性(Anti-Affinity)、節點污點(TAInts)等因素進行設置。
  • 資源利用優化:kube-scheduler 會考慮集群中每個節點的資源利用情況,以確保新的 Pod 被分配到資源充足的節點上,從而避免資源浪費和過度擁塞。
  • 親和性和反親和性:kube-scheduler 可以配置 Pod 對某些節點的親和性或反親和性。這意味著 Pod 可以被分配到滿足指定標簽的節點上,或者避免分配到具有特定標簽的節點上。
  • 節點污點和容忍度: 節點可以設置污點,表示它們有某些限制條件,如特定的硬件或軟件。Pod 可以通過容忍度設置來表示它們可以容忍的節點污點,這樣 kube-scheduler 就會將 Pod 分配到與其容忍度匹配的節點上。
  • 插件擴展:kube-scheduler 允許用戶通過插件來定制節點選擇過程。這使得用戶可以根據自己的需求添加自定義的調度策略。
  • 可擴展性:kube-scheduler 支持同時運行多個調度器實例,每個實例可以具有不同的配置和策略。這種架構可以根據需求進行橫向擴展,以處理更大規模的集群。
  • 調度延遲: 由于調度器需要考慮多種因素來做出決策,因此在創建新 Pod 時可能會出現一定的調度延遲。這取決于集群的負載、調度策略和其他因素。

4、kube-controller-manager

kube-controller-manager 是 Kubernetes 集群中的一個核心組件,它負責管理各種控制器,監控集群狀態,以及確保集群中的實際狀態與期望狀態保持一致。這些控制器負責自動化集群中的各種任務和功能,例如副本控制、節點管理、服務和端點等。

以下是 kube-controller-manager 的一些主要功能和控制器示例:

  • Replication Controller 控制器: 負責管理Pod副本數,確保在集群中始終有指定數量的Pod實例在運行。如果Pod數目少于期望的數量,Replication Controller 將創建新的 Pod 副本。
  • Deployment 控制器: 基于聲明式配置,管理 Pod 的部署和更新。它可以創建和管理多個版本的應用程序,支持滾動更新和回滾。
  • Node Controller 控制器: 負責監控節點的狀態,并確保集群中的節點數目保持在所需的范圍內。如果節點離線或不可用,Node Controller 將采取措施進行調整。
  • Service Controller 控制器: 確保 Service 對象中定義的網絡終結點與底層 Pod 的變化保持一致。它通過更新底層的 Endpoints 對象來實現。
  • Namespace Controller 控制器: 確保 Namespace 的創建和刪除符合預期,并在命名空間被刪除時清理相關資源。
  • Persistent Volume Controller 控制器: 監控 Persistent Volume 和 Persistent Volume Claim 的狀態,確保正確的存儲資源分配。
  • Job Controller 控制器: 用于管理一次性任務,確保任務的成功執行。它可以處理任務的重試和失敗。
  • DaemonSet 控制器: 確保每個節點上都運行有一個 Pod 的副本,適用于在每個節點上運行特定任務的場景。

5、kubelet

kubelet 是 Kubernetes 集群中的一個重要組件,運行在每個節點上,負責管理該節點上的容器和Pod。它與控制平面(如 API Server 和 kube-controller-manager)通信,確保節點上的容器與期望的狀態保持一致。

以下是 kubelet 的一些主要功能和工作原理:

  • Pod 管理:kubelet 負責管理節點上的 Pod。它根據從 API Server 獲取的 Pod 定義(PodSpec)來創建、啟動、停止和刪除容器。
  • 容器生命周期管理:kubelet 負責監控容器的運行狀態,并在需要時重新啟動失敗的容器。它還會處理容器的存儲卷掛載、網絡設置等操作。
  • 資源管理:kubelet 監控節點上的資源利用情況,確保不超出節點的資源限制。它可以根據資源請求和限制設置合適的 QoS 類別,并調整 Pod 資源分配。
  • 健康檢查和探針:kubelet 通過周期性的健康檢查和探針來監控容器的健康狀態。如果容器不健康,kubelet 將采取相應的措施,如重新啟動容器或從服務中移除。
  • Pod 事件和狀態報告:kubelet 會將節點上發生的事件和狀態信息報告給集群的 API Server,以便控制平面能夠跟蹤每個節點和 Pod 的狀態。
  • 與控制平面通信:kubelet 與 API Server 和 kube-controller-manager 進行通信,以獲取 Pod 定義、報告狀態,以及接收指令來啟動或停止容器。
  • Pod 生命周期鉤子:kubelet 支持在容器生命周期各個階段執行用戶定義的鉤子,如容器創建前后、停止前后等。
  • 資源配額和限制:kubelet 根據 Pod 的資源請求和限制來監視和限制容器的資源使用。
  • 鏡像管理:kubelet 從指定的容器鏡像倉庫中下載鏡像,以供啟動容器。

6、kube-proxy

kube-proxy 是 Kubernetes 集群中的一個核心組件,負責實現集群內部的網絡通信。它通過維護節點上的網絡規則和轉發規則,為 Pod 提供網絡代理和負載均衡功能,以便讓集群中的各個 Pod 能夠相互通信。

以下是 kube-proxy 的一些主要功能和工作原理:

  • 負載均衡:kube-proxy 通過創建虛擬 IP 地址或 IPVS 負載均衡規則,將服務(Service)的流量分發到多個后端 Pod。這使得集群內的應用可以在多個實例之間實現負載均衡。
  • 網絡代理: 對于服務的流量,kube-proxy 在節點上創建規則以將流量重定向到正確的后端 Pod。這種代理方式使得客戶端能夠透明地訪問服務,而無需知道服務背后的 Pod 是如何部署的。
  • Service 實現模式:kube-proxy 支持多種 Service 實現模式,如 iptables、IPVS、以及 userspace。不同模式在不同的網絡環境中提供不同的性能和特性。
  • Service Discovery:kube-proxy 還提供了服務發現的功能,允許客戶端通過 Service 名稱來訪問服務,而不必知道后端 Pod 的具體 IP 地址。
  • 規則維護:kube-proxy 監控 Service 和 Endpoint 的變化,以及 Pod 的增刪變化。如果有變化,它會更新相應的規則,確保網絡流量被正確地路由到目標 Pod。
  • 環境適應性:kube-proxy 的底層實現方式取決于集群節點的操作系統和網絡環境。它會根據環境的差異來選擇適當的實現模式。
  • 高可用性: 通常情況下,每個節點上都運行有一個 kube-proxy 實例,以確保在節點故障時仍然可以維護服務的連通性。

7、容器運行時(Container Runtime)

容器運行時(Container Runtime)是負責創建、運行和管理容器的軟件組件。在 Kubernetes 集群中,容器運行時負責在節點上創建和管理容器化的應用程序。

Kubernetes 不直接與容器進行交互,而是通過容器運行時來管理容器。它通過與容器運行時交互來創建、啟動、停止和刪除容器,以及管理容器的生命周期。

以下是一些常見的容器運行時:

  • Docker: Docker 是最為廣泛使用的容器運行時。它使用 Docker 鏡像來創建和管理容器。Docker 的客戶端和服務端模型為容器提供了良好的抽象。
  • containerd: containerd 是一個輕量級的容器運行時,最初是由 Docker 開發的,后來成為一個獨立的項目。它提供了容器的基本功能,如創建、啟動和停止容器。
  • CRI-O: CRI-O 是專門為 Kubernetes 設計的容器運行時。它遵循 Kubernetes 容器運行時接口(CRI),支持容器的生命周期管理和鏡像管理。
  • rkt(Rocket): rkt 是由 CoreOS 開發的容器運行時,具有一些特點,如強調安全性、簡化的鏡像格式等。
  • Kata Containers: Kata Containers 是一個開源項目,將虛擬機和輕量級容器技術相結合,提供更高的隔離性和安全性。
  • gVisor: gVisor 是 google 開源的一個容器運行時,提供了沙箱機制,增強了容器的安全性。

8、CoreDNS / kube-dns

CoreDNS 和 kube-dns 都是 Kubernetes 集群中用于域名解析(DNS)的服務。它們的作用是將 Pod 名稱和 Service 名稱解析為相應的 IP 地址,從而實現在集群內部進行服務發現和網絡通信。

這兩者的功能相似,但有些差異。下面我會為你詳細解釋它們的特點和用途:

kube-dns:

kube-dns 是 Kubernetes 最早引入的 DNS 解決方案,它由三個部分組成:

  • kube-dns Server(SkyDNS): 這是一個 DNS 服務器,負責在 Kubernetes 集群內為服務提供域名解析。它維護著一個 DNS 記錄,將 Service 名稱映射到相應的 Pod IP 地址。
  • etcd:kube-dns 使用 etcd 來存儲和管理 DNS 記錄。這些記錄包括 Service 和 Pod 的域名映射關系。
  • Sidecar 容器: 為了讓 Pod 能夠訪問 kube-dns,kube-dns 在每個節點上部署一個名為 "kube-dns" 的 Sidecar 容器。這個容器監聽 Pod 中的 DNS 查詢,并將其轉發給 kube-dns 服務器。

CoreDNS:

CoreDNS 是一個可插拔的、現代化的 DNS 服務器,逐漸替代了 kube-dns,成為 Kubernetes 的默認 DNS 解決方案。它具有以下特點:

  • 模塊化架構: CoreDNS 使用模塊化架構,允許通過插件來擴展和定制 DNS 功能。這使得它更加靈活和易于擴展。
  • 靈活的配置: CoreDNS 使用 Corefile 文件來配置域名解析規則,配置語法更加直觀和易于理解。
  • 支持多種后端: CoreDNS 支持多種后端數據源,包括文件、etcd、Kubernetes API 等,這使得它可以更好地集成到不同的環境中。
  • 性能: CoreDNS 被設計為輕量級且高性能的 DNS 服務器,具有更好的性能表現。

9、Node

在 Kubernetes 中,"Node" 是指集群中的一個工作節點(Worker Node)。工作節點是集群中的計算資源,負責運行容器化應用程序和管理與之相關的資源。每個節點都是一個獨立的物理機器或虛擬機,它們一起構成了 Kubernetes 集群的基礎架構。

每個節點上都運行了一些關鍵組件,其中最重要的是 kubelet。以下是節點的主要組成部分和功能:

  • Kubelet:kubelet 是運行在每個節點上的代理,負責與 Kubernetes 控制平面通信,并確保節點上的容器和 Pod 按照預期運行。它會根據從 API Server 獲取的 Pod 定義來創建和管理容器。
  • Container Runtime: 容器運行時是負責在節點上創建和運行容器的軟件。常見的容器運行時包括 Docker、containerd、CRI-O 等。
  • Kube-proxy:kube-proxy 負責維護節點上的網絡規則和轉發規則,以支持服務發現和負載均衡。它為 Pod 提供了網絡代理功能。
  • CNI 插件: CNI(Container Network Interface)插件負責配置和管理容器的網絡連接。它們確保 Pod 能夠與集群內部和外部進行通信。
  • 容器存儲卷插件: 這些插件負責將存儲卷(例如 Persistent Volume)掛載到容器中,以便應用程序可以訪問持久化的數據。
  • Node Agent: 節點代理是運行在節點上的一些輔助組件,用于收集節點的健康狀況、資源利用情況等信息,并向控制平面報告狀態。
  • 資源管理器: 資源管理器(如 kubelet)監控節點上的資源使用情況,確保不超出節點的資源限制。
  • 操作系統和硬件: 每個節點都運行有操作系統和底層硬件,它們提供了計算、存儲和網絡資源,用于運行容器化應用程序。

10、Dashboard

幾款k8s web管理界面工具:

  • Kubernetes Dashboard:這是官方提供的基于網頁的Kubernetes用戶界面,可以用來部署和管理容器應用,監控集群資源,排查問題等。您可以通過 kubectl Apply -f 命令來部署Dashboard,并通過 kubectl proxy 命令來訪問Dashboard。。
  • Rancher:這是一個開源的企業級多集群Kubernetes管理平臺,可以實現Kubernetes集群在混合云和本地數據中心的集中部署和管理,提供了豐富的功能和易用的界面。您可以通過 docker run rancher/rancher 命令來啟動Rancher,并通過 http://<SERVER_IP>:8080 來訪問Rancher。更多詳情請參考。
  • Kuboard:這是一款基于Kubernetes的微服務管理界面,旨在幫助用戶快速在Kubernetes上落地微服務。它提供了簡潔的儀表盤,方便的應用部署和日志查看,以及完善的中文文檔和教程。您可以通過 kubectl apply -f 命令來部署Kuboard,并通過 http://<your.k8s.ip>:32567 來訪問Kuboard。
  • Lens:這是一款自稱為“您管理Kubernetes集群所需的唯一IDE”的開源免費的桌面應用程序,支持多平臺和多集群。它提供了直觀的用戶界面,方便地查看集群狀態,監控性能指標,管理工作負載和服務等。您可以從[6]下載Lens,并使用kubeconfig文件來連接Kubernetes集群。

Kubernetes Dashboard

Kubernetes Dashboard 是一個用于可視化管理和監控 Kubernetes 集群的 Web 用戶界面。它提供了一種圖形化的方式來查看和管理集群中的資源、應用程序和服務,使得用戶可以更方便地進行操作和監控。

Kubernetes Dashboard 的主要特點和功能包括:

  • 資源概覽: 提供集群中各種資源的概覽,如節點、Pod、服務、副本控制器、命名空間等。
  • Pod 和容器管理: 允許用戶查看和管理 Pod 和容器的狀態、日志和配置。
  • 應用程序部署: 提供一個圖形界面,可以創建和管理應用程序部署、副本集和服務。
  • 服務發現: 顯示集群中的服務,以及它們與后端 Pod 的關聯關系。
  • 命名空間管理: 允許用戶創建和管理命名空間,用于隔離不同的項目和應用程序。
  • 事件和日志: 顯示集群中的事件和日志,幫助用戶了解發生的事件和問題。
  • 資源監控: 提供實時的資源監控信息,如 CPU 和內存的使用情況。
  • 用戶權限: 可以根據用戶角色和權限設置,控制用戶對集群資源的訪問和操作權限。
  • 擴展插件: 可以通過插件來擴展 Dashboard 的功能,添加自定義的儀表板和視圖。

11、網絡插件

Kubernetes 集群需要網絡插件來管理容器和 Pod 之間的網絡通信,以及服務發現和負載均衡等網絡功能。不同的網絡插件提供不同的網絡模型和功能,您可以根據集群的需求選擇適合的插件。以下是一些常見的 Kubernetes 網絡插件:

  • Flannel: Flannel 是一個輕量級的網絡插件,基于虛擬網絡的方式,使用了多種后端實現,如基于 Overlay 的 VXLAN 和基于 Host-Gateway 的方式。它創建了一個覆蓋整個集群的虛擬網絡,使得 Pod 可以跨節點通信。
  • Calico: Calico 是一個高性能的網絡插件,支持 IP 意識型的路由和 ACL,可以在大規模的集群中提供高效的網絡連接。它利用 BGP 協議來實現路由,并通過 Network Policy 實現安全組規則。
  • Cilium: Cilium 是一個強大的網絡和安全插件,基于 linux 內核的 BPF(eBPF)技術。它提供了更細粒度的網絡和安全策略,支持 HTTP、gRPC 和其他應用層協議的層級路由和負載均衡。
  • Weave Net: Weave Net 是一個支持多云環境的網絡插件,使用覆蓋網絡技術,可以在不同的云和物理環境中連接 Pod。
  • Antrea: Antrea 是一個基于 Open vSwitch 的 CNI 插件,它提供了網絡連接、安全策略和服務發現等功能。
  • Multus CNI: Multus 是一個多網絡支持的 CNI 插件,允許在一個 Pod 中使用多個網絡接口。這對于實現多網絡場景(如多個 IP 地址、多個網段)非常有用。

分享到:
標簽:K8s
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定