Kubernetes学习笔记之Node节点篇(四)

1.Node概念

节点是Kubernetes集群中的工作机器,它们是工作单元,可以是物理机、虚拟机、或云服务器实例。
Kubernetes通过将容器放入在节点(Node)上运行的Pod中来执行工作负载。每个节点上都包含运行Pod所需的所有服务及配置。

2.Node管理

Node本质上不是由Kubernetes集群来创建的,Kubernetes只是管理Node上的资源(如Pod、Deployment)。

2.1.添加节点的方式:

2.1.1节点上的kubelet向控制面执行自动注册;

2.1.2.只用资源清单方式创建一个Node对象(该Node对象需满足运行Pod的所有要求)。

# 示例
{
    
    
  "kind": "Node",
  "apiVersion": "v1",
  "metadata": {
    
    
    "name": "192.168.1.10", # 节点的IP地址
    "labels": {
    
    
      "name": "k8s-node01" 
    }
  }
}

使用资源清单方式创建Node资源对象时,kubernetes会在内部创建一个Node对象作为节点的表示。kubernetes检查kubelet想API服务器注册节点时使用的
metadata.name字段是否匹配。如果节点时监控的,则该节点可以用来运行Pod,否则直到该节点变为健康之前,所有的集群活动都会忽略该节点。

2.2.节点名称唯一性

节点的名称用来标识Node对象。没有两个Node可以同时使用相同的名称。kubernetes还假定名字相同的资源是同一个对象。就Node而言,隐式假定使用相同名称的实例会具有相同的状态(例如网络配置、根磁盘内容) 和类似节点标签这类属性。这可能在节点被更改但其名称未变时导致系统状态不一致。 如果某个 Node 需要被替换或者大量变更,需要从 API 服务器移除现有的 Node 对象, 之后再在更新之后重新将其加入。

2.3.Node的扩缩容

2.3.1.扩容

在实际生产系统中当遇到集群节点容量不足的情况下,需要添加新节点(需具备Pod运行所需的所有服务)到集群中,对集群实现水平扩展从而达到扩容目的。
2.3.2.缩容
可以通过删除node节点来实现缩容目的,删除前需先将该节点上的所有pod驱逐并将节点设置为不可调度

kubectl delete node k8s-node1
2.4.Node常用操作

2.4.1将节点设置为不可调度

kubectl cordon k8s-node1

2.4.2将节点设置为可调度

kubectl uncordon k8s-node1

2.4.3驱逐节点上Pod

kubectl drain k8s-node1

2.4.4给节点打标签

kubectl label node k8s-node1 key1=value1

2.4.5删除节点标签
删除label,只需要在命令行最后指定label的key名,并加一个减号即可:

kubectl label node k8s-node1 key1-

3.Node状态

一个节点的状态包含以下信息:

  • 地址(Addresses)
  • 状况(Condition)
  • 容量(Capacity)与可分配(Allocatable)
  • 信息(Info)
3.1.addresses

addresses记录可访达节点的地址列表,一般可以包含如下属性:

  • hostname(主机名)
  • externalip(外网IP)
  • internalip(内网IP)
3.2.Condition

condition描述节点运行时的一系列状态。一般有如下状态:

  • Ready True 表示节点是健康的并且可接受Pod调度请求,可承载Pod,False 表示节点不健康并且不能接受Pod调度请求
  • Unknown 表示节点在规定时间内没有向节点控制器上次心跳,节点与集群失联,此时表示节点异常
  • DiskPressure True 表明磁盘大小存在压力(磁盘可用容量较小)
  • MemoryPressure True 表明内存存在压力(内存容量过小)
  • PIDPressure True 表明节点上存在大量的进程
  • NetworkUnavailable True 表明节点的网络配置错误
3.3.容量(Capacity)与可分配(Allocatable)

这两个值描述节点上的可用资源:CPU、内存和可以调度到节点上的pod的个数上限。
capacity块中的字段标示节点拥有的资源总量,Allocatable块表示节点上可供普通pod消耗的资源量。

3.4.信息(info)

info值的是节点的一般信息,如内核版本、kubernetes版本(kubelet和kube-proxy版本)、容器运行时详细信息,以及节点使用的操作系统。kubelet从节点收集这些信息并将其发布到kubernetes api

猜你喜欢

转载自blog.csdn.net/Habo_/article/details/127089889