• Kubernetes基本概念和术语之《Master和Node》


       Kubernetes中的大部分概念如Node、Pod、Replication Controller、Service等都可以看作一种“资源对象”,几乎所有的资源对象都可以通过Kubernetes提供的kubectl工具(或者API编程调用)执行增、删、改、查等操作并将其保存在etcd中持久化存储。从这个角度来看,Kubernetes其实是一个高度自动化的资源控制系统,它通过跟踪比对etcd库里保存的“资源期望状态”与当前环境中的“实际资源状态”的差异来实现自动控制和自动纠错的高级功能。

      Master

           Kubernetes里的Master指的是集群控制节点,每个Kubernetes集群里需要有一个Master节点来负责整个集群的管理和控制,基本上Kubernetes所有的控制命令都是发给它,它来负责具体的执行过程,我们后面所有执行的命令基本都是在Master节点上运行的。Master节点通常会占据有一个独立的X86服务器(或者一个虚拟机),一个主要的原因是它太重要了,它是整个集群的"首脑",如果它宕机或者不可用,那么我们所有的控制命令都将失效。

      Master节点上运行着以下一组关键进程。

    • Kubernetes API Server(kube-apiserver),提供了HTTP Rest接口的关键服务进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口,也是集群控制的入口进程。
    • Kubernetes Controller Manager(kube-controller-manager),Kubernetes里所有资源对象的自动化控制中心,可以理解为资源对象的“大总管”。
    • Kubernetes Scheduler (kube-scheduler),负责资源调度(Pod调度)的进程,相当于公交公司的“调度室”

            其实Master节点上往往还启动了一个etcd Server进程,因为Kubernetes里的所有资源对象的数据全部是保存在etcd中的。

       Node

      除了Master,Kubernetes集群中 其他机器被称为Node节点,在较早的版本中也被称为Minion。与Master一样,Node节点可以是一台物理主机,也可以是一台虚拟机。Node节点才是Kubernetes集群中的工作负载节点,每个Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机时,其上的工作负载会被Master自动转移其他节点上去。

      每个Node节点上都运行着以下一组关键进程。

    • kubelet:负责Pod对应的容器的创建、启停等任务,同时与Master节点密切协作,实现集群管理的基本功能。
    • kube-proxy:实现Kubernetes Service 的通信与负载均衡机制的重要组件。
    • Docker Engine(docker):Docker引擎,负责本机的容器创建和管理工作。

           Node节点可以在运行期间动态增加到Kubernetes集群中,前提是这个节点上已经正确安装、配置和启动了上述关键进程,在默认情况下kubelet会向Master注册自己,这也是Kubernetes推荐的Node管理方式。一旦Node被纳入集群管理范围,kubelet进程就会定时向Master节点汇报自身的情报,例如操作系统、Docker版本、机器的CPU和内存情况,以及之前有哪些Pod在运行等,这样Master可以获取每个Node的资源使用情况,并实现高效均衡的资源调度策略。而某个Node超过指定时间不上报信息时,会被Master判定为“失联”,Node的状态被标记为不可用(Not Ready),随后Master会触发“工作负载大转移”的自动流程。

      我们可以执行下述命令查看集群中有多少个Node:

      #  kubectl get nodes 

      NAME           STATUS           AGE

      kubernetes-minion1     Ready    2d

      然后,通过kubectl describe node<node_name>来查看某个Node的详细信息:

      $ kubectl  describe  node   kubernetes-minion1

      Name:  k8s-node-1

      Labels:      beta.kubernetes.io/arch=amd64

             beta.kubernetes.io/os=linux

             kubernetes.io/hostname=k8s-node-1

      Taints:  <none>

      CreationTimestamp:   Wed,06 Jul  2016  11:46:51  +8000

      Phase:

      Conditions:

        Type            Status   LastHeartbeatTime

        OutOfDisk         False    Sat,  09  Jul   2016    08:17:39 +0800   Wed    ...

        MemoryPressure   False    Sat,  09  Jul   2016    08:17:39 +0800   Wed    ... 

        Ready         True    Sat,  09  Jul   2016    08:17:39 +0800   Wed    ... 

      Addresses:       192.168.18.131,192.168.18.131

      Capacity:

        alpha.kubernetes.io/nvidia-gpu:  0

        cpu:      4

        memory:    186892Ki

        pods:    110

      Allocatable:

        alpha.kubernetes.io/nvidia-gpu:  0

        cpu:      4

        memory:    186892Ki

        pods:    110

      System   Info:

        Machine  ID :6e4e2af2afeb42b9aac47d866aa56ca0

        System   ID :564D63D3-9664-3393-A3DC-9CD424ED42C1

        Boot       ID  :b0c34f9f-76ab-478e-9771-bd4fe6e98880

        Kernel Version:3.10.0-327.22.2.e17.x86_64

      

      

  • 相关阅读:
    【转】android新建项目时 出现appcompat_v7工程错误和红色感叹号
    【转】eclipse新建项目,报错“Error: workspaceappcompat_v7 esvalues-v21styles_base.xml No resource found that matches the given name”
    【转】android开发工具Eclipse,androidStudio,adt网盘下载--不错
    【转】Windows搭建Eclipse+JDK+SDK的Android
    【转】Ubuntu 14.04配置安装java环境和android开发环境(包括真机调试环境)
    【转】[MTK软件原创] [SELinux] 如何设置确认selinux模式
    【转】Android中removeCallbacks失效原因
    【转】Android
    【转】Android开发20——单个监听器监听多个按钮点击事件
    【编程】辨异 —— proxy 与 delegate
  • 原文地址:https://www.cnblogs.com/zhulimin/p/12064402.html
Copyright © 2020-2023  润新知