天天看點

kubernetes架構之二

  IaaS:即基礎設施即服務,通過虛拟化和分布式存儲等技術,實作對包括伺服器、儲存設備、網絡裝置等各種實體資源的抽象;進而形成了一個可擴充、可按需配置設定的虛拟資源池。最具代表性的IaaS産品有Amazon AWS,提供虛拟機EC2和雲存儲S3等服務;

  PaaS:平台即服務,為開發者提供了應用的開發環境和運作環境,将開發者從繁瑣的IT環境管理中解放出來;PaaS主要面向的是軟體專業人員;

  SaaS:軟體即服務,面向使用軟體的終端使用者。比如:線上使用的郵箱系統

  kubernetes API Server: 作為k8s系統的入口,其封裝了核心對象的增删改查的操作,以REST API接口方式提供給外部客戶和内部元件調用,它維護的REST對象将持久化到Etcd中。

  kubernetes Scheduler:負責叢集的資源排程,為建立的Pod配置設定host。這部分工作獨立成一個元件,意味着可以很友善地替換成其他的排程器;

  kubernetes Controller Manager:負責執行各種控制器,目前已經實作很多控制器來保證kubernetes的正常運作,主要的控制器如下:

控制器

  說明 

Replication Controller                               

  管理維護Replication Controller,關聯Replication Controller 和Pod,保證Replication Controller定義的副本數量與實際運作Pod的數量是一緻的                                                                  

Node Controller

  管理維護Node,定期檢查Node的健康狀态,辨別出失效的Node

Namespace Controller

  管理維護Namespace,定期清理無效的Namespace,包括Namespace下的API對象,像Pod、Service和Secret等

Endpoint Controller

  管理維護Endpoints,關聯Service和Pod,建立Endpoints作為Service的後端,當Pod發生變化時,實時重新整理Endpoints

Service Account Controller

  管理維護Service Account,為每個Namespace建立預設的Service Account,同時為Service Account建立Service Account Secret

Persistent Volume Controller

 管理維護Persistent Volume和Persistent Volume Claim,為新的Persistent Volume Claim配置設定Persistent Volume進行綁定,為釋放的Persistent Volume執行清理回收

Daemon Set Controller  

 管理維護Deamon Set,負責建立Daemon Pod,保證指定的Node上正常運作Daemon Pod

Deployment Controller    

 管理維護Deployment,關聯Deployment和Replication Controller,保證運作指定數目的Pod,當Deployment更新時,控制實作Replication Controller和Pod的更新

Job Controller  

 管理維護Job,為Job建立一次性任務Pod,保證完成Job指定完成的任務數目

Pod Autoscaler Controller

實作Pod的自動伸縮,定時擷取監控資料,進行政策比對,當滿足條件時執行Pod的伸縮動作

  kubernetes Node是運作節點,用于運作管理業務的容器,包含以下元件:

  Kubelet: 負責管控容器,kubelet會從kuberenetes API Server接收Pod的建立請求,啟動和停止容器,監控容器運作狀态并彙報給Kubernetes API Server

  Kubernetes Proxy:負責為Pod建立代理服務,Kuberenetes Proxy會從Kubernetes API Server擷取所有的Service,并根據Service 資訊建立代理服務,實作Service 到Pod的請求路由和轉發,進而實作kubernetes曾經的虛拟轉發網絡;

  Docker: k8s Node是容器運作節點,需要運作Docker服務,目前k8s也支援Rocket(一款CoreOS開發的類Docker的開源容器引擎);

三、k8s網絡:

  k8s的網絡模型要求每一個Pod都擁有一個扁平化共享網絡命名空間的IP,成為PodIP, Pod能夠直接通過PodIP跨網絡與其他實體機和Pod進行通信。要實作k8s網絡模型,需要在k8s叢集中建立一個覆寫網絡(Overlay Network),聯通各個節點,目前可通過第三方網絡插件來建立覆寫網絡,例如:Flannel和Open vSwitch。

  Flannel為不同Node的Docker網橋配置不同的IP網段以保證Docker容器的IP在叢集内唯一,是以Flannel會重新配置Docker網橋,需要先删除原先建立的Docker網橋;

四、k8s深入:

  k8s是容器叢集管理系統,為容器化的應用提供資源排程、部署運作、容災容錯和服務發現等功能。其中涉及Pod、Replication Controller和Service這k8s基本要素的功能展示;