1. 程式人生 > >Kubernetes(k8s)中文文件 名詞解釋:Node_Kubernetes中文社群

Kubernetes(k8s)中文文件 名詞解釋:Node_Kubernetes中文社群

Node

Node是Pod真正執行的主機,可以物理機,也可以是虛擬機器。為了管理Pod,每個Node節點上至少要執行container runtime(比如docker或者rkt)、kubelet和kube-proxy服務。

node

Node管理

不像其他的資源(如Pod和Namespace),Node本質上不是Kubernetes來建立的,Kubernetes只是管理Node上的資源。雖然可以通過Manifest建立一個Node物件(如下json所示),但Kubernetes也只是去檢查是否真的是有這麼一個Node,如果檢查失敗,也不會往上排程Pod。

{
  "kind": "Node",
  "apiVersion": "v1",
  "metadata": {
    "name": "10.240.79.157",
    "labels": {
      "name": "my-first-k8s-node"
    }
  }
}

這個檢查是由Node Controller來完成的。Node Controller負責

  • 維護Node狀態
  • 與Cloud Provider同步Node
  • 給Node分配容器CIDR
  • 刪除帶有NoExecute taint的Node上的Pods

預設情況下,kubelet在啟動時會向master註冊自己,並建立Node資源。

Node的狀態

每個Node都包括以下狀態資訊

  • 地址:包括hostname、外網IP和內網IP
  • 條件(Condition):包括OutOfDisk、Ready、MemoryPressure和DiskPressure
  • 容量(Capacity):Node上的可用資源,包括CPU、記憶體和Pod總數
  • 基本資訊(Info):包括核心版本、容器引擎版本、OS型別等

Taints和tolerations

Taints和tolerations用於保證Pod不被排程到不合適的Node上,Taint應用於Node上,而toleration則應用於Pod上(Toleration是可選的)。

比如,可以使用taint命令給node1新增taints:

kubectl taint nodes node1 key1=value1:NoSchedule
kubectl taint nodes node1 key1=value2:NoExecute

Taints和tolerations的具體使用方法請參考

排程器章節

Node維護模式

標誌Node不可排程但不影響其上正在執行的Pod,這種維護Node時是非常有用的

kubectl cordon $NODENAME

參考文件

K8S中文社群微信公眾號