美文网首页每天进步一点点
2020-05-21【Kubernetes核心组件】

2020-05-21【Kubernetes核心组件】

作者: 桢桢claire | 来源:发表于2020-05-21 21:37 被阅读0次
    突然想到了龙卷风

    今日鸡汤

    我所向往的自律,是每天能够高效地完成工作,然后有充足的时间去享受生活,而不是完美而严苛的时间表。因为,自律本身并不诱人,自律背后的自由才诱人。

    今天来看看Kubernetes的核心组件——API Server、

    Kubernetes API Server

    它的核心功能是提供Kubernetes各类资源对象的增删改查及Watch等HTTP Rest接口,成为集群内各个功能模块之间数据交互和通信的中心枢纽。

    Kubernetes API Server是如何运行的?

    通过运行在master上的Kube-apiserver进程提供服务。我们可以通过kubectl命令与它交互。

    如何保障Kubernetes API Server的安全性?

    采用HTTPS安全传输通道与CA签名数字证书强制双向认证。

    如何保障Kubernetes API Server的高性能?

    1. 拥有大量高性能的底层代码。在源码中使用协程+队列这种轻量级的高性能并发代码,使单进程的API Server具备多核处理能力。
    2. 普通List接口结合异步Watch接口。
    3. 高性能的etcd数据库。

    Kubernetes API Server的架构是什么?

    API Server从上到下有四层:

    • API 层:以REST方式提供各种API接口
    • 访问控制层:Authentication+Authorization+Admission Control
    • 注册表层:Kubernetes所有的资源都在注册表中
    • etcd数据库:持久化存储Kubernetes对象的KV数据库

    Kubernetes API Server与其他模块通信的典型场景?

    • 与kubelet进程通信:每个Node上的kubelet每隔一个时间周期,就会调用一次API Server的REST接口报告自身状态,API Server收到这些信息后将节点信息更新到etcd中。
    • 与kube-controller-manager交互:kube-controller-manager中的 Node Controller通过API Server提供的Watch接口实时监控Node信息并处理。
    • 与kube-schedule交互:Scheduler通过API Server的Watch接口监听到新建Pod副本的信息后,会执行Pod调度逻辑。

    Controller Manager

    Kubernetes各个模块的管理者,管理8种Controller。

    Replication Controller的作用是什么?

    副本控制器是为了确保在任何时候集群某个RC关联的Pod数量都保持预设值。
    1) 重新调度:确保在当前cluster有且仅有N个Pod实例。
    2)弹性伸缩:调整RC的spec.replicas实现系统的扩容和缩容。
    3)滚动升级:改变RC的Pod模板实现系统的滚动升级。

    Node Controller的作用是什么?

    Node Controller 通过API Server实时获取Node相关信息,实现管理和监控集群中各个Node。

    ResourceQuota Controller的作用是什么?

    确保指定的资源对象在任何时候都不会超量占用系统物理资源,包括三个层次:
    1) 容器级别:对CPU和Memory限制;
    2)Pod级别:对Pod内所有容器的可用资源限制;
    3)Namespace级别:为同一个Namespace级别的资源限制;

    Namespace Controller的作用是什么?

    定时通过API Server读取存储在etcd的namespace信息。

    Endpoints Controller和Service Controller的作用是什么?

    Endpoints Controller负责生成和维护所有Endpoints对象,监听Service和对应的Pod副本的变化,当Service被删除、新建、更改时,删除、新建、更改和该Service同名的Endpoints对象。

    Service Controller 监听Service的变化。

    Scheduler

    Kubernetes Scheduler负责接收Controller Manager创建的新的Pod,将待调度的Pod按照特定调度算法和调度策略绑定到集群中某个合适的Node上,并将绑定信息写在etcd中。

    kubelet

    每个节点都会启动一个kubelet服务进程,用于处理Master下发到本节点的任务,管理Pod及Pod中的容器。它会在API Server上注册节点自身的信息,定期向Master汇报节点情况。

    kube-proxy

    在Kubernetes每个Node都会运行一个kube-proxy服务进程,用于将到某个Service的访问请求转发到后端多个Pod实例上。

    相关文章

      网友评论

        本文标题:2020-05-21【Kubernetes核心组件】

        本文链接:https://www.haomeiwen.com/subject/mvztahtx.html