1-1.K8s基础

术语及原理

  • Master(主节点:control plane) 集群中的神经中枢网关。负责整个集群的资源管理Pod调度弹性伸缩安全控制系统监控纠错等管理功能。

    • ApiServer

      集群的网关。

      负责输出RESTful风格K8s接口,则是通往集群所有REST操作命令的入口,并负责接收、校验、相应所有的REST请求,最终结果状态存储在etcd中。

    • Controller Manager

      负责生命周期功能及API业务逻辑。

      a.生命周期功能:Namespace创建和生命周期、Event垃圾回收、Pod对象终止相关的垃圾回收、级联垃圾回收、Node的垃圾回收 b.API业务逻辑:由ReplicaSet执行的Pod对象扩展

    • Scheduler

      在API Server确认Pod对象之后,由调度器(Scheduler)根据集群中各节点的可用资源状态、目标运行容器的资源需求做出调度策略。

    • Etcd

      基于Raft协议开发的分布式键值存储,用于服务发现、共享配置、保证一致性(数据库的主从节点选择,分布式锁等)。

      a.etcd是独立的组件,并不属于K8s集群。 b.生产环境etcd应该按照集群方式部署运行,以提升高可用。

  • Node(从节点:worker node)

    工作节点。负责接收来自Master节点的工作指令并根据指令相应的创建或者销毁Pod对象,以及调整网络规则以合理的路由转发流量。

    • Pod

      Kubernetes并不会直接运行容器,而是使用一个抽象的资源对象封装一个或者多个容器,此对象就是Pod对象是K8s最小的调度单元。 一个Pod对象可以拥有多个Container容器应用。通常情况下,这些在同一个Pod对象中的Container容器是高耦合。因为其共用同一个Pod对象下的网络名称空间、存储资源、UTS命名空间(同一个主机名称)、PID命名空间(不同应用程序可以看到其他应用程序的PID)

      • Pod Controller(Pod 控制器)

        虽说Pod对象是最小的调度单元,但实际应用中,并不会直接部署、管理Pod对象,而是借助Pod Controller对其进行管理。

      • Replication Controller(复制控制器)

        K8s的核心概念,用于管理Pod的声明周期。在主节点中,控制管理器进程同RC的定义完成Pod的创建、监控、启停等操作。

      • Replica Set

        保证在某个时间点儿上,一定数量的Pod对象在运行。是Replication Controller的升级版本。

        主要区别在于Selector选择器 Replica Set:支持集合级别的选择器。 Replication Controller:支持在等号描述的选择器。

      • Deployment

        为保证指定的Pod对象的副本数量精确符合定义,否则将会按照「多退少补」原则进行自动管理。

    • Label(标签)

      将资源进行分类的标识符,一组附加在对象上的键值对类型数据。主要为了解决Pod对象与Service之间的关联关系。

      一个对象可以拥有多个标签,一个标签也可以附加在多个对象。

    • Service

      建立在Pod对象之上的资源抽象,通过标签选择器选定一组Pod对象,并设定统一且固定的访问入口(通常情况下表现形式是IP地址)。 1. 拥有唯一指定的名字 2. 拥有一个虚拟IP地址和端口号 3. 能够提供某种远程能力 4. 被映射到提供服务能力的一组容器之上 5. Service的服务进程目前通过Socket方式对外提供服务

      如果Kubernetes集群存在DNS附件,将会在Service对象创建时为其自动指定一个DNS名称用于客户端服务发现。

    • Volume(容器共享存储卷)

      独立于容器文件系统之外的存储空间,常用在扩展容器的存储空间并为其提供持久化存储能力。临时卷本地卷一般位于Node本地,一旦Pod对象被调度至其他Node节点,此类型的存储卷将无法正常访问,所以此类存储卷用于数据缓存。持久数据将存放在Persistent Volume(持久卷)

      • Persistent Volume(持久卷)

      • Persistent Volume Claims

    • Annotation

      另外一种附加在对象之上的键值类型数据,但拥有更大的数据量。常用于将各种非标识型元数据(metadata)附加到对象,但不能标识和选择对象。K8s将不会直接使用,仅当方便工具或用户查找等用途。

      a.build信息、release信息、Docker镜像信息等 b.日志库、监控库、分析库资源等资源库地址信息 c.程序调试工具信息 d.团队信息

    • Namespace

      使用Namespace来组织kubernetes的各种对象,可以实现用户的分组(多租户),对不同的租户还可以进行单独的资源设置和管理,是的整个集群的资源配置非常灵活。

      a.在同一命名空间中,同一类型资源对象的名称必须具有唯一性 b.名称空间空间通常用于实现租户或项目的资源隔离,以达到逻辑分组目的。

    • Ingress

      解决Pod对象与外部网络隔离无法访问的组件。

      由于K8s将Pod对象与外网进行隔离,同时Pod与Service等对象间的通信全是由K8s内部网络进行。

Last updated