kubernetes基礎概念和組件介紹


1、基本概念和組件

基礎架構

Kubernetes 是一個跨主機集群的 開源的容器調度平台,它可以自動化應用容器的部署、擴展和操作 , 提供以容器為中心的基礎架構。

使用 Kubernetes, 您可以快速高效地響應客戶需求:

  • 快速、可預測地部署您的應用程序
  • 擁有即時擴展應用程序的能力
  • 不影響現有業務的情況下,無縫地發布新功能
  • 優化硬件資源,降低成本

我們的目標是構建一個軟件和工具的生態系統,以減輕您在公共雲或私有雲運行應用程序的負擔。

Kubernetes 具有如下特點:

  • 便攜性: 無論公有雲、私有雲、混合雲還是多雲架構都全面支持
  • 可擴展: 它是模塊化、可插拔、可掛載、可組合的,支持各種形式的擴展
  • 自修復: 它可以自保持應用狀態、可自重啟、自復制、自縮放的,通過聲明式語法提供了強大的自修復能力

集群有Master和Node節點,架構如下:
image.png
其中:

  • etcd 保存了整個集群的狀態,就是一個數據庫,只有API Server能與其通信;
  • apiserver 提供了資源操作的唯一入口,並提供認證、授權、訪問控制、API 注冊和發現等機制;
  • controller manager 負責維護集群的狀態,比如故障檢測、自動擴展、滾動更新等;
  • scheduler 負責資源的調度,按照預定的調度策略將 Pod 調度到相應的機器上;
  • kubelet 負責維護容器的生命周期,同時也負責 Volume(CSI)和網絡(CNI)的管理;
  • Container runtime 負責鏡像管理以及 Pod 和容器的真正運行(CRI);
  • kube-proxy 負責為 Service 提供 cluster 內部的服務發現和負載均衡;

schedulercontroller-manager都是通過apiserveretcd中獲取各種資源的狀態,進行相應的調度控制操作。

除了上面的這些組件,還有一些第三方的組件:

  • kube-dns 負責為整個集群提供 DNS 服務
  • Ingress Controller 為服務提供外網入口
  • Heapster 提供資源監控
  • Dashboard 提供 GUI

組件之間的關系:
從上面圖可以看到所有組件均是通過API Server進行通信,所以API Server就是一個中樞神經,在生產中我們會把master部署為多節點,做高可用。
etcd主要是存儲集群里的信息,比如集群狀態,集群的各Node信息等,只有API能與其通信,所以我們也會把etcd做高可用,etcd是一個單獨的組件,一個應用軟件,做高可用建議是奇數節點,比如3,5等,節點不應過多,因為節點過多,節點之間的數據同步是會有一定的開銷,影響集群的性能。
Schduler負責整個集群的調度,它通過API Server來檢測Node上Pod的狀態,然后會根據定義的策略來調度pod並綁定Node。
Controller manager負責pod的控制,常見的比如定義了一個Pod為replicaSet,然后因為某些原因當前pod掛掉了,這時候Controller manager就會為你在Node上重啟該Pod。
kubelet是Node上的組件,它會檢測Node上的Pod,並將其狀態更新到API Server。
kube-proxy主要是負責代理轉發,主要控制service,並將sevice狀態更新到API Server。
kubectl是集群的管理組件,主要也是調用API Server,然后進行整個集群的管理。

高可用

Kubernetes 集群,在生產環境,必須實現高可用:

  1. 實現Master節點及其核心組件的高可用;
  2. 如果Master節點出現問題的話,那整個集群就失去了控制;

具體的 HA 示意圖:
kubernertes-HA-arch.png

具體工作原理:

  • etcd 集群:etcd集群建議和主集群分開,3個節點允許一個容錯,5個節點允許2個容錯,根據實際情況進行選擇
  • **master集群: **對master節點來說一般3個節點就夠了,主要需要我們做高可用的組件是apiserver,我們可以在前面做一個負載均衡器,比如加一個Nginx,Nginx還可以通過keepalived做高可用,工作節點和客戶端通過這個負載均衡器(VIP)和apiserver進行通信
  • pod-master保證僅是主master可用,scheduler、controller-manager 在集群中多個實例只有一個工作,其他為備用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM