• 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信息。

  • 相关阅读:
    记中兴软件园一个月实训(四)
    MMORPG大型游戏设计与开发(服务器 AI 逻辑设定和状态结点)
    MMORPG大型游戏设计与开发(服务器 AI 事件)
    MMORPG大型游戏设计与开发(服务器 AI 控制器)
    MMORPG大型游戏设计与开发(服务器 AI 基础接口)
    MMORPG大型游戏设计与开发(服务器 AI 概述)
    MMORPG大型游戏设计与开发(服务器 游戏场景 动态场景与副本)
    MMORPG大型游戏设计与开发(服务器 游戏场景 掉落与网络连接)
    MMORPG大型游戏设计与开发(服务器 游戏场景 搜索机)
    MMORPG大型游戏设计与开发(服务器 游戏场景 聊天管道和寻路器)
  • 原文地址:https://www.cnblogs.com/caonw/p/13253630.html
Copyright © 2020-2023  润新知