kubernetes(k8s) 概述


1、kubernetes基本介紹

  kubernetes,簡稱 K8s,是用 8 代替 8 個字符“ubernete”而成的縮寫。是一個開源的,用於管理雲平台中多個主機上的容器化的應用,Kubernetes 的目標是讓部署容器化的應用簡單並且高效(powerful),Kubernetes 提供了應用部署,規划,更新,維護的一種機制。

  傳統的應用部署方式是通過插件或腳本來安裝應用。這樣做的缺點是應用的運行、配置、管理、所有生存周期將與當前操作系統綁定,這樣做並不利於應用的升級更新/回滾等操作,當然也可以通過創建虛擬機的方式來實現某些功能,但是虛擬機非常重,並不利於可移植性。
  新的方式是通過部署容器方式實現,每個容器之間互相隔離,每個容器有自己的文件系統 ,容器之間進程不會相互影響,能區分計算資源。相對於虛擬機,容器能快速部署,由於容器與底層設施、機器文件系統解耦的,所以它能在不同雲、不同版本操作系統間進行遷移。
  容器占用資源少、部署快,每個應用可以被打包成一個容器鏡像,每個應用與容器間成一對一關系也使容器有更大優勢,使用容器可以在 build 或 release 的階段,為應用創建容器鏡像,因為每個應用不需要與其余的應用堆棧組合,也不依賴於生產環境基礎結構,這使得從研發到測試、生產能提供一致環境。類似地,容器比虛擬機輕量、更“透明”,這更便於監控和管理。
  Kubernetes 是 Google 開源的一個容器編排引擎,它支持自動化部署、大規模可伸縮、應用容器化管理。在生產環境中部署一個應用程序時,通常要部署該應用的多個實例以便對應用請求進行負載均衡。
  在 Kubernetes 中,我們可以創建多個容器,每個容器里面運行一個應用實例,然后通過內置的負載均衡策略,實現對這一組應用實例的管理、發現、訪問,而這些細節都不需要運維人員去進行復雜的手工配置和處理。
 
2、kubernetes功能和架構
  2.1 概述
    Kubernetes 是一個輕便的和可擴展的開源平台,用於管理容器化應用和服務。通過Kubernetes 能夠進行應用的自動化部署和擴縮容。在 Kubernetes 中,會將組成應用的容器組合成一個邏輯單元以更易管理和發現。Kubernetes 積累了作為 Google 生產環境運行工作負載 15 年的經驗,並吸收了來自於社區的最佳想法和實踐。
  2.2 k8s功能
    (1)自動裝箱
      基於容器對應用運行環境的資源配置要求自動部署應用容器
    (2)自我修復(自愈能力)
      當容器失敗時,會對容器進行重啟
      當所部署的 Node 節點有問題時,會對容器進行重新部署和重新調度當容器未通過監控檢查時,會關閉此容器直到容器正常運行時,才會對外提供服務
    (3)水平擴展
      通過簡單的命令、用戶 UI 界面或基於 CPU 等資源使用情況,對應用容器進行規模擴大或規模剪裁
    (4)服務發現(service)
      用戶不需使用額外的服務發現機制,就能夠基於 Kubernetes 自身能力實現服務發現和負載均衡
    (5)滾動更新
      可以根據應用的變化,對應用容器運行的應用,進行一次性或批量式更新
    (6)版本回退
      可以根據應用部署情況,對應用容器運行的應用,進行歷史版本即時回退
    (7)密鑰和配置管理
      在不需要重新構建鏡像的情況下,可以部署和更新密鑰和應用配置,類似熱部署。
    (8)存儲編排
      自動實現存儲系統掛載及應用,特別對有狀態應用實現數據持久化非常重要存儲系統可以來自於本地目錄、網絡存儲(NFS、Gluster、Ceph 等)、公共雲存儲服務
    (9)批處理
      提供一次性任務,定時任務;滿足批量數據處理和分析的場景
  2.3 應用部署架構分類
    (1) 無中心節點架構
      GlusterFS
    (2) 有中心節點架構
      HDFS
      K8S
  2.4 k8s集群架構
 
    

 

   2.5 k8s集群架構節點角色功能

    Master Node

      k8s 集群控制節點,對集群進行調度管理,接受集群外用戶去集群操作請求;
        Master Node 由 API Server、Scheduler、ClusterState Store(ETCD 數據庫)和Controller MangerServer 所組成
     Worker Node
      集群工作節點,運行用戶業務應用容器;Worker Node 包含 kubelet、kube proxy 和 ContainerRuntime;
      *  Master(主控節點)和  node(工作節點)
        master組件:
          * apiserver :集群對外的統一入 口以及各個組件的協調者,通過spiserver把請求分發到各個地方。
                apiserver是以restful方式,交給etcd存儲。
          * scheduler : 節點調度,選擇node節點應用部署
          * controller-manager : 去處理集群中常規后台任務,一個資源對應一個控制器。
          * etcd :存儲系統,用於保存集群想關數據
        node組件 :
          * kubelet :master排到node節點代表,管理本機容器
          * kube-proxy :  提供網絡代理,負載均衡等操作

    

 


免責聲明!

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



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