kubernetes的部署架构

组件架构图

 如图所示kubernetes分为master和node端,以及一个外接的cloud端。

  • master 控制平面,control plan,包括 kube-apiserver, kube-scheduler, kube-controller-manager, etcd.
    • kube-apiserver

      将kubernetes 控制平面api暴露出来的api服务。用于接收用户端的请求,是控制平面的前端,是一个无状态的服务,可以启动多个实例用于分流请求流量。

    • kube-scheduler

      用于watch apiserver的资源变动(增删改查),并调度至合适的node节点,从而来创建pod资源。通过一系列的filtering(过滤),scoring(打分)选取合适的node节点,调度pod运行。

    • kube-controller-manager

      每个控制器都是独立的二进制进程,包括node controller, replication controller, endpoints controller, service account & token controllers。通过空置循环将期望状态和运行状态保持一致。

    • etcd

      高可用,KV结构的kubernetes后端数据存储组件。

    • cloud-controller-manager

      与云厂商服务能力对接组件 又称为kubernetes cloudprovider

  • node节点 又称为数据平面 data plan 包括 kubelet, kube-proxy, container runtime
    • kubelet

      运行在集群每个节点的客户端,确保相关容器运行在pod中,通过pod specs标签描述容器的运行状态。

    • kube-proxy

      运行在集群每个节点的网络代理组件,确保kubernetes服务链接和转发的组件。

    • container runtime

      支持运行容器底层环境的软件。支持docker containerd cri-io rktlet等

  • cloud端

    作为集群外部的附加能力,通过与cloud-controller-manager组件对接,扩展kubernetes集群于云上动态扩展的特性。

  • addons 附加组件

    使用kubernetes resources增加集群功能,如DNS, Web UI(dashboard),container resources monitoring,cluster-level logging

    • dns   coredns
    • cni (flannel, calico)网络插件接口  
    • Web UI(dashboard)可视化平台
    • container resources monitoring  容器资源监控
    • cluster-level logging 负责保存,搜索,查看容器日志    

工作流程

  • master

    用户通过(API, Web UI, CLI)向APIserver 发送请求,kube-schedule 监听apiserver资源变动,同时从node节点选取最合适的node节点开始调度,并把调度结果保存到etcd集群中去。

  • node

    kubelet也会监听apiserver的资源变动,并在复合的node上通过kubelet调用相关docker引擎进行后续打包和构建操作。              

原文地址:https://www.cnblogs.com/laiyuan/p/12911318.html