zoukankan      html  css  js  c++  java
  • k8s核心组件和术语

    Kubernets是什么

    1. 基于容器技术的分布式架构方案。
    2. 开放的开发平台。  
    3. 完备的分布式支撑平台。

    Master

      Master指的是集群控制节点,每个k8s集群里需要有一个Master节点来负责整个集群的管理和控制,基本上k8s的所有控制命令都发给它,它来负责具体的执行过程。为了实现高可用,部署多个Master,Master节点上运行着以下一组关键进程。

      Kubernets API Server:提供了HTTP Rest接口的关键服务进程,是Kubernets里所有资源的增删改查等操作的唯一入口,也是集群控制的入口进程。

      Kubernets Controller Manager:Kubernets里所有资源对象的自动化控制中心,管理集群的所有资源。

      Kubernets Scheduler:负责资源调度的进程。

    另外,Master节点上还需要启动一个etcd服务,Kubernets里的所有资源对象的数据全部保存在ectd。

    Node

      除了Master,Kubernets集群中的其他机器被称为Node节点,Node节点可以是虚拟机也可以是物理机。Node节点是集群中工作负载节点,当某个Node宕机后,其上的工作负载会自动转移到其他节点上。

      每个Node都有以下关键进程。

       kubelet:复杂Pod对应的容器的创建,启动,停止等任务,同时与Master协作,实现集群管理的功能。

       kube-proxy:实现Kubernets Service的通信于负载均衡机制。

       Docker Engine:DOcker引擎。

    Pod

      Pod是k8s中最重要也是最基本的概念,每个Pod内包含一个特殊的根容器(Pause容器),Pause容器对应的镜像属于k8s平台的一部分,除了Pause容器外,每个Pod还包含至少一个或多个用户业务容器。Pod的设计理念,(当你想包含一个已经存在的东西,你得弄出一个比已有东西更大概念)。Pod里面多个业务容器共享Pause容器的IP,共享Pause容器挂接的Volume,Pod分为俩类,普通Pod和静态Pod,静态Pod不存放在k8s的ectd中存储,而是存放在本地Node的文件中,因此只能在本Node内存在。

    Label

      Label是k8s系统中另外一个概念,一个Label是一个key-val的键值对,Label可以附加到任何资源对象上。给某个资源对象定一个Label就相当于给它打了一个标签,随后可以通过Label Selector查询和筛选拥有某些Label的资源对象。

      1.kube-controller进程通过资源对象RC上定义的Label Selector来筛选要监控的Pod副本的数量。

      2.kube-proxy进程通过Service的Label Selector来选择对应的Pod,自动建立起每个Service到对应Pod的请求转发路由表,从而实现Service的负载均衡。

      3.通过对某些Node定义特定的Label,并且在Pod定义文件中使用NodeSelector这种标签调度策略,kube-scheduler 可以实现Pod定向调度的特性。

    Replication Controller

      RC定义了Pod的副本数量在任意时刻都符合某个预定值,所以RC的内容如下。

      1.Pod期待的副本数。

      2.用户筛选目标Pod的Label Selector

      3.当Pod的副本数量小于预期数时,创建新Pod的模板。

    Deployment

      引入Deployment是为了解决Pod的编排问题。Deployment相对于RC的最大一个升级就是我们可以随时知道部署的进度。

    Horizontal Pod AutoScaler

      HPA为对应用自定义指标进行自动扩容和缩容的功能进行增强。它是k8s内的一种资源对象,通过追踪分析RC控制的所有目标Pod的负载变化情况,来确定是否需要针对性的调整目标Pod的副本数。

      1.CPU 使用率百分比

      2.应用程序自定义指标,比如TPS,QPS。

    StatefulSet

      在k8s中,Pod的管理对象RC,Deployment,DaemonSet和Job都是面向无状态的服务,但现实中有很多服务是有状态的,特别是一些中间件集群,如MySQL,ZK。它们每个节点都有自己的身份ID,集群规模固定。

    Service

      k8s里面每个Service其实就是微服务架构中的一个微服务,它定义了一个服务的访问入口地址,前端应用通过这个入口地址访问其背后一组由Pod副本组成的集群实例,Service与其后端Pod副本集群之间则是通过Label Selector来实现无缝对接,而RC的作用实际上保证Service的服务能力和服务质量始终处于预期的标准。

    IP

      k8s集群内存在三种IP。

      1.Node IP,物理机的IP。

      2.Pod IP,Pod的IP地址。它是Docker Engine根据Docker0网桥来分配的。

      3.Cluster IP:Service IP地址。Cluster IP是一个虚拟IP,但更像是一个伪造的IP,

        3.1.Cluster IP仅仅作用于Kubernets Service这个对象,并由Kubernetes管理和分配IP地址。

        3.2.Cluster IP无法被ping,因为不存在网络实体来响应(Ping 协议是网络层协议)

        3.3.Cluster IP只能结合Service Port 组成一个具体的通信端口。

        3.4.在Kubernets集群之内,Node IP网,Pod IP于Cluster IP之间的通信采用K8s自己设计的一种特殊的路由规则。

    Volume

      Volume中文名为存储卷,它是Pod中能被多个容器共享的目录。它的生命周期和Pod相关,k8s支持多种存储卷,如GlusterFS,Ceph等先进的分布式文件系统。

    Namespace

      Namespace用于实现多租户的资源隔离。Namespace通过将集群内部的资源对象分配到不同的Namespace中,形成逻辑上分组的不同项目或用户组,便于不同的分组在共享使用整个集群的资源同时还能被分别管理。

    Annotation

      Annotation与Label类似,也使用key-val的形式,不同的是Label有严格命名规则,它定义K8s对象的元数据,而Annotation则是用户任意定义的附加信息,以便于外部工具进行查找。

  • 相关阅读:
    zoj 3627#模拟#枚举
    Codeforces 432D Prefixes and Suffixes kmp
    hdu 4778 Gems Fight! 状压dp
    CodeForces 379D 暴力 枚举
    HDU 4022 stl multiset
    手动转一下田神的2048
    【ZOJ】3785 What day is that day? ——KMP 暴力打表找规律
    poj 3254 状压dp
    C++中运算符的优先级
    内存中的数据对齐
  • 原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/11048622.html
Copyright © 2011-2022 走看看