kubernetes基本概念和術語

一. kubernetes是什麼

kubernetes是一個全新得基於容器技術得分佈式架構領先方案。是google Borg得一個開源版本。Borg是google得一個久負盛名得內部使用得大規模集羣管理系統,它基於容器技術,目的是實現資源管理的自動化,以及跨多個數據中心的資源利用率的最大化。node

二. kubernetes 術語

kubernetes中的大部分概念如Node,Pod,Replication Controller,service等均可以看做一種「資源對象」。幾乎全部的資源對象均可以經過kubernetes提供的kubectl工具(或者api編程調用)執行增刪查改等操做並將其保存在etcd中持久化存儲。因此經過這個角度來看,kubernetes是一個高度自動化的資源控制系統。docker

Master

k8s中的master是集羣控制節點,來負責具體的執行過程,master節點一般會佔據一個獨立的服務器。一個主要緣由是它過重要了,它是整個集羣的「首腦"。編程

master節點上運行着如下一組關鍵進程。api

  1. Kubernetes API Server,提供HTTP Rest接口的關鍵服務進程。是Kubernetes裏全部資源的增刪查改等操做的惟一入口,也是集羣控制的入口進程。
  2. Kubernetes Controller Manager,Kubernetes裏全部資源對象的自動化控制中心。
  3. Kubernetes Scheduler, 負責資源調度(Pod調度)的進程。

master節點還會啓動一個etcd server進程,由於Kubernetes全部資源對象的數據所有保存在etcd中。服務器

Node

Node在較早版本也叫Minion,在kubernetes集羣除了Master節點,其餘節點被稱爲Node節點。node節點爲k8s集羣的工做負載節點,每一個node都會被master分配一部分工做負載。當node宕機時,工做負載會被master轉移到其餘節點。網絡

node節點主要運行着下面一組關鍵進程架構

  1. kubelet: 負責Pod對應容器的建立,啓停等任務。同時與master節點密切協做,實現集羣管理的基本功能。
  2. kube-proxy: 實現kubernetes Server的通訊與負載均衡機制的重要組件。
  3. Docker Engine: 負責本機容器的建立和管理工做。

Node節點能夠動態增長到Kubernetes集羣中,默認狀況下kubelet會向master註冊本身,當Node被歸入集羣管理,kubelet進程就會定時向Master節點彙報自身情報(包括docker版本,機器cpu內存),這樣master會獲取每一個node的資源使用狀況。並實現高效的資源調度策略。負載均衡

Pod

Pod是kubernetes的最重要也是最基本的概念分佈式

Label

Lebel是kubernetes系統中一個核心概念,一個label是一個kv的鍵值對,k、v由用戶本身指定。能夠附加到各類資源對象上,例如node,pod,service,rc等。
咱們能夠經過給指定資源捆綁一個或多個不一樣的資源標籤,來實現多維度的資源分組管理。詳細參考19頁微服務

Replication Controller RC

核心概念之一,定義一個指望的場景,既聲明某種Pod的副本數量字任意時刻都符合某一個預期值,因此rc的定義包括一下幾個部分。

  1. Pod 期待的副本數
  2. 用於篩選目標pod的label selector

rc的一些特性和做用

  1. 大多數狀況下,經過自定義一個rc實現pod的建立過程及副本數量的自動控制。
  2. rc裏包含完整的pod定義模板
  3. rc經過label selector機制實現對pod 副本的自動控制
  4. 經過改變rc裏的pod副本數量,實現對pod的擴容和縮容功能
  5. 經過改變rc裏pod模板中的鏡像版本,能夠實現pod的滾動升級功能

deployment

deployment是kubernetes1.2引入的新概念。引入的目的是爲了更好的解決pod的編排問題,能夠看做是rc的一次升級。

deployment的典型使用場景有如下幾個

  1. 建立一個deployment對象來生成對應的replica set並完成pod副本的建立過程
  2. 檢查deployment的狀態來看部署動做是否完成
  3. 更新deployment以建立新的pod(鏡像升級)
  4. 若是當前deployment不穩定,回滾到早先的deployment版本
  5. 掛起或恢復一個deployment

Horizontal Pod Autoscaler HPA

Horizontal Pod Autoscaler 簡稱HPA,含義爲pod橫向自動擴容,與rc,deployment同樣,也屬於一種kubernet 資源對象。經過追蹤分析rc控制的全部目標pod的負載變化狀況,來肯定是否須要針對性的調整pod的副本數。HPA當前由兩種方式作爲pod負載的度量指標

  1. CPUUtilizationPercentage
  2. 應用程序自定義的度量指標,好比qps和tps

Service

Kubernetes Service 實際上是咱們常提起的爲服務架構中的一個"微服務",前面的pod,rc等資源對象其實都是爲kubernetes service作嫁衣的。

kubernetes集羣中的三種ip

  1. node ip,node節點的物理ip地址,能夠經過網絡直接通訊
  2. pod ip,是docker 引擎根據docker0網橋的ip地址段進行分配,是一個虛擬的二層網絡
  3. cluser ip,屬於kubernetes集羣中的內部地址,沒法在集羣外部使用這個地址。

Volume

Volume 是pod中可以被多個容器訪問的共享目錄。概念、用途和目的與docker的vlume類似但不等價。緣由以下

  1. kubernetes的volume定義在pod上,而後被一個pod裏的多個容器掛載到具體的文件目錄下
  2. kubernetes的volume的生命週期與pod的生命週期相同,但與容器的生命週期不相關。當容器終止或重啓時volume的數據不會丟失,kubernetes支持多種類型的volume,如GlusterFS,Ceph等先進的分佈式文件系統。
相關文章
相關標籤/搜索