• k8s--基础--02--组件


    k8s–基础–02–组件


    1、介绍

    一个Kubernetes集群是由一组工作机器组成,这些机器称为节点,节点上运行容器。

    每个k8s集群至少有一个工作节点。工作节点主要用来运行部署应用程序的pod。

    control plane(控制平面/master节点)用来管理工作节点和整个kubernetes集群的pod。

    在生产环境中,master节点通常跨越多台计算机。

    在这里插入图片描述

    2、控制平面组件(master节点组件)

    我们习惯上把部署控制平面组件的机器称为master节点。
    master节点的组件能够对k8s的集群做出全局决策(例如,调度),以及检测和响应集群事件(例如,当部署的副本字段不满足时启动一个新的POD)。
    Master节点组件可以在k8s集群中的任何机器上运行。 然而,为了简单起见,通常会在同一台机器上启动所有控制平面组件,这台机器上最好不运行其他的容器化程序,所以我们就把专门部署控制平面组件的机器称为master节点。

    2.1、kube-apiserver

    1. 它公开了Kubernetes API,API服务是Kubernetes master节点的前端。
    2. Kubernetes API服务是通过kube-apiserver组件实现的,kube-apiserver被设计成可以进行自动扩缩容,你可以运行多个kube-apiserver组件,通过keepalive+lvs或者其他负载均衡策略在这些组件之间平衡流量。
    3. kube-apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制,负责接收、解析、处理请求。

    2.2、kube-scheduler

    1. 用来监视已经被创建但是没有调度到node节点的pod,然后选择一个node节点用来运行它。
    2. 主要是负责pod的调度,按照预定的调度策略(如亲和性,反亲和性等)将Pod调度到相应的机器上。

    2.3、kube-controller-manager

    1. 控制器管理器,用来检测控制器健康状态
    2. 控制器是负责维护集群的状态,检查pod的健康状态,比如故障检测、自动扩展、滚动更新等一些操作。

    2.4、etcd

    1. 是一个key/value形式的键值存储,保存了整个kubernetes集群的状态,在kubernetes中使用etcd时,需要对etcd做备份,保证高可用。
    2. 整个kubernetes系统中一共有两个服务需要用到etcd,用etcd来协同和存储配置,分别是:
      1. 网络插件calico、对于其它网络插件也需要用到etcd存储网络的配置信息
      2. kubernetes本身,包括各种对象的状态和元信息配置
      3. 注意: 网络插件操作etcd使用的是v2的API,而kubernetes操作etcd使用的v3的API,所以在下面我们执行etcdctl的时候需要设置ETCDCTL_API环境变量,该变量默认值为2,表示使用v2版本的etcd api,v3表示使用v3版本的etcd api.

    2.5、docker

    一个容器引擎,用于运行容器

    2.6、kube-proxy

    1. k8s代理,是在集群中的每个节点上运行的网络代理
    2. 负责请求转发,一旦发现了某一个Service关联的Pod信息发生了改变(如IP、Port等),由Kube-Proxy就会把变化后的service转换成IPVS或IPtables规则中,完成对后端pod的负载均衡

    2.7、calico

    1. Calico是一个纯三层的网络插件
    2. calico的bgp模式类似于flannel的host-gw
    3. calico在kubernetes中可提供网络功能和网络策略

    2.8、cordns

    是一个DNS服务器,能够为Kubernetes services提供DNS记录

    2.9、kubelet

    负责与master节点的apiserver进行通信的,接收到客户的请求,进行创建Pod,管理Pod,启动pod等相关操作

    3、工作节点组件(node节点组件)

    节点组件在k8s集群的每一个节点上都需要运行,工作节点用来运行业务pod,

    3.1、kubelet

    1. kubelet在k8s集群的每一个节点上都需要运行,属于节点组件
    2. 负责与master节点的apiserver进行通信的,接收到客户的请求,进行创建Pod,管理Pod,启动pod等相关操作

    3.2、kube-proxy

    1. k8s代理,是在集群中的每个节点上运行的网络代理
    2. 负责请求转发,一旦发现了某一个Service关联的Pod信息发生了改变(如IP、Port等),由Kube-Proxy就会把变化后的service转换成IPVS或IPtables规则中,完成对后端pod的负载均衡

    3.3、docker

    一个容器引擎,用于运行容器

    3.4、calico

    1. Calico是一个纯三层的网络插件
    2. calico的bgp模式类似于flannel的host-gw
    3. calico在kubernetes中可提供网络功能和网络策略

    4、附加组件

    附件组件使用kubernetes的资源(如daemonset,deployment,statefulset等)实现集群功能,因为它们提供的是集群级别的属性,所以这些附件组件都需要部署到kube-system这个名称空间下。

    4.1、coredns

    是一个DNS服务器,能够为Kubernetes services提供DNS记录

    4.2、Web UI(Dashboard)

    Dashboard是k8s集群的一个web ui界面,通过这个界面可以对k8s资源进行操作,如创建pod,创建存储,创建网络等,也可以监控pod和节点资源使用情况。

    4.3、Ingress Controller

    1. 七层负载均衡控制器
    2. 可以通过创建nginx或者traefik这种七层负载组件,实现域名和https访问。

    4.4、prometheus+alertmanager+Grafana

    1. 监控系统
    2. 可对kubernetes集群本身的组件做监控,
    3. 可对物理节点,容器做监控
    4. 对监控到的超过报警阀值的数据进行报警,这个报警会发送到指定的目标,如钉钉,微信,qq,slack等。

    4.5、efk(elasticsearch、fluentd、kibana)

    1. 日志管理系统
    2. 可以对物理节点和容器的日志进行统一收集,把收集到的数据在kibana界面展示,kibana提供按指定条件搜索和过滤日志。

    4.6、metrics

    1. 用于收集资源指标
    2. hpa需要基于metrics实现自动扩缩容
  • 相关阅读:
    ‘View‘ cannot be used as a JSX component
    【Vue】的基础入门与生命周期----详细简介
    基于WEB的四川省旅游信息网的设计与实现-计算机毕业设计源码20792
    【OBS】circlebuf
    Spring框架系列(3) - 深入浅出Spring核心之控制反转(IOC)
    redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。
    python基本知识-第一周
    Github创建远程仓库(项目)
    二叉树层序遍历I
    TAPD项目管理:工作流自动化最佳实践
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/126222508