Kubernetes(k8s)中文文件 名詞解釋:Node_Kubernetes中文社群
阿新 • • 發佈:2018-12-27
Node
Node是Pod真正執行的主機,可以物理機,也可以是虛擬機器。為了管理Pod,每個Node節點上至少要執行container runtime(比如docker或者rkt)、kubelet和kube-proxy服務。
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