k8s基础-node

除了master kubernets集群中的其他机器被称为node,node是kubernetes集群中的工作负载节点,每个node都会被master分配一些工作负载(docker容器),当某个node节点宕机,其上面的工作负载会被master自动转移到其他的节点上。

每个node上都运行着以下关键进程

1.kubelet 负责pod对应的容器的创建,启停等任务,同时与master密切协作,实现集群管理的基本功能。

2.kube-proxy 实现kubernetes,service的通讯与负载均衡机制的重要组件

3.docker engine:docker 引擎,负责本机的容器创建和管理

node在运行期间动态增加到kubernetes集群中,前提是在这个节点上已经正确安装,配置和启动上诉关键进程,在默认情况下,kubelet会向master注册自己,这也是kubernetes推荐的node管理方式。一旦node被纳入集群管理范围,kubelet进程会定时向

master汇报自身的情况,例如操作系统,docker版本,机器的cpu和内存情况,以及当时有哪些pod在运行等。这样master就可以获知每个node的资源使用情况,并实现高效均衡的资源调度策略。而某个node在超过指定的时间不上报信息时,会被master判定

为失联,node的状态会被标记为不可用。NOT Ready,随后master会触发工作负载大转移的自动流程。

 查看集群中有多少个node

[root@k8s-master1 ~]# kubectl get node 
NAME          STATUS                     ROLES    AGE     VERSION
k8s-master1   Ready,SchedulingDisabled   <none>   3d18h   v1.17.5
k8s-master2   Ready,SchedulingDisabled   <none>   3d18h   v1.17.5
k8s-master3   Ready,SchedulingDisabled   <none>   3d18h   v1.17.5
k8s-node1     Ready                      <none>   39d     v1.17.5
k8s-node2     Ready                      <none>   39d     v1.17.5

通过 kubectl describe node <node_name> 查看某个node的详细信息

[root@k8s-master1 ~]# kubectl describe node k8s-node1
Name:               k8s-node1
Roles:              <none>
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=k8s-node1
                    kubernetes.io/os=linux
Annotations:        node.alpha.kubernetes.io/ttl: 0
                    projectcalico.org/IPv4Address: 10.23.215.243/24
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Wed, 27 May 2020 17:07:00 +0800
Taints:             <none>
Unschedulable:      false
Lease:
  HolderIdentity:  k8s-node1
  AcquireTime:     <unset>
  RenewTime:       Mon, 06 Jul 2020 10:56:42 +0800
Conditions:
  Type                 Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----                 ------  -----------------                 ------------------                ------                       -------
  NetworkUnavailable   False   Wed, 01 Jul 2020 17:44:09 +0800   Wed, 01 Jul 2020 17:44:09 +0800   CalicoIsUp                   Calico is running on this node
  MemoryPressure       False   Mon, 06 Jul 2020 10:56:42 +0800   Wed, 01 Jul 2020 17:44:04 +0800   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure         False   Mon, 06 Jul 2020 10:56:42 +0800   Wed, 01 Jul 2020 17:44:04 +0800   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure          False   Mon, 06 Jul 2020 10:56:42 +0800   Wed, 01 Jul 2020 17:44:04 +0800   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready                True    Mon, 06 Jul 2020 10:56:42 +0800   Wed, 01 Jul 2020 17:44:04 +0800   KubeletReady                 kubelet is posting ready status
Addresses:
  InternalIP:  10.23.215.243
  Hostname:    k8s-node1
Capacity:
  cpu:                4
  ephemeral-storage:  36805060Ki
  hugepages-2Mi:      0
  memory:             3880352Ki
  pods:               110
Allocatable:
  cpu:                4
  ephemeral-storage:  33919543240
  hugepages-2Mi:      0
  memory:             3777952Ki
  pods:               110
System Info:
  Machine ID:                 778c9b59aa8743a7814bfcd85012ac07
  System UUID:                422E25C4-CE82-7099-DC72-39D23474DB5F
  Boot ID:                    f1186766-1e81-419a-8cfb-5dabd532d543
  Kernel Version:             3.10.0-1062.4.1.el7.x86_64
  OS Image:                   CentOS Linux 7 (Core)
  Operating System:           linux
  Architecture:               amd64
  Container Runtime Version:  docker://18.9.9
  Kubelet Version:            v1.17.5
  Kube-Proxy Version:         v1.17.5
PodCIDR:                      10.244.0.0/24
PodCIDRs:                     10.244.0.0/24
Non-terminated Pods:          (8 in total)
  Namespace                   Name                                       CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE
  ---------                   ----                                       ------------  ----------  ---------------  -------------  ---
  default                     web-5c987b8447-6b6bx                       0 (0%)        0 (0%)      0 (0%)           0 (0%)         3d17h
  ingress-nginx               nginx-ingress-controller-z9clj             0 (0%)        0 (0%)      0 (0%)           0 (0%)         39d
  kube-system                 calico-kube-controllers-fdf7dfdf4-c565p    0 (0%)        0 (0%)      0 (0%)           0 (0%)         39d
  kube-system                 calico-kube-controllers-fdf7dfdf4-lfcgv    0 (0%)        0 (0%)      0 (0%)           0 (0%)         39d
  kube-system                 calico-node-8pcgz                          250m (6%)     0 (0%)      0 (0%)           0 (0%)         39d
  kube-system                 coredns-66cd74bdd6-qd9kp                   100m (2%)     0 (0%)      70Mi (1%)        170Mi (4%)     3d20h
  kube-system                 metrics-server-fb7c8cc6d-gfrks             0 (0%)        0 (0%)      0 (0%)           0 (0%)         3d19h
  kube-system                 nfs-client-provisioner-644c45ff78-rn7q5    0 (0%)        0 (0%)      0 (0%)           0 (0%)         3d20h
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests   Limits
  --------           --------   ------
  cpu                350m (8%)  0 (0%)
  memory             70Mi (1%)  170Mi (4%)
  ephemeral-storage  0 (0%)     0 (0%)
Events:              <none>

上述命令展示了Node的如下关键信息。
◎ Node的基本信息:名称、标签、创建时间等。
◎ Node当前的运行状态:Node启动后会做一系列的自检工作,
比如磁盘空间是否不足(DiskPressure)、内存是否不足
(MemoryPressure)、网络是否正常(NetworkUnavailable)、PID资源
是否充足(PIDPressure)。在一切正常时设置Node为Ready状态
(Ready=True),该状态表示Node处于健康状态,Master将可以在其上
调度新的任务了(如启动Pod)。
◎ Node的主机地址与主机名。
◎ Node上的资源数量:描述Node可用的系统资源,包括CPU、
内存数量、最大可调度Pod数量等。
◎ Node可分配的资源量:描述Node当前可用于分配的资源量。
◎ 主机系统信息:包括主机ID、系统UUID、Linux kernel版本
号、操作系统类型与版本、Docker版本号、kubelet与kube-proxy的版本
号等。
◎ 当前运行的Pod列表概要信息。
◎ 已分配的资源使用概要信息,例如资源申请的最低、最大允许
使用量占系统总量的百分比。
◎ Node相关的Event信息。

原文地址:https://www.cnblogs.com/caonw/p/13253630.html