Kubernetes基本概念和術語之《Master和Node》

   Kubernetes中的大部分概念如Node、Pod、Replication Controller、Service等均可以看做一種「資源對象」,幾乎全部的資源對象均可以經過Kubernetes提供的kubectl工具(或者API編程調用)執行增、刪、改、查等操做並將其保存在etcd中持久化存儲。從這個角度來看,Kubernetes實際上是一個高度自動化的資源控制系統,它經過跟蹤比對etcd庫裏保存的「資源指望狀態」與當前環境中的「實際資源狀態」的差別來實現自動控制和自動糾錯的高級功能。node

  Masterlinux

       Kubernetes裏的Master指的是集羣控制節點,每一個Kubernetes集羣裏須要有一個Master節點來負責整個集羣的管理和控制,基本上Kubernetes全部的控制命令都是發給它,它來負責具體的執行過程,咱們後面全部執行的命令基本都是在Master節點上運行的。Master節點一般會佔據有一個獨立的X86服務器(或者一個虛擬機),一個主要的緣由是它過重要了,它是整個集羣的"首腦",若是它宕機或者不可用,那麼咱們全部的控制命令都將失效。docker

  Master節點上運行着如下一組關鍵進程。編程

  • Kubernetes API Server(kube-apiserver),提供了HTTP Rest接口的關鍵服務進程,是Kubernetes裏全部資源的增、刪、改、查等操做的惟一入口,也是集羣控制的入口進程。
  • Kubernetes Controller Manager(kube-controller-manager),Kubernetes裏全部資源對象的自動化控制中心,能夠理解爲資源對象的「大總管」。
  • Kubernetes Scheduler (kube-scheduler),負責資源調度(Pod調度)的進程,至關於公交公司的「調度室」

        其實Master節點上每每還啓動了一個etcd Server進程,由於Kubernetes裏的全部資源對象的數據所有是保存在etcd中的。api

   Node服務器

  除了Master,Kubernetes集羣中 其餘機器被稱爲Node節點,在較早的版本中也被稱爲Minion。與Master同樣,Node節點能夠是一臺物理主機,也能夠是一臺虛擬機。Node節點纔是Kubernetes集羣中的工做負載節點,每一個Node都會被Master分配一些工做負載(Docker容器),當某個Node宕機時,其上的工做負載會被Master自動轉移其餘節點上去。負載均衡

  每一個Node節點上都運行着如下一組關鍵進程。工具

  • kubelet:負責Pod對應的容器的建立、啓停等任務,同時與Master節點密切協做,實現集羣管理的基本功能。
  • kube-proxy:實現Kubernetes Service 的通訊與負載均衡機制的重要組件。
  • Docker Engine(docker):Docker引擎,負責本機的容器建立和管理工做。

       Node節點能夠在運行期間動態增長到Kubernetes集羣中,前提是這個節點上已經正確安裝、配置和啓動了上述關鍵進程,在默認狀況下kubelet會向Master註冊本身,這也是Kubernetes推薦的Node管理方式。一旦Node被歸入集羣管理範圍,kubelet進程就會定時向Master節點彙報自身的情報,例如操做系統、Docker版本、機器的CPU和內存狀況,以及以前有哪些Pod在運行等,這樣Master能夠獲取每一個Node的資源使用狀況,並實現高效均衡的資源調度策略。而某個Node超過指定時間不上報信息時,會被Master斷定爲「失聯」,Node的狀態被標記爲不可用(Not Ready),隨後Master會觸發「工做負載大轉移」的自動流程。spa

  咱們能夠執行下述命令查看集羣中有多少個Node:操作系統

  #  kubectl get nodes 

  NAME           STATUS           AGE

  kubernetes-minion1     Ready    2d

  而後,經過kubectl describe node<node_name>來查看某個Node的詳細信息:

  $ kubectl  describe  node   kubernetes-minion1

  Name:  k8s-node-1

  Labels:      beta.kubernetes.io/arch=amd64

         beta.kubernetes.io/os=linux

         kubernetes.io/hostname=k8s-node-1

  Taints:  <none>

  CreationTimestamp:   Wed,06 Jul  2016  11:46:51  +8000

  Phase:

  Conditions:

    Type            Status   LastHeartbeatTime

    OutOfDisk         False    Sat,  09  Jul   2016    08:17:39 +0800   Wed    ...

    MemoryPressure   False    Sat,  09  Jul   2016    08:17:39 +0800   Wed    ... 

    Ready         True    Sat,  09  Jul   2016    08:17:39 +0800   Wed    ... 

  Addresses:       192.168.18.131,192.168.18.131

  Capacity:

    alpha.kubernetes.io/nvidia-gpu:  0

    cpu:      4

    memory:    186892Ki

    pods:    110

  Allocatable:

    alpha.kubernetes.io/nvidia-gpu:  0

    cpu:      4

    memory:    186892Ki

    pods:    110

  System   Info:

    Machine  ID :6e4e2af2afeb42b9aac47d866aa56ca0

    System   ID :564D63D3-9664-3393-A3DC-9CD424ED42C1

    Boot       ID  :b0c34f9f-76ab-478e-9771-bd4fe6e98880

    Kernel Version:3.10.0-327.22.2.e17.x86_64

相關文章
相關標籤/搜索