kubernetes组件介绍

一、master节点组件
1)kube-apiserver
kube-apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制,负责接收、解析、处理请求。它公开了Kubernetes API,是Kubernetes master节点的前端。kube-apiserver被设计成可以进行自动扩缩容。

2)kube-scheduler
kube-scheduler主要是负责pod的调度,用来监视已经被创建但是没有调度到node节点的pod,然后按照预定的调度策略(如亲和性,反亲和性等)将Pod调度到相应的node节点上。

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

4)etcd
etcd是一个key/value形式的键值存储数据库,保存了整个kubernetes集群的各种对象的状态和元信息配置状态,在kubernetes中使用etcd时,需要对etcd做备份,保证高可用。kubernetes系统中一共有两个服务需要用到etcd,用etcd来协同和存储配置,分别是:
        1)网络插件calico、对于其它网络插件也需要用到etcd存储网络的配置信息
        2)kubernetes本身包括各种对象的状态和元信息配置

注意:网络插件操作etcd使用的是v2的API,而kubernetes操作etcd使用的v3的API,所以在下面我们执行etcdctl的时候需要设置ETCDCTL_API环境变量,该变量默认值为2,表示使用v2版本的etcd api,v3表示使用v3版本的etcd api

5)docker
是一个容器引擎,用于运行容器

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

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

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

9)kubelet
在k8s集群中,每个Node节点都会启动kubelet进程,用来处理Master节点下发到本节点的任务,管理Pod和其中的容器。kubelet会在API Server上注册节点信息,定期向Master汇报节点资源使用情况,并监控容器和节点资源。可以把kubelet理解成【Server-Agent】架构中的agent,是Node上的pod管家。

二、node节点组件

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

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

3)docker
是一个容器引擎,用于运行容器

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

三、附加组件

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

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

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

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

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

5)efk-(全称elasticsearch、fluentd、kibana)
日志管理系统,可以对物理节点和容器的日志进行统一收集,把收集到的数据在kibana界面展示,kibana提供按指定条件搜索和过滤日志。

6)metrics
用于收集资源指标hpa需要基于metrics实现自动扩缩容。

四、组件端口信息

pod的创建过程

pod是k8s的基础单元,以下为一个pod资源对象的典型创建过程:

1)、用户通过kubectl或其他api客户端提交pod spec给apiserver
2)、apiserver将pod对象的相关信息存入etcd中,完成后,apiserver返回确认信息至客户端。
3)、api server开始反映etcd中的状态变化
4)、所有的k8s组件均使用watch机制(类似于订阅发布)来跟踪检查api server上相关自己负责的资源变动
5)、kube-scheduler通过其watch觉察到api server创建了新的pod对象但尚未绑定至任何工作节点6)、kube-scheduler为pod对象挑选一个工作节点并将结果信息更新至api server
7)、调度结果信息由api server更新至etcd,而且api server也开始反映此pod对象的调度结果
8)、pod被调度到目标工作节点上的kubelet尝试在当前节点上调用docker启动容器,并将容器的结果状态回送至api server
9)、api server将pod状态信息存入etcd中
10)、在etcd确认写入操作成功完成后,api server将确认信息发送至相关的kubelet

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值